많은 파일과 폴더의 권한이 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
OR 은 소유자 권한 비트가 설정된 경우 일치하고, -perm +700
소유자 권한 비트가 설정되지 않은 경우 !
값을 무효화하므로 ! -perm /700
OR가 일치합니다. ! -perm +700
다른 비트는 무시됩니다.
답변3
sfind
또는 어떤 프로그램에서 libfind
또는 를 사용하는 경우 다음을 사용할 BSD find
수 있습니다.
find path -perm +0xxx
패턴 세트에 언급된 비트가 포함된 파일을 찾으십시오.
find . ! -perm +0700
상황에 맞춰야 합니다. 참고: 이것도 적용됩니다 GNU find
.
이는 POSIX에서 언급되지 않았거나 SVr4 기반 시스템에서 구현되지 않은 확장입니다 find
.