Eu encontrei esta questão ao tentar executar o rsyslog como um usuário não privilegiado para receber dados syslog remotos de uma máquina de desenvolvimento. Supondo que os outros tenham um caso de uso semelhante, aqui está o que eu encontrei:
Testado no Ubuntu 14.04.
Vários recursos típicos do rsyslog exigem raiz, mas não todos. Se tais recursos forem necessários, geralmente o rsyslog irá reclamar dentro de seus próprios logs.
Exemplos são:
-
imuxsock
- log de syslog local (não pode abrir / dev / log) - você poderia contornar isso com permissiosn - eu não precisava disso
-
imklog
- log do kernel - obviamente precisa de root
-
$FileOwner
- ie chmod - obviamente precisa de root
-
$ProveDropToUser/Group
- Acesso ao console, mensagens de difusão - por exemplo, xconsole etc, ...
Além disso, os módulos de rede funcionam bem, desde que eles usem portas não privilegiadas. Além disso, os diretórios de log / spooling devem estar acessíveis. Vale ressaltar que o rsyslog.conf parece usar caminhos absolutos.
rsyslog.conf está abaixo - eu iria ajustá-lo ainda mais para o registro por host, mas isso está além do escopo:
#################
#### MODULES ####
#################
$ModLoad immark # provides --MARK-- message capability
# NOTE - listen on unprivileged port 2514
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 2514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 2514
###########################
#### 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.
#
$FileCreateMode 0640
$DirCreateMode 0755
$Umask 0022
# These may require root
#$FileOwner syslog
#$FileGroup adm
#$PrivDropToUser syslog
#$PrivDropToGroup syslog
#
# Where to place spool and state files
#
$WorkDirectory /home/user/rsyslog/spool
#
# Include all config files in /etc/rsyslog.d/
#
#$IncludeConfig /etc/rsyslog.d/*.conf
# 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.* /home/user/rsyslog/log/auth.log
*.*;auth,authpriv.none -/home/user/rsyslog/log/syslog
cron.* /home/user/rsyslog/log/cron.log
daemon.* -/home/user/rsyslog/log/daemon.log
kern.* -/home/user/rsyslog/log/kern.log
user.* -/home/user/rsyslog/log/user.log
#
# Some "catch-all" log files.
#
*.=debug;\
auth,authpriv.none;\
news.none;mail.none -/home/user/rsyslog/log/debug
*.=info;*.=notice;*.=warn;\
auth,authpriv.none;\
cron,daemon.none;\
mail,news.none -/home/user/rsyslog/log/messages
Iniciar o daemon requer apenas um apontamento em sua configuração personalizada e a especificação de um arquivo pid diferente para mantê-lo separado do sistema rsyslog (e garantir que você tenha acesso de gravação)
$ rsyslogd -f rsyslog.conf -i ~/rsyslog/pid
Confirme sua execução:
$ ps ux
user 24374 0.0 0.0 347632 1520 ? Ssl 10:18 0:00 rsyslogd -f rsyslog.conf -i /home/user/rsyslog/pid
$ tail ~/rsyslog/log/syslog
May 19 10:44:18 plutonium rsyslogd: [origin software="rsyslogd" swVersion="7.4.4" x-pid="26504" x-info="http://www.rsyslog.com"] start