什么是允许用户读取日志文件的最安全的方式?

我的应用程序需要读取属于用户和组root /var/log/messages 。 什么是/var/log/messages所需的最小暴露级别,以便我的应用程序可以读取它?

目前,我的计划是将/var/log/messages的组所有权更改为一个新组,并将root和我的应用程序用户添加到它,但这也会给应用程序写入权限/var/log/messages

操作系统:Centos 5.5

不需要为组添加根,因为它可以通过用户privs进行访问,只需给组读取你决定的组。 请记住使用logrotate进行更改,否则组更改将在每晚进行擦除。

只是扩大一点上面的答案这里是一个真实的世界用例。 我在Redhat机器上运行企业日志分析应用程序Splunk。 它运行在splunk用户和splunk组下。 这可以防止splunk访问/ var / log中的日志,因为它们只能由root(或者sudo admin)访问,

为了只允许只读访问splunk我已经使用了一些ACL的和修改logrotate来坚持它。

您可以使用手动设置ACL

 sudo setfacl -mg:splunk:rx /var/log/messages 

这将不会持续,因为logrotate不会重新应用ACL设置,所以对于更持久的解决scheme,我添加了一个规则来logrotate来重置ACL。 我添加了文件

 /etc/logrotate.d/Splunk_ACLs 

 { postrotate /usr/bin/setfacl -mg:splunk:rx /var/log/cron /usr/bin/setfacl -mg:splunk:rx /var/log/maillog /usr/bin/setfacl -mg:splunk:rx /var/log/messages /usr/bin/setfacl -mg:splunk:rx /var/log/secure /usr/bin/setfacl -mg: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/

你的计划是可以接受的,在“传统的”Unix权限scheme中是最好的select。
另一个select是让系统日志将感兴趣的消息转移到另一个文件(避免给应用程序用户访问可能在/var/log/messages任何敏感内容)。

如果你不想受到User / Group / Other的传统权限scheme的束缚,你也可以使用POSIX ACL (其他可能更好的通过Google提供的howtos / info)来为你的应用程序用户提供对/var/log/messages只读访问/var/log/messages – 这是一个更精细的细节,不会冒险将别人放在应用程序的组中,并让他们访问他们不应该看到的东西。

Yip我已经使用setfacl来执行此操作来访问客户的mail.log文件,而不是在logrotate.conf文件中粘贴一个命令,以便在日志旋转后重新设置ACL :

 postrotate /usr/bin/setfacl -mo::r /var/log/mail.log endscript 

注意我只是设置了这个,并没有testing,但是虽然它会回到这里,但是不能明白为什么它不会工作,如果我错了,有人纠正我。

你可以使用ACL来做到这一点。 它允许您为特定的用户和文件设置特定的附加访问规则。