“Nenhum protocolo especificado” ao executar o vim com sudo

9

Recentemente, começo a receber "Nenhum protocolo especificado" ao usar sudo vim. É apenas um aviso, eu acho, porque tudo estava funcionando normalmente (eu posso abrir, editar e salvar arquivos). A mensagem não aparece se eu usar, sudo -E vimentão acho que fiz algo errado ao editar /etc/profilerecentemente, mas não tenho certeza. Como posso consertar isso?

phunehehe
fonte
1
Nem tudo está funcionando normalmente. O suporte ao mouse não está funcionando, ele precisa de um protocolo como o gpm ou o xterm mouse protocol.
Ninjalj

Respostas:

8

Uma atualização recente alterou as configurações padrão para sudo. Se alguém tiver esse problema, verifique sua sudoerconfiguração. De um exemplo na página do manual:

# Run X applications through sudo; HOME is used to find the
# .Xauthority file.  Note that other programs use HOME to find
# configuration files and this may lead to privilege escalation!
Defaults env_keep += "DISPLAY HOME"

Verifique se você tem algo assim /etc/sudoers(use visudopara editar o arquivo, se necessário).

EDIT: Eu não sei exatamente desde quando, mas pelo menos o xauth 1.0.9 suporta a variável de ambiente XAUTHORITY. Definir isso e deixar o HOME intocado também corrige o aviso do protocolo e é a melhor solução, pois nenhum recurso IPC gravável em todo o mundo (soquetes / tubulações) é criado apontando para recursos raiz (um caminho para a escalada de privilégios). O xauth não exporta automaticamente a variável para o ambiente, portanto, a melhor maneira é configurá-la na inicialização do seu shell.

phunehehe
fonte
3

De acordo com este segmento , existem duas soluções possíveis para o seu problema:

Coloque a seguinte linha no meu .bashrcscript de usuários root

export XAUTHORITY=/home/<user>/.Xauthority

copiei .Xauthority para fazer root também, ou seja,

sudo cp ~/.Xauthority /root

e agora o aviso se foi.

Você também pode tentar executar via gksudo.

De qualquer forma, vale a pena tentar ...

Justin Ethier
fonte
Copiei .Xauthoritya /roote é isso!
## phrehehe #
Não, eu estava errado, após a reinicialização, recebi o erro "chave inválida".
phunehehe
1
Tanto quanto me lembro, o conteúdo de um arquivo .Xauthority é alterado, portanto, você deve vinculá-lo novamente em vez de copiar.
Adam Byrtek 31/03
2

Embora a pergunta já tenha algumas respostas, nenhuma funcionou completamente para mim. Eu o resolvi através de uma combinação das poucas sugestões acima e alguns pedaços meus para minha distribuição Debian.

Fiz um link simbólico para o .Xauthorityarquivo root e todos os outros usuários. O problema foi resolvido para o usuário root, porque o root tem permissões de acesso a esse arquivo, mas não para outros usuários. Adicionei permissão somente leitura para todos os outros usuários do arquivo .Xauthority.

#do this for all other users who do not have .Xauthority file    
ln -s /home/userwithxauth/.Xauthority .Xauthority

#run the following command to give read only access permission to .Xauthority file
chmod 644 /home/userwithxauth/.Xauthority
McNulty
fonte