특정 폴더를 찾아 소유권을 변경하세요.

특정 폴더를 찾아 소유권을 변경하세요.

"wp-content" 폴더(및 그 안의 모든 콘텐츠)의 소유권(및 권한)을 반복적으로 변경해야 하는 여러 WordPress 사이트에서 보안 문제가 발생했습니다.

지정된 모든 폴더(여러 개가 있음)를 찾아 소유자가 폴더 권한 755와 파일 권한 644를 wp-content갖도록 해당 폴더와 모든 내용을 변경해야 합니다 .nginx:nginx

이러한 폴더를 찾아 소유권을 변경하는 방법을 찾을 수 없습니다.

어떤 단서가 있나요? :/

답변1

findGNU 및 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로 변경합니다.

관련 정보