我的应用程序需要对 的读取权限/var/log/messages
,该权限属于用户和组root
。我的应用程序需要的最低暴露级别是多少/var/log/messages
才能读取它?
目前,我的计划是将的组所有权更改/var/log/messages
为一个新组,并将 root 和我的应用程序用户添加到其中,但这也会赋予该应用程序的写权限/var/log/messages
。
操作系统:Centos 5.5
答案1
无需将 root 添加到组,因为无论如何它都会通过用户权限获得访问权限,只需将组读取权限授予您决定的组即可。请记住也使用 logrotate 进行更改,否则组更改将在每晚被清除。
答案2
只是为了稍微扩展一下上述答案,这里有一个现实世界的用例。我在 Redhat 机器上运行企业日志分析应用程序 Splunk。它在 splunk 用户和 splunk 组下运行。这可以防止 splunk 访问 /var/log 中的日志,因为它们只能由 root(或 sudo 管理员)访问
为了仅允许 splunk 进行只读访问,我使用了一些 ACL 并修改了 logrotate 以使其持久化。
您可以使用以下方式手动设置 ACL
sudo setfacl -m g:splunk:rx /var/log/messages
这不会持续,因为 logrotate 不会重新应用 ACL 设置,因此为了获得更持久的解决方案,我向 logrotate 添加了一条规则以重置 ACL。我添加了文件。
/etc/logrotate.d/Splunk_ACLs
和
{
postrotate
/usr/bin/setfacl -m g:splunk:rx /var/log/cron
/usr/bin/setfacl -m g:splunk:rx /var/log/maillog
/usr/bin/setfacl -m g:splunk:rx /var/log/messages
/usr/bin/setfacl -m g:splunk:rx /var/log/secure
/usr/bin/setfacl -m g:splunk:rx /var/log/spooler
endscript
}
使用以下方法检查文件的 ACL 状态
$ getfacl /var/log/messages
有关 ACL 的更多信息,请参阅 https://help.ubuntu.com/community/FilePermissionsACLs http://bencane.com/2012/05/27/acl-using-access-control-lists-on-linux/
答案3
您的计划是可以接受的,而且“传统”的 Unix 权限方案是最佳选择。
另一个选择是让 syslog 将感兴趣的消息转移到另一个文件(这可以避免让应用程序用户访问 中的任何敏感信息/var/log/messages
)。
如果你不想受到传统用户/组/其他权限方案的约束,你也可以使用POSIX ACL(其他,可能通过 Google 提供更好的操作方法/信息)为您的应用程序用户提供只读访问权限/var/log/messages
- 这更加细粒度,并且不会冒险意外地将其他人放入应用程序组中并授予他们访问他们不应该看到的内容的权限。
答案4
您可以使用访问控制列表为此。它允许您为特定用户和文件设置特定的附加访问规则。