/var/log/audit/audit.log 的文件 ACL 存在问题

/var/log/audit/audit.log 的文件 ACL 存在问题

我有一个需要访问的服务帐户/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::---

如您所见,有效权限是不允许该帐户执行任何操作。

让我相信正在发生一些奇怪的事情的是,当我以 root 身份在该路径中手动创建文件时,将应用以下 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 掩码和标准组权限有何关系?

相关内容