내가 검색하고 있는 파일과 다른 ACL을 가진 모든 파일을 어떻게 반복적으로 찾을 수 있습니까? 예를 들어, 다음 예와 다른 ACL을 가진 디렉터리의 모든 파일을 찾고 싶습니다.
# owner: bob
# group: bobs-group
user::rwx
user:fred:rwx
group::rw-
mask::rwx
other::r--
별도의 검색을 사용하여 디렉터리에서 동일한 작업을 수행할 수 있지만 권한은 약간 다릅니다.
답변1
find
및 을 사용할 수 있습니다 diff
.
- 필요한 참조 권한을 파일에 저장합니다.
perref
$cat perref
# owner: bob
# group: bobs-group
user::rwx
user:fred:rwx
group::rw-
mask::rwx
other::r--
find
단순히getfacl
출력을 참조 값과 비교하고 일치를 부정함으로써 마법을 수행할 수 있습니다. 이를 위해서는 출력의 첫 번째 줄getfacl
(예: 파일 이름)을 잘라야 하므로 여기서는 프로세스 대체가 필요하며 이는 쉘 스크립트와 올바른 인용을 통해 수행되어야 합니다.
find -type f \
! -exec bash -c 'diff -q <(getfacl "$1" | sed 1d ) perref >/dev/null' bash '{}' \; \
-print
아니면 -print0
추후 계획에 따라 결정될 수도 있습니다. diff
파일이 동일하면 종료 상태는 0입니다.
삭제는 !
ACL이 일치하는 파일을 찾는 데 사용됩니다. 디렉토리를 검색하는 데 사용됩니다 -type d
.