目前我在读取文件权限(root)方面遇到了一些问题。我试图在我的系统(rsyslogd)中打开由iptables生成的日志文件。所以,当我在/var/log/iptables.log中生成该文件时,由root用户生成(而不是我的用户拥有sudoers配置授予的所有权限)
我使用包装器打开文件(Pygtail),但与python中的open函数相同。
for line in Pygtail(self.path_source):
if len(line) > 1:
print "\n Procesando línea --> " + str(line)
self.processLine(line)
当我执行脚本时,我的终端显示了这个错误:
IOError: [Errno 13] Permission denied: '/var/log/iptables.log'
Exception IOError: (13, 'Permission denied', '/var/log/iptables.log') in <bound method Pygtail.__del__ of <pygtail.core.Pygtail object at 0x7f2fb8127350>> ignored
iptables.log权限是:
-rw-r----- 1 root adm 0 dic 20 11:27 iptables.log
我只想打开文件,读取所有行并处理到我的python脚本中。没别了。
有什么想法吗?我会把一些图书馆看成像oslo.rootwrap这样的pip,但我不太了解它。
答案 0 :(得分:0)
我解决了这个问题。由rsyslogd创建文件权限。默认情况下是八位字节644,但在我的情况下是错误的(640)。
所以,我只是在我的系统中为/etc/rsyslog.conf更改了该值,现在/ var / log /中生成的新文件具有正确的权限。
$FileCreateMode 0644
fileCreateMode [default 0644] [octalNumber]
默认值:0644
如果不是,则设置要用于操作的默认fileCreateMode 指定了显式的。
File Output Module rsyslog configuration
感谢您的帮助! =)
PD:现在我的另一个问题是由pygtail生成的.offset文件(权限也是如此)。但这是另一个问题,而不是与这个问题不对应。