¿Cómo debo iniciar sesión desde un demonio Debian Linux no root?


Estoy escribiendo un nuevo demonio, que será alojado en Debian Linux.

He encontrado que /var/log solo tiene permisos de escritura de root, por lo que mi demonio no puede escribir archivos de registro allí.

Sin embargo, si escribe allí, parece que ganará la rotación automática del registro, y también funcionará como un usuario podría esperar.

¿Cuál es la forma recomendada para que un demonio escriba entradas de registro que aparecen en /var/log, sin tener que ejecutarse como root?

El demonio es un servidor web, por lo que el registro el tráfico será similar a Apache.

Author: John McAleely, 2009-01-27

4 answers

Debe crear un subdirectorio como /var/log/mydaemon que tenga la propiedad de usuario del demonio

 39
Author: WiseTechi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-27 15:19:29

Como root, cree un archivo de registro allí y cambie el propietario de los archivos al usuario del servidor web:

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

Entonces el servidor puede escribir en los archivos si se ejecuta como usuario wwwuser. Sin embargo, no ganará rotación automática de registros. Debe agregar el archivo de registro a /etc/logrotate.conf o /etc/logrotate.d/... y hacer que su servidor vuelva a abrir el archivo de registro cuando logrotate indique que debe hacerlo.

También puede usar syslog para el registro, si ese ajuste es su escenario mejor.

 10
Author: sth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-29 20:30:39

Dos opciones:

  1. Comience como root, abra el archivo y luego suelte los permisos con setuid. (No recuerdo las llamadas exactas del sistema para eliminar permisos.) Tendrá que hacer esto de todos modos si desea vincularse al puerto TCP 80 o a cualquier puerto por debajo de 1024.
  2. Cree un subdirectorio como /var/log/mydaemon que tenga la propiedad del usuario del demonio, como WiseTechi dijo.

Los archivos bajo /var/log no se rotan automáticamente; en su lugar, la rotación está controlada por /etc/logrotate.conf y los archivos en /etc/logrotate.d.

 2
Author: Josh Kelley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:09

Utilice el comando" logger "

Http://linux.die.net/man/1/logger

 0
Author: phatypus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-24 10:13:51