¿Dónde se supone que los progtwigs de espacio de usuario guardan sus loggings?

Estoy escribiendo un script que quiero ejecutar sin privilegios. Quiero que los errores que encuentra el script se registren en algún file de logging. No tengo privilegios para escribir uno en /var/log . Y no quiero tener uno en mi directory personal.

¿Hay una location donde las secuencias de commands del espacio de usuario pueden registrar información de time de ejecución? ¿Cuál es la mejor práctica para tener mi información de logging de scripts en /var/log sin crear ningún posible problema de security? Dudo en configurar uid / gid en el script.

Solutions Collecting From Web of "¿Dónde se supone que los progtwigs de espacio de usuario guardan sus loggings?"

No puede escribir en / var / log como un usuario normal, pero el daemon syslog lo hará por usted si lo solicita. Si desea registrar posts en los loggings del sistema estándar (por ejemplo, /var/log/syslog ), el logger services 4.4BSD podría estar disponible en su sistema. Está instalado por defecto en Debian, y está en el package bsdutils en derivados de Debian.

Obtendrá la ventaja de cualquier herramienta de rotation, mantenimiento y supervisión de loggings preexistente, con la desventaja de necesitar privilegios para leer los loggings del sistema y de tener los posts de su secuencia de commands mezclados con los posts de otros progtwigs.

 $ logger Hello $ echo Goodbye | logger $ sudo tail -2 /var/log/syslog Feb 19 21:16:15 debian-host jander: Hello Feb 19 21:16:21 debian-host logger: Goodbye 

Hay varias opciones de configuration disponibles; puedes leer más en man logger .

Si, como usuario ordinario, decide ejecutar un progtwig, el lugar natural para sus loggings está en su directory de inicio. Su directory de inicio está destinado a almacenar todos sus files, ya sean loggings de un progtwig que ejecuta o cualquier otra cosa.

Si el progtwig se ejecuta como parte del sistema, ejecutándose como un usuario del sistema típicamente dedicado, entonces el lugar natural para sus loggings está en /var/log . Cree un subdirectory /var/log/myapp y /var/log/myapp los permissions apropiados para que su aplicación pueda escribir allí.

Si es relevante y su sistema operativo lo permite, marque el file de logging como solo para agregar. Solo root puede hacer esto. Esto tiene la ventaja de que si su aplicación se ve comprometida, no podrá borrar loggings pasados, lo que puede ser muy útil para el análisis forense del compromiso. Necesitará la intervención de root para rotar el logging: chown para que el file de logging ya no pueda ser abierto por la aplicación, rename el rename del file de logging, cree un nuevo file de solo anexar con la propiedad apropiada, luego notifique a la aplicación para abrir el nuevo file vacío.

Puede crear cualquier logging de aplicación en los loggings del sistema llamando a logger(1) o syslog(3) .

En general, para un daemon, el file de logging es creado por la root entonces los permissions se modifican para que el usuario sin privilegios pueda escribir en él. logrotate luego se configura para conservar los permissions durante la rotation.

Si es un command, no un daemon, entonces inicie session en /tmp (preferiblemente usando mktemp ) e informe al usuario a través de STDOUT donde fue el logging.

Tengo la printing de que se espera que los progtwigs de espacio de usuario descarten loggings de manera pnetworkingeterminada. He visto varios progtwigs que descargan loggings donde les apetezca, y nunca es bienvenido en mis sistemas; tendiendo a acumularse en algún lugar que nunca se note a less que / hasta que se haga grande.

Preferiría si hubiera un lugar definido para ellos, estoy jugando en mi sistema tratando de encontrar un lugar estable para ellos.

Mi primera idea fue usar /var/run/user/$UID/log , pero encontré que en mi sistema, ese es un assembly TMPFS, no lo suficientemente grande, o realmente bueno para usarlo con los loggings.

Crea un lugar para ellos

Como no entiendo / var / run / user lo suficientemente bien como para integrarlo, he decidido emularlo a mano, para el usuario 1000.

 # mkdir /var/log/user # install -d /var/log/user/1000 --owner 1000 -g 1000 -m 0700 

Recomendaría atenerme al FHS / var / log spc para la estructura dentro de esta carpeta, pero la forma libre de la especificación así que no hay mucho que cumplir.

Logrotate Config

No hay rotation de loggings existente en este directory proporcionado por su sistema, le recomiendo crear uno para su sistema:

 # /etc/logrotate.d/userlogs /var/log/user/*/log/*.log /var/log/user/*/log/**/*.log { daily missingok rotate 7 compress notifempty nocreate } 

Debajo está mi anterior publicación / var / run / user / 1000 / log, no puedo recomendarla a less que realmente sepas lo que estás haciendo (¡y si lo haces, dime también!)

tal vez de la siguiente manera, pero me inventé esto porque tenía sentido para mí.

 /var/run/user/1000/log/<app>.log /var/run/user/1000/log/<app>/<context>.log 

Integrar con / var / log / user / 1000:

 # Integrate with above /var/run/user, probably a bad idea: # ln -s /var/log/user/1000/ /var/run/user/1000/log