다양한 ACL을 사용하여 재귀적으로 파일 찾기

다양한 ACL을 사용하여 재귀적으로 파일 찾기

내가 검색하고 있는 파일과 다른 ACL을 가진 모든 파일을 어떻게 반복적으로 찾을 수 있습니까? 예를 들어, 다음 예와 다른 ACL을 가진 디렉터리의 모든 파일을 찾고 싶습니다.

# owner: bob
# group: bobs-group
user::rwx 
user:fred:rwx
group::rw-
mask::rwx
other::r--

별도의 검색을 사용하여 디렉터리에서 동일한 작업을 수행할 수 있지만 권한은 약간 다릅니다.

답변1

find및 을 사용할 수 있습니다 diff.

  1. 필요한 참조 권한을 파일에 저장합니다.perref

$cat perref
# owner: bob
# group: bobs-group
user::rwx 
user:fred:rwx
group::rw-
mask::rwx
other::r--
  1. 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.

관련 정보