我有一个包含日志文件的目录,我将用户启动的脚本中的日志放入其中。在这种情况下,使用 syslog 进行记录似乎是不可能的。 (非守护进程 rsync)
我希望用户对日志文件只有写权限。问题是,必须进一步限制写入权限,以便用户(脚本)可以仅附加到该文件。底层文件系统是XFS。
以下不起作用:
# chattr +a test.log
chattr: Inappropriate ioctl for device while reading flags on test.log
对此还有其他解决方案吗?谢谢你的提示。
答案1
答案2
您有权限这样做吗?从man 1 chattr
:
设置了“a”属性的文件只能以附加模式打开进行写入。只有超级用户或拥有 CAP_LINUX_IMMUTABLE 能力的进程才能设置或清除该属性。
答案3
或者,您可以使用以下方法实现相同的目的SELinux,如果您使用的是 Red Hat 兼容发行版,那么它很可能已启用并正在运行。这适用于每个文件系统,SELinux 会阻止进程执行不允许的操作。
不幸的是,您需要为应用程序编写一个策略,以允许访问所有系统资源,但附加到特定文件除外。如果您是第一次这样做,这可能会有点困难,但这样做有一个好处 - 增加了一层安全性。
我在本次演讲中有一个如何编写仅附加文件规则的示例:https://www.youtube.com/watch?v=zQcYXJkwTns