쓸 수 없는 파일을 모두 찾는 방법은 무엇입니까?
표준 권한과 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가지 테스트를 순서대로 수행합니다.
- 일반 파일인가요?
- 내가 소유하고 있지만 쓰기 권한이 없는 파일인가요?
- 내 소유는 아니지만 내 그룹에 속해 있고 그룹 쓰기 권한이 없는 파일인가요?
- 내가 소유하지 않은 파일이고, 내 그룹의 일부가 아니며, 일반("기타") 쓰기 권한이 없는 파일입니까?
이것의 장점은 다른 사용자의 이름과 그룹을 바꿀 수 있다는 것입니다. 그러나 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 ')'