"wp-content" 폴더(및 그 안의 모든 콘텐츠)의 소유권(및 권한)을 반복적으로 변경해야 하는 여러 WordPress 사이트에서 보안 문제가 발생했습니다.
지정된 모든 폴더(여러 개가 있음)를 찾아 소유자가 폴더 권한 755와 파일 권한 644를 wp-content
갖도록 해당 폴더와 모든 내용을 변경해야 합니다 .nginx:nginx
이러한 폴더를 찾아 소유권을 변경하는 방법을 찾을 수 없습니다.
어떤 단서가 있나요? :/
답변1
find
GNU 및 GNU를 사용 xargs
하여 디렉토리를 검색 wp-content
하고 NUL로 끝나는 결과를 쉘 스크립트에 전달할 수 있습니다.
find /path/to/directory -type d -name 'wp-content' -print0 | xargs -0 sh -c '
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
' sh
또는 스크립트 부분을 쉘 스크립트에 저장할 수 있습니다 myscript.sh
.
#!/bin/sh
for dir; do
# change user and group recursively to nginx
chown -R nginx:nginx "$dir"
# change dirs to 755
find "$dir" -type d -exec chmod 755 {} +
# change files to 644
find "$dir" -type f -exec chmod 644 {} +
done
그런 다음 쉘 스크립트를 실행 가능하게 만드십시오.
chmod +x myscript.sh
이 작업을 사용하여 실행하고 find
(GNU 구현일 필요는 없음) -exec
결과를 스크립트에 전달합니다.
find /path/to/directory -type d -name 'wp-content' -exec ./myscript.sh {} +
답변2
다음을 수행할 수 있습니다.
LC_ALL=C find . '(' -name wp-content -type d -o \
-path '*/wp-content/*' '(' -type d -o -type f ')' \
')' -exec chown nginx:nginx {} + \
-exec chmod u=rwX,g=rX,o=rX {} +
이렇게 하면 디렉터리를 한 번 크롤링하고 필요한 만큼 호출을 적게 실행하며 chown
디렉터리 chmod
와 일반 파일(심볼릭 링크, 장치, FIFO 등은 제외)의 소유권/권한만 변경합니다.
일부 find
구현을 사용 '(' -type d -o -type f ')'
하면 -type f,d
.
답변3
다음 명령을 사용하여 이 작업을 수행할 수도 있습니다.
find some-folder-path -type d -name wp-content -exec chown new-user:new-group {} \;
위 명령은 wp-content라는 모든 폴더의 소유권과 그룹을 변경합니다.
find some-folder-path -type d -exec chmod 755 {} \;
find some-folder-path -type f -exec chmod 644 {} \;
위 명령은 파일의 권한을 644로, 폴더의 권한을 755로 변경합니다.