O que faria com que o / var / log / syslog só fosse gravado ao executar o rsyslog -d?

0

Eu tenho um sistema onde o / var / log / syslog é gravado como esperado, e outro sistema onde ele não pode ser escrito a menos que eu pare o serviço rsyslog e execute-o manualmente com "rsyslog -d".

Como depuro esse problema? Eu tentei apagar tudo em /etc/rsyslog.d/, recriá-lo.

Eu tentei remover e reinstalar o rsyslogd

apt-get remove rsyslogd and apt-get install rsyslogd ubuntu-minimal

e, em seguida, verificou se o serviço está sendo executado, mas apenas os outros logs estão sendo atualizados, e não / var / log / syslog.

Estou apenas tentando ter a configuração padrão do rsyslog funcionando.

Eu notei que / var / log / syslog é root: adm em vez de syslog: adm. Os arquivos de log que são usuário do syslog funcionam ok. Se eu fizer / var / log / syslog syslog: adm, então ele começa a funcionar. Talvez as permissões estejam quebradas de alguma forma. Não logrotate alterar as permissões / criar esses arquivos novamente mais tarde? Não tenho certeza se a correção será permanente ou não.

    
por Bruce Kirkpatrick 18.01.2014 / 06:41

1 resposta

0

Você já determinou que é um problema de permissões de arquivo e que o usuário especificado para o serviço em /etc/rsyslog.conf não pode gravar no arquivo de log. No entanto, seu usuário de logon (presumivelmente root) tem acesso quando executado de forma interativa. Aqui está um exemplo da seção de rsyslog.conf que especifica a configuração do usuário do serviço:

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

Quanto ao logrotate, você pode configurar como os arquivos syslog são gerenciados, veja /etc/logrotate.conf e /etc/logrotate.d/rsyslog . Aqui está um exemplo:

/var/log/syslog
{
        rotate 7
        daily
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                reload rsyslog >/dev/null 2>&1 || true
        endscript
}

No meu sistema de teste, logrotate.conf também contém:

# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# create new (empty) log files after rotating old ones
create

De man logrotate :

create mode owner group
    Immediately after rotation (before the postrotate script is run) the log file is created (with the same name  as  the  log
    file  just  rotated).   mode specifies the mode for the log file in octal (the same as chmod(2)), owner specifies the user
    name who will own the log file, and group specifies the group the log file will belong to. Any of the log file  attributes
    may  be omitted, in which case those attributes for the new file will use the same values as the original log file for the
    omitted attributes. This option can be disabled using the nocreate option.

Portanto, no meu caso, a opção criar determina como os novos atributos de arquivo são definidos, porque as opções especificadas em /etc/logrotate.d/rsyslog não substituem esse cenário global. Quando o modo , proprietário e grupo não são especificados, o logrotate usa os mesmos valores que o arquivo de log original.

Espero que você comece. Boa sorte!

    
por Alan 06.05.2014 / 23:18