
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
.