홈 디렉토리에 "기타" 권한이 있는지 확인하는 방법

홈 디렉토리에 "기타" 권한이 있는지 확인하는 방법

지금은 매일 실행되는 스크립트가 있는데, 홈 디렉터리를 chmods하고 디렉터리에서 모든 "기타" 권한과 "그룹" 쓰기 권한을 제거합니다. 아래를 참조하세요.

#Removing all other permissions on all home directories and write from group

ls /home | sed 's/ //g' |
while read i; do
  chmod -R o-rwx /home/$i
  chmod -R g-w /home/$i
done

이것은 잘 작동합니다. 그러나 필요 여부에 관계없이 매번 이 작업을 수행하는 것보다 변경해야 할 파일이 있는지 확인한 다음 해당 파일에 대해 조치를 취하는 스크립트를 선호합니다.

나는 모든 것을 명령문 내의 하위 함수에 넣을 수 있다고 가정하고 있지만 , 그 명령문 내에서 어떤 테스트를 실행할지는 if모르겠습니다 .if

디렉토리를 변경해야 하는지 테스트하는 방법은 무엇입니까?

답변1

찾기 사용:

find /home/* -type d -maxdepth 0 -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

이 작업을 재귀적으로 수행하려면( -R예제에서 사용된 대로) 다음을 사용하십시오.

find /home/* -perm /g+w,o+rwx -exec chmod g-w,o-rwx '{}' +

편집하다:

찾기 옵션에 대한 간략한 설명입니다 man find. 자세한 내용은 다음을 참조하세요.

-permwith 는 /mode임의의 비트를 설정하는 것을 의미합니다.

고전적인 -exec구문은 입니다 -exec command '{}' ';'. 이러한 문자는 {}파일 이름으로 대체되며 따옴표는 셸에서 이를 보호하기 위한 것입니다. 대부분의 셸에서는 이것이 필요하지 않지만 문제가 되지는 않습니다. ';'는 명령의 끝 입니다 . 대부분의 쉘에서는 이 인용문이 필요하지만 대체 형식은 입니다 \;. 단점은 chmod가 변경된 각 파일에 대해 한 번 호출된다는 것입니다. 이는 종료 명령의 대체 형식을 사용하여 방지할 수 있습니다 +. 이 양식은 여러 이름으로 exec를 호출하는데, 이는 비슷한 효과를 가지며 xargs호출 비용도 절약해 줍니다 xargs.

관련 정보