如何设置由logrotate执行的python生成文件的权限

时间:2013-07-03 12:18:36

标签: python linux raspberry-pi

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

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

这是 ls -l as *

的输出
-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 AND root。

有什么建议吗?

2 个答案:

答案 0 :(得分: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 气馁

答案 1 :(得分: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)