В момента имам някои проблеми с разрешенията за четене на файлове (root). Опитвам се да отворя лог файл, генериран от iptables в моята система (rsyslogd). И така, когато генерирам този файл в /var/log/iptables.log, направен от root потребител (вместо това моят потребител има всички разрешения, предоставени от конфигурацията на sudoers)
Използвам обвивка, за да отворя файла (Pygtail), но е същата като функцията за отваряне в python.
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 скрипт. Нищо друго.
Някакви идеи? Ще видя някои библиотеки в pip като oslo.rootwrap, но не разбирам много добре.
sudo
) ? - person rafaelc   schedule 30.12.2015Pygtail
може да има някаква допълнителна функционалност, която причинява проблема с разрешението. Опитахте ли просто да прочетете файла нормално?print [line for line in open('/var/log/iptables.log').read().splitlines()]
- person vesche   schedule 30.12.2015chmod
:chmod 4644 iptables.log
. Но не разбирам защо (това е битът SUID, но работи само ако 3-те октета имат разрешения за четене). - person MGautier   schedule 13.01.2016