모든 파일에 대해 특정 사용자의 ACL을 나열할 수 있는 방법이 있는지 궁금합니다.
예를 들어 cronjob의 경우 /var/spool/cron/에 세부 정보가 있습니다.
마찬가지로 ACL은 정보를 어디에나 저장합니까?
답변1
ACL(액세스 제어 목록)은 프로세스가 아닙니다. 이는 클래식 Unix 파일 권한과 같은 모든 inode의 메타데이터의 일부일 뿐입니다. 즉, 각 ACL은 영향을 받는 파일 또는 디렉터리와 함께 저장됩니다.
ACL에 대해 이야기할 때~의특정 사용자, ACL을 의미합니다작성자 또는 수정자그 사용자? ACL은 일반적으로 파일/디렉토리의 확장된 속성으로 처리되므로 감사 하위 시스템을 사용하여 setxattr()/lsetxattr()/fsetxattr()
시스템 호출을 기록할 수 있습니다. 다른 유형의 확장 속성을 얻을 수도 있으므로 로그에 대한 일부 후처리를 수행해야 할 수도 있습니다.
아니면 ACL을 의미하시나요?인용하다특정 사용자? 이렇게 하려면 getfacl -Rs /
파일 시스템 트리에서 모든 ACL을 가져온 다음 결과를 필터링하여 원하는 사용자를 찾는 등의 작업을 수행해야 합니다.
답변2
모든 파일에 대한 특정 사용자의 ACL을 나열하는 방법이 있습니까?
약간의 쉘 스크립팅을 사용하면 이 질문에 매우 직접적으로 답할 수 있습니다. 먼저 ACL을 찾기 위해 파일 시스템을 탐색해야 합니다. 당신이 찾은 모든 것은 당신의 사용자 계정과 관련이 있는지 확인하고, 그렇다면 인쇄해야 합니다. (이것은 매우 효율적인 프로세스가 아니므로 너무 자주 실행하지 않는 것이 좋습니다.)
user=johndoe
cd /
find -print0 |
while IFS= read -r -d '' f
do
a=$(getfacl -s "$f")
echo "$a" | grep "^user:${user}:" && echo "$a"
done
단순 파일 소유권에도 관심이 있는 경우 행을 grep
다음과 같이 수정하십시오.
echo "$a" | grep -E "^user:${user}:|^# owner: ${user}$" && echo "$a"