Права доступа к файлу регистратора Python

Сервер Ubuntu 16.04.5 LTS

У меня есть сценарий python, который создает файлы журнала, используя следующий код:

today = datetime.today()
datem = datetime(today.year, today.month, today.day)
logger = logging.getLogger('processImport')
hdlr = logging.FileHandler('{0}myLog_{1}-{2}-{3}.log'.format(myLogFileLocation, datem.year, datem.month, datem.day))
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr) 
logger.setLevel(logging.INFO)

сохранение записи журнала с помощью:

logger.info(logMessage)

Затем у меня есть задание cron, которое удаляет старые файлы журнала через определенный период, выполняя файл python, который использует os.remove(fullFilePath) для удаления файла.

Однако при выполнении этого задания cron я получаю сообщение об ошибке с разрешениями.

OSError: [Errno 13] Permission denied: PathToTheFile\theLogFileName.log

Когда я проверяю разрешения для файла, они установлены на:

-rw-r--r-- 1 www-data www-data etc etc

Что мне нужно сделать, чтобы задание cron получило разрешение на удаление файлов журнала?

Спасибо.

Я думаю, вам нужны разрешения (+w) для файла и (+x) для родительского каталога.

Mayank Porwal 26.11.2018 04:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
1
10 067
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Кажется, есть разрешение на запись в папку. Смена разрешения должна помочь.

Попробуй это:

log_dir = '/abs/path/of/directory'
os.chmod(log_dir, 0777)

Дай мне знать, как дела.

Спасибо, решено. Это были разрешения на родительскую папку. Я изменил их с помощью chmod 777 DirName непосредственно с терминала, а не с помощью python (я пробовал это вчера и, думаю, по тем же причинам, что и с ошибкой разрешений).

Doug 27.11.2018 04:26

Это очень плохая идея, так как разрешения слишком свободны. Теперь у всех есть права создавать и удалять там файлы. Помимо уничтожения файлов журнала, чтобы скрыть попытки взлома, можно также заменить их символическими ссылками и заставить демон затем записывать в другие файлы, к которым пользователь также не имеет доступа.

Goswin von Brederlow 11.11.2019 15:00

В Python 3 вам нужно префикс режима (если восьмеричный) с 0o: os.chmod(log_dir, 0o777)

Agnes Kis 11.10.2020 14:58

Другие вопросы по теме