/var/log/messages文件监控

近来项目中遇到一个问题,情况是这样的,我们使用ELK中的LOGSTASH来监控LINUX的系统日志文件:/var/log/messages文件,但这个文件默认的权限是600,这样很为难,

我们使用特定的日志收集用户启动LOGSTASH进程,这样对于没有权限的文件就无法监控了.

以下记录我寻找答案的经历.

我不熟LINUX文件权限管理,知其一二,主要是不懂UMASK,直接的想法是chmod o+r /var/log/message不就行了.

但是这个文件是会滚动的,滚动后生成的日志权限又变成600了, 总不能一直启动一个进程来检查,然后再改,而且这个进程要运行在ROOT权限下.

1.使用SUDO来操作LOGSTASH,这个方案最好,但现在我们通过SHELL来进行,现在有些小麻烦,但是我觉得还是得通过这种方法,这是最合理的方法.

2.想办法获取读的权限

我曾开始想到使用chmod -R o+r /var/log 的方法来测试,随便测试了一个文件,以为是正确的,其实我的测试是错误的,因为ROOT的UMASK默认就是022.

所以不用改,默认生成的文件其他组用户就有读的权限.

经同事提醒,我转移到UMASK上面.找了一些资料.

默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2)
umask 0003 创建后的文件权限是rw-rw-r--
而且一开始也不熟/var/log/messages的来源,找到SYSLOG,找到RSYSLOG,然后再慢慢清楚了.

rsyslog是SYSLOG的替代品,现在默认很多系统就使用RSYSLOG了,我用的CENTOS,还有REDHAT都是这样.

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch05_:_Troubleshooting_Linux_with_syslog#.V7HLZbM_Dod

然后找到/etc/init.d/rsyslog 编缉查看 ,找到 umask 077 ,释然.终于找到你了.

上一篇:Java设计模式8:迭代器模式


下一篇:poj2762 缩点+topo排序