Ubuntu 14.04.2 LTS - RSysLog 8.8.0 - omusrmsg não funciona

1

Eu tenho tentado por dois dias fazer com que o RSysLog alerte todos os [ou especificados] usuários de certas Instalações / Prioridades que acessam o RSysLog.

rsyslog.d / 50-default.conf:

...
*.emerg                                :omusrmsg:*
...

o comando

# logger -p emerg "Test Broadcast"

não envia mensagens para usuários autenticados, mas cria a entrada em / var / log / syslog Eu tentei isso em um estoque Digital Ocean 14LTS Droplet, então eu instalei o syslog-ng e funcionou bem lá. Se tudo mais falhar, terei que mudar para o syslog-ng.

Eu tentei depurá-lo, mas não achei nada conclusivo, só que ele deveria estar chamando seu plugin omusrmsg interno.

6570.499968822:imuxsock.c     : --------imuxsock calling select, active file descriptors (max 4): 
0 4 
6570.500000498:main Q:Reg/w0  : wti 0x1e55a80: worker awoke from idle processing
6570.500011205:main Q:Reg/w0  : DeleteProcessedBatch: we deleted 0 objects and enqueued 0 objects
6570.500018262:main Q:Reg/w0  : doDeleteBatch: delete batch from store, new sizes: log 1, phys 1
6570.500028026:main Q:Reg/w0  : processBATCH: batch of 1 elements must be processed
6570.500035307:main Q:Reg/w0  : processBATCH: next msg 0: <8>Mar 18 11:02:50 root: Test Broadcast
6570.500043692:main Q:Reg/w0  :     PRIFILT 'auth,authpriv.*'
6570.500060156:main Q:Reg/w0  :     pmask:  X  X  X  X FF  X  X  X  X  X FF  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.500212848:main Q:Reg/w0  : PRIFILT condition result is 0
6570.500219084:main Q:Reg/w0  :     PRIFILT '*.*;auth,authpriv.none'
6570.500234875:main Q:Reg/w0  :     pmask: FF FF FF FF  X FF FF FF FF FF  X FF FF FF FF FF FF FF F
F FF FF FF FF FF FF FF 
6570.500376739:main Q:Reg/w0  : PRIFILT condition result is 1
6570.500383229:main Q:Reg/w0  :     ACTION 1 [builtin:omfile:/var/log/syslog]
6570.500399749:main Q:Reg/w0  : executing action 1
6570.500406423:main Q:Reg/w0  : Called action, logging to builtin:omfile
6570.500434197:main Q:Reg/w0  : action 1 is transactional - executing in commit phase
6570.500442730:main Q:Reg/w0  : Action 1 transitioned to state: itx
6570.500449556:main Q:Reg/w0  :     PRIFILT 'syslog.*'
6570.500464841:main Q:Reg/w0  :     pmask:  X  X  X  X  X FF  X  X  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.500600153:main Q:Reg/w0  : PRIFILT condition result is 0
6570.500606337:main Q:Reg/w0  :     PRIFILT 'kern.*'
6570.500621174:main Q:Reg/w0  :     pmask: FF  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.500756319:main Q:Reg/w0  : PRIFILT condition result is 0
6570.500762583:main Q:Reg/w0  :     PRIFILT 'mail.*'
6570.500779355:main Q:Reg/w0  :     pmask:  X  X FF  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.500917348:main Q:Reg/w0  : PRIFILT condition result is 0
6570.500922727:main Q:Reg/w0  :     PRIFILT 'mail.err'
6570.500936390:main Q:Reg/w0  :     pmask:  X  X  F  X  X  X  X  X  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.501051126:main Q:Reg/w0  : PRIFILT condition result is 0
6570.501056236:main Q:Reg/w0  :     PRIFILT 'news.crit'
6570.501069057:main Q:Reg/w0  :     pmask:  X  X  X  X  X  X  X  7  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.501190023:main Q:Reg/w0  : PRIFILT condition result is 0
6570.501195270:main Q:Reg/w0  :     PRIFILT 'news.err'
6570.501208511:main Q:Reg/w0  :     pmask:  X  X  X  X  X  X  X  F  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.501322879:main Q:Reg/w0  : PRIFILT condition result is 0
6570.501328029:main Q:Reg/w0  :     PRIFILT 'news.notice'
6570.501341145:main Q:Reg/w0  :     pmask:  X  X  X  X  X  X  X 3F  X  X  X  X  X  X  X  X  X  X  
X  X  X  X  X  X  X  X 
6570.501456323:main Q:Reg/w0  : PRIFILT condition result is 0
6570.501461494:main Q:Reg/w0  :     PRIFILT '*.emerg'
6570.501474573:main Q:Reg/w0  :     pmask:  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  1  
1  1  1  1  1  1  1  1 
6570.501596778:main Q:Reg/w0  : PRIFILT condition result is 1
6570.501602014:main Q:Reg/w0  :     ACTION 9 [builtin:omusrmsg::omusrmsg:*]
6570.501616285:main Q:Reg/w0  : executing action 9
6570.501621661:main Q:Reg/w0  : Called action, logging to builtin:omusrmsg
6570.501638200:main Q:Reg/w0  : wti 0x1e55a80: we need to create a new action worker instance for 
action 9
6570.501647455:main Q:Reg/w0  : Action 9 transitioned to state: itx
6570.501653556:main Q:Reg/w0  : entering actionCalldoAction(), state: itx, actionNbr 9
6570.501658963:main Q:Reg/w0  : 
6570.501794730:main Q:Reg/w0  : Action 9 transitioned to state: rdy
6570.501804424:main Q:Reg/w0  : END batch execution phase, entering to commit phase
6570.501811294:main Q:Reg/w0  : actionCommitAll: action 1, state 1, nbr to commit 0 isTransactiona
l 1
6570.501817299:main Q:Reg/w0  : doTransaction: have commitTransaction IF, using that, pWrkrInfo 0x
1e55bc0
6570.501823086:main Q:Reg/w0  : entering actionCallCommitTransaction(), state: itx, actionNbr 1, n
Msgs 1
6570.501830453:main Q:Reg/w0  : omfile: write to stream, pData->pStrm 0x7fdf78002500, lenBuf 45, s
trt data Mar 18 11:02:50 phoenix root: Test Broadcast

6570.501838364:main Q:Reg/w0  : strm 0x7fdf78002500: file 5(syslog) flush, buflen 45
6570.501845555:main Q:Reg/w0  : strmPhysWrite, stream 0x7fdf78002500, len 45
6570.501861894:main Q:Reg/w0  : strm 0x7fdf78002500: file 5 write wrote 45 bytes
6570.501868452:main Q:Reg/w0  : Action 1 transitioned to state: rdy
6570.501874835:main Q:Reg/w0  : Action 1 transitioned to state: itx
6570.501880751:main Q:Reg/w0  : Action 1 transitioned to state: rdy
6570.501886462:main Q:Reg/w0  : actionCommit, in retry loop, iRet 0
6570.501892786:main Q:Reg/w0  : actionCommitAll: action 2, state 0, nbr to commit 0 isTransactiona
l 1
6570.501899897:main Q:Reg/w0  : actionCommitAll: action 3, state 0, nbr to commit 0 isTransactiona
l 1
6570.501906392:main Q:Reg/w0  : actionCommitAll: action 9, state 0, nbr to commit 0 isTransactiona
l 0
6570.501912074:main Q:Reg/w0  : processBATCH: batch of 1 elements has been processed
6570.501918697:main Q:Reg/w0  : regular consumer finished, iret=0, szlog 0 sz phys 1
6570.501925448:main Q:Reg/w0  : DeleteProcessedBatch: we deleted 1 objects and enqueued 0 objects
6570.501931248:main Q:Reg/w0  : doDeleteBatch: delete batch from store, new sizes: log 0, phys 0
6570.501937522:main Q:Reg/w0  : regular consumer finished, iret=4, szlog 0 sz phys 0
6570.501943253:main Q:Reg/w0  : main Q:Reg/w0: worker IDLE, waiting for work.
root@phoenix:~# 
    
por t3chguy 18.03.2015 / 12:08

2 respostas

0

Você usa $PrivDropToGroup ou $PrivDropToGroupID no arquivo de configuração? Esse grupo tem acesso de gravação aos terminais dos usuários (por padrão, esse será o grupo tty )? Note que (com base na minha leitura do link ) se qualquer um desses itens for especificado, todos os grupos secundários serão descartados.

Os terminais dos usuários podem ser gravados por esse grupo? Seus usuários executam mesg n para desativar isso? Para verificar isso, tente o seguinte ...

-bash-4.1$ tty
/dev/pts/0
-bash-4.1$ ls -l /dev/pts/0
crw--w----. 1 sph9 tty 136, 0 Mar 23 22:59 /dev/pts/0

Para o rsyslog poder gravar nos terminais dos usuários, ele precisa estar rodando como root (o que você diz que quer evitar) ou estar rodando com o grupo que possui acesso de escrita. O exemplo acima é de uma máquina CentOS, você pode descobrir que algumas outras distribuições têm mais permissões abertas (uma caixa do Arch Linux que eu observei tinha acesso de gravação para grupos e outros).

Portanto, se cada terminal for apenas gravável pelo usuário conectado e os membros do grupo tty e rsyslogd estiverem sendo executados como usuário syslog group syslog , não será possível escreva nos terminais. Você poderia (eu acho) testar esta teoria mudando temporariamente o grupo em um de seus ttys (substituindo pts / 0 como apropriado) ...

chgrp rsyslog /dev/pts/0

Se isso funcionar, você pode tentar configurar o rsyslog para ser executado como grupo tty (embora isso possa quebrar outras coisas, se você estiver contando com arquivos de log pertencentes a um grupo específico).

Observe que tudo isso é baseado em uma rápida leitura dos documentos do rsyslog e na experiência de como isso funciona em geral, em vez de experiência específica com versões recentes do rsyslog.

As sessões de login dos usuários são registradas corretamente em utmp? (ou seja, eles aparecem na saída de w ?). Acabou de encontrar o link que sugere que houve um problema com o AppArmor, o rsyslogd e o utmp mas isso é com uma versão anterior.

    
por 23.03.2015 / 23:51
0

Eu tentei adicionar syslog ao grupo tty:

sudo adduser syslog tty

e parece funcionar depois de service rsyslog restart e fazer o login novamente.

E apenas por diversão, a versão mais difícil de ler, mas mais genérica:

adduser  $(awk '/^\$PrivDropToUser/ {print $2}' /etc/rsyslog.conf)  $(stat -c "%G" $(tty))
    
por 10.06.2015 / 15:27