我们有 ACL 的日志吗?

我们有 ACL 的日志吗?

我想知道是否有任何方法可以列出特定用户对所有文件的 ACL。
例如,对于 cronjob,我们在 /var/spool/cron/ 中有详细信息。

同样,ACL 是否将信息存储在任何地方?

答案1

ACL(访问控制列表)不是一个进程。它只是任何 inode 上元数据的一部分,就像经典的 Unix 文件权限一样。换句话说,每个 ACL 都与其影响的文件或目录一起存储。

当您谈到 ACL 时特定用户,您的意思是 ACL创建或修改者那个用户? ACL 通常作为文件/目录的扩展属性进行处理,因此您可以使用审核子系统来记录任何setxattr()/lsetxattr()/fsetxattr()系统调用以记录它们。您也可能会获得其他类型的扩展属性,因此您可能需要对日志进行一些后处理。

或者你的意思是 ACL参考特定用户?为此,恐怕您必须执行一些操作,例如getfacl -Rs /获取文件系统树上的所有 ACL,然后过滤结果以查找所需的用户。

答案2

有没有办法列出特定用户对所有文件的 ACL

一点点 shell 脚本就可以很直接地回答这个问题。首先,您需要遍历文件系统寻找 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"

相关内容