TL, DR: é culpa do Apparmor, e devido ao meu diretório pessoal estar fora de /home
.
Em uma instalação padrão do Ubuntu 10.04, o pacote apparmor é puxado como uma dependência indireta do nível de recomendação do pacote ubuntu-standard . Os logs do sistema ( /var/log/syslog
) mostram que o Apparmor está rejeitando a tentativa do Evince de ler ~/.Xauthority
:
Jul 5 17:58:31 darkstar kernel: [15994724.481599] type=1503 audit(13415 03911.542:168): operation="open" pid=9806 parent=9805 profile="/usr/bin/evince" requested_mask="r::" denied_mask="r::" fsuid=1001 ouid=1001 name="/elsewhere/home/gilles/.Xauthority"
A configuração padrão do Evince para o Apparmor (em /etc/apparmor.d/usr.bin.evince
) é muito permissiva: permite leituras e gravações arbitrárias em todos os diretórios home. No entanto, meu diretório pessoal nesta máquina é um link simbólico para um local não padrão que não está listado na configuração padrão do AppArmor. O acesso é permitido em /home
, mas o local real do meu diretório inicial é /elsewhere/home/gilles
, portanto, o acesso é negado.
Outros aplicativos que podem ser afetados por esse problema incluem:
- Firefox, mas seu perfil é desativado por padrão (pela presença de um link simbólico
/etc/apparmor.d/disable/usr.bin.firefox -> /etc/apparmor.d/usr.bin.firefox
). - impressão em PDF CUPS; Eu não testei, mas espero que falhe em escrever para
~/PDF
.
Minha correção foi editar /etc/apparmor.d/tunables/home.d/local
e adicionar a linha
@{HOMEDIRS}+=/elsewhere/home/
para que o local não padrão dos diretórios pessoais seja reconhecido (observe que o% final/
é importante; veja os comentários em /etc/apparmor.d/tunables/home.d/ubuntu
), depois execute /etc/init.d/apparmor reload
para atualizar as configurações do Apparmor.
Se você não tiver privilégios de administrador e o administrador do sistema não responder, você poderá copiar o binário evince
para um local diferente, como ~/bin
, e ele não será coberto pela política do Apparmor (para que você será capaz de iniciá-lo, mas não terá a segurança extra muito limitada que a Apparmor oferece).
Este problema foi reportado como erro do Ubuntu # 447292 . A resolução lida com o caso quando alguns usuários têm seu diretório home listado em /etc/passwd
outside /home
, mas não em casos como o meu, em que /home/gilles
é um link simbólico.