Saída de Rsyslog para arquivo de log personalizado

13

Alguém pode me dizer o que fiz de errado aqui?

Aqui está a pergunta final:

Por que, quando uso o comando logger, não consigo que ele saia para um arquivo de log personalizado /var/log?

No meu script:

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

No rsyslog.confI anexa o seguinte ao final do arquivo:

local7.* /var/log/anm.log

Além disso, o script tem permissão para o /var/log/anm.logarquivo

* ATUALIZAÇÃO *

Então eu esqueci de reiniciar os serviços de log. Tentei reiniciar e " service rsyslog restart" Ainda não há alterações. O texto do teste /var/log/anm.lognão aparece, mas aparece em/var/log/syslog

* ATUALIZAÇÃO *

Que permissões são /var/log/"yourlogfilehere"necessárias? Owner, Group, rwx?

Eu tentei definir grp e own para root e para o nome de usuário executando o comando logger. Nenhuma mudança com qualquer um.

Também tentei criar arquivos de log dentro de um diretório personalizado /var/log. ou seja, /var/log/anm/anm.loge definir os dois tipos de permissões para o diretório.

* ATUALIZAÇÃO *

rsyslogd está em execução

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

e aqui está a saída do meu /etc/rsyslog.confarquivo

#  /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

Eu também tentei colocá-lo /etc/rsyslog.d/50-default.conf(estou executando o 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

* ATUALIZAÇÃO *

Bem, eu finalmente descobri. Eu gostaria que alguém tivesse respondido isso para mim. Demorou vários dias para descobrir o que estava errado, mas acho que simplesmente não existem muitas pessoas no superusuário.

O problema era com as permissões de arquivo do arquivo de log personalizado, como originalmente teorizado. Eu pensei que tinha as permissões corretas, mas acontece que o proprietário precisa ser sysloge o grupo adm. Eu determinei isso comparando com o user.logarquivo. Depois que as permissões foram modificadas e testadas novamente, tudo funciona perfeitamente! Espero que isso ajude alguém por aí mais rápido do que eu consegui encontrar resposta.

Atomiklan
fonte
1
Vi um post idêntico no SF - por favor, não cruze.
Journeyman Geek
Todo mundo ficava me dizendo para mudar minha postagem. Eu acho que devo excluir os outros?
Atomiklan
1
Sim. Você pode também sinalizar as suas próprias mensagens para pedir um moderador para movê-lo bem no futuro
Journeyman Geek
"Por favor, precise de assistência imediata" também não é um título muito útil para a pergunta. Pessoalmente, também acho difícil ler sua pergunta; onde está a pergunta real? A única pergunta real que posso ver é "de que permissões / var / log / somefile precisa?" e a resposta para isso deve ser "deixe o syslogd lidar com isso". Além disso, isso foi há muitas atualizações e, presumivelmente, não é mais relevante.
um CVn 03/08/13
Você pode postar sua solução como resposta para que outras pessoas que enfrentam o mesmo problema possam vê-lo.
gronostaj

Respostas:

6

Bem, eu finalmente descobri. Eu gostaria que alguém tivesse respondido isso para mim. Demorou vários dias para descobrir o que estava errado, mas acho que simplesmente não existem muitas pessoas no superusuário.

O problema era com as permissões de arquivo do arquivo de log personalizado, como originalmente teorizado. Eu pensei que tinha as permissões corretas, mas acontece que o proprietário precisa ser "syslog" e o grupo "adm". Eu determinei isso comparando com o arquivo user.log. Depois que as permissões foram modificadas e testadas novamente, tudo funciona perfeitamente! Espero que isso ajude alguém por aí mais rápido do que eu consegui encontrar resposta.

Aqui estão as permissões finais

-rw-r--r-- 1 syslog adm 0 Aug  3 05:09 anm.log
Atomiklan
fonte
"Eu pensei que tinha as permissões corretas" implica que você mesmo criou o arquivo. Por que você simplesmente não deixou o daemon syslog criá-lo?
um CVn 03/08/19
A pergunta era: Por que, quando eu uso o comando logger, não consigo que ele saia para um arquivo de log personalizado em / var / log? Eu apenas tentei deixar o syslog criar o arquivo e não funcionei. De qualquer maneira, tudo bem. Não me importo que meu script de instalação crie o arquivo e defina as permissões.
Atomiklan #
1
Parece que quando segundos = $$$
Atomiklan
Oi @Atomiklan Obrigado pela sua pergunta, resolvi exatamente o mesmo problema. No entanto, eu me pergunto por que o arquivo criado automaticamente pelo rsyslog está em root / root em vez do syslog / adm correto? Tens alguma ideia do porquê?
Yudong Li
valeu cara! aparentemente, seu esforço acabou de me salvar de 2 dias de depuração do syslog :) E dos comentários vagos de @ MichaelKjörling e @YudongLi, imaginei que o daemon cria o arquivo sozinho, de acordo com o caminho na regra de configuração. Depois de service restartconhecer a regra e, na primeira chamada apropriada, loggercria o arquivo com as permissões corretas definidas.
Xealits
1

@Atomiklan mencionou que tinha que mudar o proprietário / grupo de seu arquivo personalizado para syslog / adm. Eu tentei isto, e funcionou...

Mas o comentário de @ MichaelKjörling também parecia correto: por que não deixar o daemon syslog criar o arquivo?

A chave no meu caso (e sugiro os OPs) é que o usuário do syslog não tinha permissão de gravação no diretório do meu log personalizado . Eu fiz um chmod o+wrsyslog reiniciado e meu arquivo de log apareceu felizmente onde deveria ter ... com syslog / adm como usuário / grupo.

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

devemos ser:

$ModLoad imudp
$UDPServerRun 514

executar o log remoto!

rsyslog
fonte