Rsyslog que sale al archivo de registro personalizado

13

¿Alguien puede decirme qué hice mal aquí?

Aquí está la última pregunta:

¿Por qué cuando uso el comando logger no puedo hacer que salga a un archivo de registro personalizado /var/log?

En mi guion:

logger -i -t ANM -p local7.info "This is a local 7 test"

En el rsyslog.confadjunto lo siguiente al final del archivo:

local7.* /var/log/anm.log

Además, el script tiene permiso para el /var/log/anm.logarchivo

* ACTUALIZACIÓN *

Así que olvidé reiniciar los servicios de registro. He intentado reiniciar y " service rsyslog restart" Todavía no hay cambios. El texto de prueba no aparece en /var/log/anm.logpero aparece en/var/log/syslog

* ACTUALIZACIÓN *

¿Qué permisos /var/log/"yourlogfilehere"necesita? Owner, Group, rwx?

Intenté configurar grp y own en root y en el nombre de usuario que ejecuta el comando logger. No hay cambio con ninguno de los dos.

También he intentado crear archivos de registro dentro de un directorio personalizado en /var/log. es decir, /var/log/anm/anm.logy establecer ambos tipos de permisos para el directorio.

* ACTUALIZACIÓN *

rsyslogd se está ejecutando

syslog     598  0.0  0.1  31060  1292 ?        Sl   03:02   0:02 rsyslogd -c5

y aquí está la salida de mi /etc/rsyslog.confarchivo

#  /etc/rsyslog.conf    Configuration file for rsyslog.
#
#                       For more information see
#                       /usr/share/doc/rsyslog-doc/html/rsyslog_conf.html
#
#  Default logging rules can be found in /etc/rsyslog.d/50-default.conf


#################
#### MODULES ####
#################

$ModLoad imuxsock # provides support for local system logging
$ModLoad imklog   # provides kernel logging support (previously done by rklogd)
#$ModLoad immark  # provides --MARK-- message capability

# provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514


###########################
#### GLOBAL DIRECTIVES ####
###########################

#
# Use traditional timestamp format.
# To enable high precision timestamps, comment out the following line.
#
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

# Filter duplicated messages
$RepeatedMsgReduction on

#
# Set the default permissions for all log files.
#
$FileOwner syslog
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
$PrivDropToUser syslog
$PrivDropToGroup syslog

#
# Where to place spool files
#
$WorkDirectory /var/spool/rsyslog

#
# Include all config files in /etc/rsyslog.d/
#
$IncludeConfig /etc/rsyslog.d/*.conf

local7.*        /var/log/anm.log

También intenté ponerlo /etc/rsyslog.d/50-default.conf(estoy ejecutando Ubuntu 12.04 LTS)

#  Default rules for rsyslog.
#
#                       For more information see rsyslog.conf(5) and /etc/rsyslog.conf

#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
#cron.*                         /var/log/cron.log
#daemon.*                       -/var/log/daemon.log
kern.*                          -/var/log/kern.log
#lpr.*                          -/var/log/lpr.log
mail.*                          -/var/log/mail.log
#user.*                         -/var/log/user.log
local7.*                        /var/log/anm.log

* ACTUALIZACIÓN *

Bueno, finalmente lo descubrí. Desearía que alguien hubiera respondido esto por mí. Tomó varios días descubrir qué estaba mal, pero supongo que no hay muchas personas en el superusuario.

El problema fue con los permisos de archivo del archivo de registro personalizado como originalmente teoricé. Pensé que tenía los permisos correctos, pero resulta que el propietario debe ser syslogy el grupo adm. Determiné esto comparándolo con el user.logarchivo. Una vez que los permisos fueron modificados y probados nuevamente, ¡todo funciona perfectamente! Espero que esto ayude a alguien más más rápido de lo que pude encontrar respuesta.

Atomiklan
fuente
1
Vi una publicación idéntica en SF, por favor no publique.
Journeyman Geek
Todos me decían que moviera mi publicación. ¿Supongo que debería eliminar a los demás?
Atomiklan
1
Sip. También puedes marcar tus propias publicaciones para pedirle a un moderador que las mueva también en el futuro
Journeyman Geek
"Por favor, necesita asistencia inmediata" tampoco es un título muy útil para la pregunta. También personalmente encuentro que su pregunta es difícil de leer; ¿Dónde está la pregunta real? La única pregunta real que puedo ver es "¿qué permisos necesita / var / log / somefile?" y la respuesta a eso debería ser "dejar que el syslogd lo maneje". Además, eso fue hace muchas actualizaciones y presumiblemente ya no es relevante.
un CVn
Puede publicar su solución como respuesta para que otras personas que enfrentan el mismo problema puedan verlo.
gronostaj

Respuestas:

6

Bueno, finalmente lo descubrí. Desearía que alguien hubiera respondido esto por mí. Tomó varios días descubrir qué estaba mal, pero supongo que no hay muchas personas en el superusuario.

El problema fue con los permisos de archivo del archivo de registro personalizado como originalmente teoricé. Pensé que tenía los permisos correctos, pero resulta que el propietario debe ser "syslog" y el grupo "adm". Determiné esto comparándolo con el archivo user.log. Una vez que los permisos fueron modificados y probados nuevamente, ¡todo funciona perfectamente! Espero que esto ayude a alguien más más rápido de lo que pude encontrar respuesta.

Aquí están los permisos finales

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log
Atomiklan
fuente
"Pensé que tenía los permisos correctos" implica que usted mismo creó el archivo. ¿Por qué no dejaste simplemente que el demonio syslog lo creara?
un CVn
La pregunta era: ¿Por qué cuando uso el comando logger no puedo hacer que salga a un archivo de registro personalizado en / var / log? Intenté dejar que syslog creara el archivo y no funciona. Sin embargo, de cualquier manera está bien. No me importa que mi script de instalación cree el archivo y establezca los permisos.
Atomiklan
1
Se siente como cuando segundos = $$$
Atomiklan
Hola @Atomiklan Gracias por tu pregunta resuelve exactamente mi mismo problema. Sin embargo, me pregunto por qué el archivo creado automáticamente por rsyslog está en root / root en lugar del syslog / adm correcto. ¿Tienes alguna idea de por qué?
Yudong Li
¡gracias hombre! aparentemente, su esfuerzo me ha salvado de 2 días de depuración de syslog :) Y de los vagos comentarios de @ MichaelKjörling y @YudongLi, pensé que el demonio crea el archivo por sí mismo de acuerdo con la ruta en la regla de configuración. Después de service restartconocer la regla y en la primera llamada apropiada, loggercrea el archivo con los permisos correctos establecidos.
xealits
1

@Atomiklan mencionó que tenía que cambiar el propietario / grupo de su archivo personalizado a syslog / adm. Lo intenté y funcionó ...

Pero el comentario de @ MichaelKjörling también parecía correcto: ¿por qué no dejar que el demonio syslog cree el archivo?

La clave en mi caso (y sugiero los OP) es que el usuario de syslog no tenía permiso de escritura en el directorio de mi registro personalizado . Hice un chmod o+w, reinicié rsyslog, y mi archivo de registro felizmente apareció donde debería haber ... con syslog / adm como usuario / grupo.

Dan H
fuente
1
#$ModLoad imudp
#$UDPServerRun 514

debe ser:

$ModLoad imudp
$UDPServerRun 514

para ejecutar el registro remoto!

rsyslog
fuente