Подтвердить что ты не робот

Как я должен регистрироваться с не-корневым Debian Linux-демоном?

Я пишу новый демон, который будет размещен на Debian Linux.

Я обнаружил, что /var/log имеет права на запись только для root, поэтому мой демон не может записывать там файлы журнала.

Однако, если он там пишет, он, похоже, получит автоматическое вращение журнала, а также будет работать, как может ожидать пользователь.

Каким образом рекомендуется демонам записывать записи журнала, которые появляются в /var/log, без необходимости запуска от имени root?

Демон - это веб-сервер, поэтому трафик журнала будет похож на Apache.

4b9b3361

Ответ 1

Вы должны создать подкаталог типа /var/log/mydaemon, обладающий правами пользователя демона

Ответ 2

Как root, создайте там файл журнала и измените владельца файла на пользователя веб-сервера:

# touch /var/log/myserver.log
# chown wwwuser /var/log/myserver.log

Затем сервер может записывать файлы, если они выполняются как пользователь wwwuser. Тем не менее, он не получит автоматического поворота журнала. Вы должны добавить файл журнала в /etc/logrotate.conf или /etc/logrotate.d/... и заставить сервер повторно открыть файл журнала, когда logrotate сигнализирует, что он должен.

Вы также можете использовать syslog для ведения журнала, если это соответствует вашему сценарию лучше.

Ответ 3

Два варианта:

  • Начните с root, откройте файл, затем сбросьте разрешения с помощью setuid. (Я не помню точные системные вызовы для удаления разрешений.) Вам все равно придется делать это, если вы хотите привязать к TCP-порту 80 или любому порту ниже 1024.
  • Создайте подкаталог, например, /var/log/mydaemon, обладающий правами пользователя демона, WiseTechi сказал.

Файлы под /var/log не будут автоматически повернуты; вместо этого вращение контролируется /etc/logrotate.conf и файлы под /etc/logrotate.d.