쓰기 권한이 없는 특정 폴더에 있는 모든 파일을 어떻게 찾을 수 있나요?

쓰기 권한이 없는 특정 폴더에 있는 모든 파일을 어떻게 찾을 수 있나요?

쓸 수 없는 파일을 모두 찾는 방법은 무엇입니까?

표준 권한과 ACL을 고려하면 좋을 것입니다.

"쉬운" 방법이 있습니까? 아니면 권한을 직접 구문 분석해야 합니까?

답변1

노력하다

find . ! -writable

이 명령은 find파일 목록을 반환하고 -writable쓰기 권한이 있는 파일만 필터링한 다음 !필터를 되돌립니다.

-type f디렉토리 및 기타 "특수 파일"을 무시하려면 추가할 수 있습니다.

답변2

Linux가 아닌 시스템과 GNU가 없는 시스템에서 find다음은 동일한 출력을 제공할 수 있지만 find . -type f ! -writable보조 그룹을 고려하지 않습니다.

myname=$( id -un )
mygroup=$( id -gn )

find . -type f '(' \
       '('   -user "$myname"                     ! -perm -u=w ')' -o \
       '(' ! -user "$myname"   -group "$mygroup" ! -perm -g=w ')' -o \
       '(' ! -user "$myname" ! -group "$mygroup" ! -perm -o=w ')' ')'

4가지 테스트를 순서대로 수행합니다.

  1. 일반 파일인가요?
  2. 내가 소유하고 있지만 쓰기 권한이 없는 파일인가요?
  3. 내 소유는 아니지만 내 그룹에 속해 있고 그룹 쓰기 권한이 없는 파일인가요?
  4. 내가 소유하지 않은 파일이고, 내 그룹의 일부가 아니며, 일반("기타") 쓰기 권한이 없는 파일입니까?

이것의 장점은 다른 사용자의 이름과 그룹을 바꿀 수 있다는 것입니다. 그러나 GNU에서는 그렇게 할 수 없다고 생각 find합니다 -writable.


동일한 명령이지만 논리는 AND 형식으로 작성됩니다.

find . -type f \
    ! '('   -user "$myname"                     -perm -u=w ')' \
    ! '(' ! -user "$myname"   -group "$mygroup" -perm -g=w ')' \
    ! '(' ! -user "$myname" ! -group "$mygroup" -perm -o=w ')'

관련 정보