Как мне войти в систему из демона Debian Linux без полномочий root?
Вопрос
Я пишу новый демон, который будет размещен в 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/...
и заставьте ваш сервер повторно открыть файл журнала, когда логротировать сигнализирует, что так и должно быть.
Вы также можете использовать syslog
для ведения журнала, если это лучше подходит вашему сценарию.
Два варианта:
- Начать как
root
, откройте файл, затем сбросьте разрешения с помощьюsetuid
.(Я не помню точных системных вызовов для удаления разрешений.) Вам все равно придется это сделать, если вы хотите привязаться к TCP-порту 80 или любому порту ниже 1024. - Создайте подкаталог типа /var/log/mydaemon, принадлежащий пользователю демона, как WiseTechi сказал.
Файлы под /var/log
не поворачиваются автоматически;вместо этого вращение контролируется /etc/logrotate.conf
и файлы под /etc/logrotate.d
.
используйте команду «регистратор»