Назад | Перейти на главную страницу

Конфликт разрешений Logrotate

У меня есть папка с файлами журналов, и я использую logrotate чтобы повернуть их.

До недавнего времени у меня были только файлы журнала Apache - access.log и error.log. Я добавил новый журнал от демона, daemon.log. Журнал демона записывает демон, работающий под управлением www-data пользователь.

Когда он бежит, logrotate создает новый журнал с разрешениями 640, пользователь root и группа adm. Apache может записывать в журналы доступа и ошибок с этими разрешениями, но мой демон, работающий как www-data, не могу.

На мой взгляд, есть несколько вариантов:

  1. Изменить logrotate config, чтобы вручную указать, какие файлы журналов и какие разрешения имеют. Но это означает, что если я добавлю новый файл журнала, мне нужно будет не забыть настроить logrotate управлять этим.
  2. Измените logrotate сценарий для создания исключения для файла daemon.log. Это вообще возможно?
  3. Переместите журнал демона в новую папку с отдельным logrotate сценарий для управления файлами журнала в этой новой папке. Достаточно просто, но я бы хотел, чтобы все мои журналы были вместе, если можно.
  4. Устанавливать logrotate для создания файлов от имени другого пользователя и группы. Похоже, это может привести к потере информации журнала.
  5. Добавить www-data пользователь к adm group и установите разрешения для 660. Мне не нравится идея давать www-data непреднамеренный доступ пользователей к другим материалам.
  6. Установите разрешения для файлов журнала на 666. Похоже на грубое решение.

Ни один из них не идеален, и я почти уверен, что пара ужасных. Есть ли другой вариант, или один из них лучше всего? Я что-то упускаю?

Стандартный ответ - заставить logrotate создавать файлы с правами собственности, которые понадобятся процессу для записи в них. (Я не понимаю, почему это может привести к потере информации журнала; возможно, вы могли бы уточнить, почему вы думаете, что это риск.)

Вы делаете это, добавляя строку

create owner group

в соответствующий бит конфигурации logrotate. Если вы хотите иметь файлы с определенным разрешением, вы добавляете

create mode owner group

вместо.

Пример:

create 644 www-data www-data