Ответ 1
Вы должны создать подкаталог типа /var/log/mydaemon
, обладающий правами пользователя демона
Я пишу новый демон, который будет размещен на Debian Linux.
Я обнаружил, что /var/log имеет права на запись только для root, поэтому мой демон не может записывать там файлы журнала.
Однако, если он там пишет, он, похоже, получит автоматическое вращение журнала, а также будет работать, как может ожидать пользователь.
Каким образом рекомендуется демонам записывать записи журнала, которые появляются в /var/log, без необходимости запуска от имени root?
Демон - это веб-сервер, поэтому трафик журнала будет похож на Apache.
Вы должны создать подкаталог типа /var/log/mydaemon
, обладающий правами пользователя демона
Как root, создайте там файл журнала и измените владельца файла на пользователя веб-сервера:
# touch /var/log/myserver.log
# chown wwwuser /var/log/myserver.log
Затем сервер может записывать файлы, если они выполняются как пользователь wwwuser
. Тем не менее, он не получит автоматического поворота журнала. Вы должны добавить файл журнала в /etc/logrotate.conf
или /etc/logrotate.d/...
и заставить сервер повторно открыть файл журнала, когда logrotate сигнализирует, что он должен.
Вы также можете использовать syslog
для ведения журнала, если это соответствует вашему сценарию лучше.
Два варианта:
root
, откройте файл, затем сбросьте разрешения с помощью setuid
. (Я не помню точные системные вызовы для удаления разрешений.) Вам все равно придется делать это, если вы хотите привязать к TCP-порту 80 или любому порту ниже 1024.Файлы под /var/log
не будут автоматически повернуты; вместо этого вращение контролируется /etc/logrotate.conf
и файлы под /etc/logrotate.d
.
используйте команду "logger"