2013-07-03 30 views
1

我正在使用syslog-ng来编写带有覆盆子pi的cisco pix防火墙的日志。 日志每天都在旋转。轮换后,最后一个文件被传递给一个python脚本,该脚本搜索日志文件中的所有ip地址,然后根据主机名查找(如果可能),并用主机名替换ip地址。结果行被写入一个单独的日志文件中。到现在为止还挺好。如何设置由logrotate执行的python生成文件的权限

我遇到的问题是,由python脚本生成的文件具有另一个GUID作为syslog-ng生成的文件。

下面是LS输出-l为 *

-rw-r--r-- 1 root root 82799344 Jul 3 03:45 asa_ip_to_hostnames.log 
-rw-r----- 1 root adm 200182806 Jul 3 14:05 asa.log 
-rw-r----- 1 root adm 135410305 Jul 3 02:25 asa.log.1 
-rw-r----- 1 root adm  46145 Jul 2 13:52 asa.log.2.gz 
-rw-r----- 1 root adm  36942 Jul 2 13:50 asa.log.3.gz 
-rw-r----- 1 root adm  30969 Jul 2 13:49 asa.log.4.gz 
-rw-r----- 1 root adm  55544 Jul 2 13:48 asa.log.5.gz 
-rw-r----- 1 root adm  74464 Jul 2 13:46 asa.log.6.gz 
-rw-r--r-- 1 root root 153725702 Jul 3 03:45 asa_w_hostnames.log 
-rw-r--r-- 1 root root 639542 Jul 2 13:53 asa_w_hostnames.log.1 
-rw-r--r-- 1 root root  38303 Jul 2 13:51 asa_w_hostnames.log.2.gz 
-rw-r--r-- 1 root root  31992 Jul 2 13:49 asa_w_hostnames.log.3.gz 
-rw-r--r-- 1 root root  57687 Jul 2 13:48 asa_w_hostnames.log.4.gz 
  • asa.log由syslog-ng的
  • asa_w_hostnames.log通过我的Python脚本生成生成(通过logrotate的执行)
  • asa_ip_to_hostnames.log是python脚本的文本输出

正如您所看到的,通过logrotate创建的文件与root/root关联,而asa_log文件与adm/root关联。

我想要所有与adm/root相关的文件,这样我就可以将一个只读的samba用户添加到组adm,以便可以在Windows系统上复制日志文件。我不想添加samba用户adm和root。

有什么建议吗?

回答

1
import os 
import pwd 

admdetails = pwd.getpwnam('adm') 
rootdetails = pwd.getpwnam('root') 

for fname in ['name1', ,,,]: 
    os.chown(fname, rootdetails.pw_uid, admdetails.pr_gid) 

或类似的东西应该适应工作。注:您可能需要以root身份或sudo身份运行,因为不必以root身份将root用户从root更改为劝阻

+0

明天我会试试这个,当我回去工作。提前致谢! – twittfort

+1

我不得不稍微调整一下,但这个想法没有办法。这是我的最终解决方案: 编辑:我忘了换行是不可能的评论。我会将您的答案标记为已接受并发布我的解决方案。 – twittfort

+0

很高兴能够提供帮助 - 棘手的问题是让uid成为一个数字! –

1

史蒂夫巴恩斯答案是完美的,它只是需要一点调整。这是最后的代码:

import os, pwd, grp, stat 

grpdetails = grp.getgrnam('adm') 
rootdetails = pwd.getpwnam('root') 

os.chown(filename_out, rootdetails.pw_uid, grpdetails.gr_gid) 
os.chmod(filename_out, stat.S_IREAD | stat.S_IWRITE | stat.S_IRGRP) 
相关问题