0** 권한으로 모든 파일과 폴더를 '찾는' 방법은 무엇입니까?

0** 권한으로 모든 파일과 폴더를 '찾는' 방법은 무엇입니까?

많은 파일과 폴더의 권한이 000으로 설정되어 있는 이상한 상황에 직면했습니다. 이 문제는 다음을 통해 쉽게 해결할 수 있습니다.

sudo find . -perm 000 -type f -exec chmod 664 {} \; 
sudo find . -perm 000 -type d -exec chmod 775 {} \;

불행하게도 044와 같은 이상한 권한과 다른 이상한 설정으로 인해 문제가 약간 복잡하다는 것을 갑자기 깨달았습니다. 이는 분산되어 있고 예측할 수 없는 것으로 판명되었습니다.

0**이나 기타 매우 제한된 권한 구성과 같은 권한을 검색할 수 있는 방법이 있습니까?

답변1

나는 다음과 같은 것을 사용할 것입니다 :

find . ! -perm -u=r ! -perm -u=w ! -perm -u=x -ls

또는 8진수 표기법을 선호하는 경우:

find . ! -perm -400 ! -perm -200 ! -perm -100 -ls

불행히도 이것을 옵션으로 만드는 방법을 모르겠습니다 -perm.

-ls유사한 출력을 지원하지 않는 시스템(일반적이지만 POSIX는 아님)에서 대체할 수 있는 부분을 제외하고 위 구문은 표준입니다 .-exec ls -disl {} +find-ls

답변2

그리고암소 비슷한 일종의 영양find, "소유자를 위해 설정된 모든 비트"와 일치하지 않는 파일을 찾아서 이 작업을 수행할 수 있습니다.

find . ! -perm /700

또한 예를 들어FreeBSDfind

find . ! -perm +700

둘 다 같은 방식으로 작동합니다. -perm /700OR 은 소유자 권한 비트가 설정된 경우 일치하고, -perm +700소유자 권한 비트가 설정되지 않은 경우 !값을 무효화하므로 ! -perm /700OR가 일치합니다. ! -perm +700다른 비트는 무시됩니다.

답변3

sfind또는 어떤 프로그램에서 libfind또는 를 사용하는 경우 다음을 사용할 BSD find수 있습니다.

find path -perm +0xxx

패턴 세트에 언급된 비트가 포함된 파일을 찾으십시오.

find . ! -perm +0700

상황에 맞춰야 합니다. 참고: 이것도 적용됩니다 GNU find.

이는 POSIX에서 언급되지 않았거나 SVr4 기반 시스템에서 구현되지 않은 확장입니다 find.

관련 정보