Permissões em / var / log reset na inicialização

6

Eu testei e confirmei que após a reinicialização, as permissões são redefinidas em /var/log de volta para qualquer que seja o padrão para cada distribuição / versão listada abaixo. A questão é, por quê?

  • CentOS 7
  • Ubuntu > = 15,04
  • Debian 8/9

Pelo que eu posso dizer, as permissões padrão para o CentOS 7 e o Debian 8/9 são 755 , root:root . As permissões padrão para o Ubuntu 15.04+ são 775 , root:syslog . Se eu instalar o rsyslog upstream do PPA, as permissões padrão se tornarão 755 (confirmado no Ubuntu 16.04, presumivelmente para versões do Ubuntu entre 15.04 e 16.04 também).

Qualquer tentativa de alterar as permissões em /var/log do padrão resulta em uma redefinição, presumivelmente na próxima inicialização. Eu li a sugestão de alguém em um post relacionado que poderia ser as configurações do rsyslog no trabalho, mas alterei essas configurações para corresponder às minhas expectativas e até mesmo usei algumas que não funcionariam (por exemplo, 700) e o resultado ainda era o mesmo: redefinir de volta para o que quer que seja o padrão.

Eu, então, desinstalei o rsyslog (uma VM com uma instalação de rsyslog padrão, outra com o rsyslog upstream) e as permissões ainda foram redefinidas, então, evidentemente, o trabalho de redefinição não é feito pelo rsyslog.

Isso é algo específico para o systemd? Esta é uma configuração que posso sobrescrever e ter "pau" entre as reinicializações?

Agradecemos antecipadamente por qualquer ajuda que você possa fornecer.

P.S.

Meu teste foi realizado em instalações simples da distro usando o LVM, mas com um volume em uma tentativa de descartar opções de montagem para o problema de lv.

    
por deoren 10.07.2017 / 02:21

1 resposta

7

Ainda estou investigando os detalhes, mas parece que esses arquivos desempenham um papel no gerenciamento de permissões de /var/log no momento da inicialização:

  • /usr/lib/tmpfiles.d/var.conf
  • /usr/lib/tmpfiles.d/00rsyslog.conf

Ironicamente, encontrei-os quando executei grep -ri '/var/log' /var/log em uma caixa do Ubuntu 16.04 e vi esta mensagem:

./syslog.1:Jul  9 21:18:15 ubuntu-virtual-machine systemd-tmpfiles[616]: [/usr/lib/tmpfiles.d/var.conf:14] Duplicate line for path "/var/log", ignoring.

Eu olhei no arquivo e achei isso:

#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

q /var 0755 - - -

L /var/run - - - - ../run

d /var/log 0755 - - -
f /var/log/wtmp 0664 root utmp -
f /var/log/btmp 0600 root utmp -

d /var/cache 0755 - - -

d /var/lib 0755 - - -

d /var/spool 0755 - - -

Eu comecei a refinar os valores para a linha d /var/log 0755 - - - , mas sem nenhuma mudança perceptível nos meus esforços, olhei em volta e encontrei o arquivo /usr/lib/tmpfiles.d/00rsyslog.conf .

Nesse arquivo:

# Override systemd's default tmpfiles.d/var.conf to make /var/log writable by
# the syslog group, so that rsyslog can run as user.
# See tmpfiles.d(5) for details.

# Type Path    Mode UID  GID  Age Argument
d /var/log 0775 root syslog -

root@ubuntu-virtual-machine:/usr/lib/tmpfiles.d# dpkg -S /usr/lib/tmpfiles.d/00rsyslog.conf

rsyslog: /usr/lib/tmpfiles.d/00rsyslog.conf

Portanto, o pacote rsyslog fornece um arquivo de inclusão conf que tenta substituir os valores definidos no arquivo tmpfiles.d/var.conf conf.

O resultado é que, ao desinstalar o rsyslog, as configurações do arquivo tmpfiles.d/var.conf conf se aplicam, que neste caso é 0755 .

Vou precisar pesquisar mais sobre se tmpfiles.d é destinado apenas a mantenedores de pacotes ou se os administradores também precisam gerenciar arquivos nessa área.

Editar:

Acontece que há três diretórios, com o primeiro tendo maior precedência (e destinado a administradores usarem para sobrescrever configurações dos outros dois):

  1. /etc/tmpfiles.d/*.conf
  2. /run/tmpfiles.d/*.conf
  3. /usr/lib/tmpfiles.d/*.conf

Mais informações:

por 10.07.2017 / 04:47