Ошибка: ошибка создания файла состояния /var/lib/logrotate/status: Permission denied

Попытка использовать logrotate, и я получаю следующую ошибку при запуске журнала rotate script для определенного определения в logrotate.d

error: error creating state file /var/lib/logrotate/status: Permission denied

/var/lib/logrotate$ ls -lah
total 12K
drwxr-xr-x  2 root root 4.0K 2012-05-11 06:25 .
drwxr-xr-x 43 root root 4.0K 2012-05-18 08:07 ..
-rw-r--r--  1 root root  911 2012-05-25 06:25 status

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

Ответ 1

Вы уверены, что используете эту команду как root...?;) Поэтому, пожалуйста, проверьте, есть ли в системе AppArmour - если да, проверьте конфигурацию или удалите ее (случай Ubuntu).

Ответ 2

НЕ chmod файл состояния по умолчанию 666. Если вы chmod, то каждый пользователь системы может использовать logrotate как вектор атаки.

Просто определите (приватный) файл состояния для своего пользователя (предположим, что вы пытаетесь запустить его как обычный пользователь) с опцией [-s|--state file].

Ответ 3

В crontab была эта строка:

*  *  *  *  *   root    logrotate -s /var/run/logrotate.status /etc/logrotate.conf

Несмотря на то, что он выполнялся как root, я не мог избавиться от ошибки "ошибка: ошибка создания файла состояния /var/run/logrotate/status: Permission denied".

Итак, я просто использовал другой каталог:

*  *  *  *  *    root    /usr/sbin/logrotate -s /var/log/logrotate.status -v /etc/logrotate.conf >/tmp/logrotate.out 2>&1

Использовал идею отладки https://serverfault.com/info/762587/daily-logrotate-error-creating-unique-temp-file-permission-denied, но изменил ее, чтобы выходной файл не увеличивался бесконечно, что было бы иронично.

Подробный режим не предоставил никакой дополнительной информации в этом случае, кстати, именно тот файл конфигурации, который он читал, и одно и то же сообщение об ошибке. Но лучше было иметь выход в этом файле, а не в/var/mailspool.