Estou executando um servidor Debian e, alguns dias atrás, meu rsyslog começou a se comportar muito estranho, o daemon está sendo executado, mas parece não fazer nada. Muitas pessoas usam o sistema, mas eu sou o único com acesso root (legal).
Estou usando a configuração padrão do rsyslogd (se você achar relevante, eu a anexarei, mas é a que acompanha o pacote).
Depois que eu girei todos os arquivos de log, eles permaneceram vazios:
# ls -l /var/log/*.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/alternatives.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/auth.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/daemon.log
-rw-r--r-- 1 root root 0 Jun 27 00:25 /var/log/dpkg.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/kern.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/lpr.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/mail.log
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/user.log
Qualquer tentativa de forçar uma gravação de log não tem nenhum efeito:
# logger hey
# ls -l /var/log/messages
-rw-r----- 1 root adm 0 Jun 26 13:03 /var/log/messages
Lsof mostra que o rsyslogd não possui nenhum arquivo de log aberto:
# lsof -p 1855
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1855 root cwd DIR 202,0 4096 2 /
rsyslogd 1855 root rtd DIR 202,0 4096 2 /
rsyslogd 1855 root txt REG 202,0 342076 21649 /usr/sbin/rsyslogd
rsyslogd 1855 root mem REG 202,0 38556 32153 /lib/i386-linux-gnu/i686/cmov/libnss_nis-2.13.so
rsyslogd 1855 root mem REG 202,0 79728 32165 /lib/i386-linux-gnu/i686/cmov/libnsl-2.13.so
rsyslogd 1855 root mem REG 202,0 26456 32163 /lib/i386-linux-gnu/i686/cmov/libnss_compat-2.13.so
rsyslogd 1855 root mem REG 202,0 297500 1061058 /usr/lib/rsyslog/imuxsock.so
rsyslogd 1855 root mem REG 202,0 42628 32170 /lib/i386-linux-gnu/i686/cmov/libnss_files-2.13.so
rsyslogd 1855 root mem REG 202,0 22784 1061106 /usr/lib/rsyslog/imklog.so
rsyslogd 1855 root mem REG 202,0 1401000 32169 /lib/i386-linux-gnu/i686/cmov/libc-2.13.so
rsyslogd 1855 root mem REG 202,0 30684 32175 /lib/i386-linux-gnu/i686/cmov/librt-2.13.so
rsyslogd 1855 root mem REG 202,0 9844 32157 /lib/i386-linux-gnu/i686/cmov/libdl-2.13.so
rsyslogd 1855 root mem REG 202,0 117009 32154 /lib/i386-linux-gnu/i686/cmov/libpthread-2.13.so
rsyslogd 1855 root mem REG 202,0 79980 17746 /usr/lib/libz.so.1.2.3.4
rsyslogd 1855 root mem REG 202,0 18836 1061094 /usr/lib/rsyslog/lmnet.so
rsyslogd 1855 root mem REG 202,0 117960 31845 /lib/i386-linux-gnu/ld-2.13.so
rsyslogd 1855 root 0u unix 0xebe8e800 0t0 640 /dev/log
rsyslogd 1855 root 3u FIFO 0,5 0t0 2474 /dev/xconsole
rsyslogd 1855 root 4u unix 0xebe8e400 0t0 645 /var/spool/postfix/dev/log
rsyslogd 1855 root 5r REG 0,3 0 4026532176 /proc/kmsg
Fiquei tão frustrado que até reinstalou o pacote rsyslog, mas ele ainda se recusa a registrar qualquer coisa:
# apt-get remove --purge rsyslog
# apt-get install rsyslog
Eu pensei que alguém havia hackeado o sistema, então execute rkhunter, chkrootkit, reexibir na tentativa de encontrar ocultar processos / portas e nmap em um host remoto para comparar com as portas mostradas pelo netstat. E eu sei que isso não significa nada, mas tudo parece ok. O sistema também possui um firewall de tabelas de ip muito restritivo às conexões de entrada / saída.
Isso está me deixando louco, alguma idéia do que está acontecendo aqui?
[EDIT - informações sobre espaço em disco]
# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 24G 22G 629M 98% /
/dev/root 24G 22G 629M 98% /
devtmpfs 10M 112K 9.9M 2% /dev
tmpfs 76M 48K 76M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 151M 40K 151M 1% /tmp
tmpfs 151M 0 151M 0% /run/shm
[EDIT - informações do rastreio]
Strace parece ok para mim
[pid 28824] access("/var/log/auth.log", F_OK) = 0
[pid 28824] access("/var/log/syslog", F_OK) = 0
[pid 28824] access("/var/log/daemon.log", F_OK) = 0
[pid 28824] access("/var/log/kern.log", F_OK) = 0
[pid 28824] access("/var/log/lpr.log", F_OK) = 0
[pid 28824] access("/var/log/mail.log", F_OK) = 0
[pid 28824] access("/var/log/user.log", F_OK) = 0
[pid 28824] access("/var/log/mail.info", F_OK) = 0
[pid 28824] access("/var/log/mail.warn", F_OK) = 0
[pid 28824] access("/var/log/mail.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.crit", F_OK) = 0
[pid 28824] access("/var/log/news/news.err", F_OK) = 0
[pid 28824] access("/var/log/news/news.notice", F_OK) = 0
[pid 28824] access("/var/log/debug", F_OK) = 0
[pid 28824] access("/var/log/messages", F_OK) = 0
O log de rastreamento completo pode ser baixado aqui
Respostas:
Provavelmente é um problema de propriedade de arquivos. O rsyslog começa a ser executado como root, mas descarta privilégios e é executado como usuário syslog (diretiva de configuração $ PrivDropToUser ).
Os arquivos syslog (auth.log, daemon.log, etc.) pertencem inicialmente ao syslog: adm, mas se você alterar a propriedade para root (como parece na sua lista de arquivos), não importa se você HUP (ou seja, recarrega) o rsyslog ou reinicie-o, pois será negado abrir esses arquivos devido à falta de privilégios.
Se a mudança de propriedade ocorreu após a rotação do log, verifique a
create
opção da sua configuração de rotação do log . O configure-o comocreate 0644 syslog adm
no/etc/logrotate.d/rsyslog
ou melhor ainda, defini-lo globalmente em/etc/logrotate.conf
omitindo o modo, proprietário e grupo, simplesmente como estecreate
(que é a configuração padrão, por sinal), caso em que serão utilizados os mesmos valores do arquivo. Consulteman logrotate
para mais detalhes.Algumas versões do rsyslog incluem uma diretiva $ omfileForceChown como uma solução alternativa para a alteração externa da propriedade do arquivo, mas isso não é recomendado. A maneira recomendada é configurar corretamente a propriedade e as permissões. Mais informações sobre esse problema podem ser encontradas após esse link.
fonte
Eu tive esse problema porque meu / var / log residia em um ramdisk para reduzir o desgaste do meu SSD e queria movê-lo para um HDD, para que eu tivesse mais histórico do que apenas a inicialização atual.
O engraçado é que, como era um ramdisk, eu não tinha um para copiar no modo de usuário único, então não sabia quais deveriam ser as permissões e a propriedade! Duh.
Resumindo, com seu novo local:
Agora, o Rsyslog poderá gravar em / var / log, pois é executado como usuário 'syslog', grupo 'syslog'.
fonte
Se as permissões de arquivo forem boas e o logrotate estiver configurado corretamente, sua próxima etapa será dar uma olhada nas chamadas do sistema rsyslog.
Assim que meu erro de digitação foi corrigido nesse arquivo
/etc/rsyslog.d/50-default.conf
, o syslog começou a gravar em / var / log / syslog novamente!fonte