에 액세스해야 하는 서비스 계정이 있는데 /var/log/audit/audit.log
, 사용자가 root
그룹에 속해서는 안 되고 파일의 소유권이나 그룹을 변경하고 싶지 않기 때문에 파일 ACL을 구현하기로 결정했습니다.
문제는 auditd
파일 회전시 맨페이지 acl(5)
와 setfacl(1)
.
기본 ACL을 포함하여 상위 디렉터리에 대한 파일 ACL은 다음과 같습니다.
> getfacl /var/log/audit
# file: var/log/audit
# owner: root
# group: root
user::rwx
user:srv_usr:r-x
group::---
mask::r-x
other::---
default:user::rwx
default:user:srv_usr:r--
default:group::---
default:mask::r--
default:other::---
auditd
파일이 회전 되면 ACL은 다음과 같습니다.
> getfacl /var/log/audit/audit.log
# file: var/log/audit/audit.log
# owner: root
# group: root
user::rw-
user:srv_usr:r-- #effective:---
group::---
mask::---
other::---
보시다시피, 유효 권한은 해당 계정이 아무 것도 할 수 없다는 것입니다.
이상한 일이 일어나고 있다고 믿게 만드는 것은 해당 경로에 루트로 파일을 수동으로 만들 때 다음 ACL이 적용된다는 것입니다.
> touch /var/log/audit/test
> getfacl /var/log/audit/test
# file: var/log/audit/test
# owner: root
# group: root
user::rw-
user:srv_usr:r--
group::---
mask::r--
other::---
이 ACL은 문서의 내용과 일치합니다 acl(5)
.
새 개체는 포함 디렉터리의 기본 ACL을 액세스 ACL로 상속합니다.
파일 ACL은 기본 ACL과 일치합니다 /var/log/audit
.
무슨 일이에요?
답변1
문제는 Linux ACL이 그룹 권한 비트를 사용하여 마스크를 저장한다는 것입니다.
교체 후에는 auditd가 ACL을 지원하지 않고 그룹에 대한 권한을 설정한다고 생각하기 때문에 그룹의 권한이 제거됩니다. 따라서 마스크는 비어 있고( mask::---
) 유효 권한도 비어 있습니다( #effective:---
).
이 질문도 참조하십시오.파일의 ACL 마스크는 표준 그룹 권한과 어떤 관련이 있습니까?