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 /700또는 -perm +700소유자 권한 비트 중 하나라도 설정된 경우 일치합니다. !이를 무효화하므로 소유자 권한 비트가 설정되지 않은 경우 일치합니다 ! -perm /700. ! -perm +700다른 비트는 무시됩니다.

답변3

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

find path -perm +0xxx

패턴에 언급된 비트 중 하나가 설정된 파일을 찾으려면

find . ! -perm +0700

귀하의 경우에는 작동합니다. 참고: 이는 에서도 지원됩니다 GNU find.

이는 POSIX에서 언급되지도 않고 SVr4 기반 .NET에서 구현되지도 않은 확장입니다 find.

관련 정보