avahi-daemon falha ao iniciar com “Falha ao chroot (): Permissão negada”. Mas somente sem redirecionamento stderr-IO

0

Após uma atualização recente, o avahi-daemon não está mais iniciando. Além disso, o comportamento difere se eu redirecionar o stderr para um arquivo ou não.

Se eu executar avahi com a opção de depuração ( avahi-daemon --debug ), recebo a seguinte saída:

Found user 'avahi' (UID 84) and group 'avahi' (GID 84).
Successfully dropped root privileges.
avahi-daemon 0.6.32 starting up.
Failed to chroot(): Permission denied
chroot.c: chroot() helper started
chroot.c: chroot() helper got command 0d
avahi-daemon 0.6.32 exiting.
chroot.c: chroot() helper got command 0c
chroot.c: chroot() helper exiting with return value 0

Se eu adicionar o redirecionamento de E / S de stderr ( avahi-daemon --debug 2>avahi.stderr ), obtenho um comportamento diferente:

No terminal ( stdout ), recebo

File size limit exceeded

e avahi.stderr agora contém

Found user 'avahi' (UID 84) and group 'avahi' (GID 84).
Successfully dropped root privileges.

Mas, nenhum processo avahi está sendo executado.

Quando eu apenas redireciono 2>/dev/stdin , obtenho o mesmo comportamento que sem redirecionamento.

Resultados de strace correspondentes:

strace avahi-daemon --debug :

Devido à limitação de tamanho no stackexchange, este está em um pastebin: link

strace avahi-daemon --debug 2>strace.out (com File size limit exceeded na stdout):

Devido à limitação de tamanho no stackexchange, esse está em um pastebin: link

E meu ambiente (saída de env , meu nome de usuário não raiz foi censurado) é o seguinte:

Devido à limitação de tamanho do stackexchange, este está em um pastebin: link

Versão do avahi: avahi-daemon -V imprime avahi-daemon 0.6.32 .

Sobre a configuração:

% ls -la /etc | grep avahi
drwx------   3 root     root       4096 Mar  9 13:29 avahi

% ls -la /etc/avahi
drwx------   3 root root  4096 Mar  9 13:29 .
drwxr-xr-x 242 root root 20480 Mar  9 13:29 ..
-rwxr-xr-x   1 root root  2509 Feb 19 13:52 avahi-autoipd.action
-rw-r--r--   1 root root  1747 Feb 19 13:52 avahi-daemon.conf
-rw-r--r--   1 root root  1747 Dec 25 18:22 avahi-daemon.conf.pacnew
lrwxrwxrwx   1 root root    38 Mar  9 13:25 avahi-daemon.conf.pacsave -> /usr/local/etc/avahi/avahi-daemon.conf
-rwxr-xr-x   1 root root  2743 Feb 19 13:52 avahi-dnsconfd.action
-rw-r--r--   1 root root  1121 Feb 19 13:52 hosts
drwx------   2 root root  4096 Mar  9 13:29 services

Bem, /usr/local/etc/avahi/avahi-daemon.conf é a configuração que eu costumo usar, ela foi substituída durante a atualização. Se eu usar essa configuração, obtenho o mesmo comportamento e não importa se /etc/avahi/avahi-daemon.conf é um arquivo regular no local ou um symlink.

Aqui, publico o conteúdo de /etc/avahi/avahi-daemon.conf como foi para criar esta pergunta:

# This file is part of avahi.
#
# avahi 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 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.

# See avahi-daemon.conf(5) for more information on this configuration
# file!

[server]
#host-name=foo
#domain-name=local
#browse-domains=0pointer.de, zeroconf.org
use-ipv4=yes
use-ipv6=yes
#allow-interfaces=eth0
#deny-interfaces=eth1
#check-response-ttl=no
#use-iff-running=no
#enable-dbus=yes
#disallow-other-stacks=no
#allow-point-to-point=no
#cache-entries-max=4096
#clients-max=4096
#objects-per-client-max=1024
#entries-per-entry-group-max=32
ratelimit-interval-usec=1000000
ratelimit-burst=1000

[wide-area]
enable-wide-area=yes

[publish]
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
publish-hinfo=no
publish-workstation=no
#publish-domain=yes
#publish-dns-servers=192.168.50.1, 192.168.50.2
#publish-resolv-conf-dns-servers=yes
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no

[reflector]
#enable-reflector=no
#reflect-ipv=no

[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=768
rlimit-stack=4194304
rlimit-nproc=3

Eu uso o Arch Linux, com OpenRC (ou seja, sem systemd), e o comportamento é o mesmo, quer eu use o pacote avahi ou avahi-nosystemd . Eu tive alguns problemas com avahi antes, de tal forma que ele primeiro correu e depois caiu.

O que pode estar acontecendo aqui?

    
por Golar Ramblar 09.03.2016 / 14:26

2 respostas

0

A solução:

/etc/avahi/ precisa ser acessado por avahi-daemon depois de ter deixado privilégios de root.

Portanto, /etc/avahi/ e todos os subdiretórios devem ter o modo 755 e o modo de todos os arquivos 644 , enquanto permanecerem com o usuário root e o grupo root .

    
por 09.03.2016 / 14:49
0

Relacionado a outro problema mencionado, você recebe um erro "Limite de tamanho de arquivo excedido" do avahi-daemon porque define seu tamanho de arquivo rlimit como 0 em sua configuração, e seu redirecionamento para um arquivo cria um arquivo com um tamanho maior que zero.

Para desabilitar isso, comente o rlimit-fsize = 0 na configuração avahi, ou seja,

[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
#rlimit-fsize=0
    
por 12.02.2018 / 00:11