"Nessun protocollo specificato" quando si esegue vim con sudo


9

Recentemente ho iniziato a ottenere "Nessun protocollo specificato" durante l'utilizzo sudo vim. È solo un avvertimento, suppongo, perché tutto funzionava normalmente (posso aprire, modificare e salvare i file). Il messaggio non appare se lo uso, sudo -E vimquindi penso di aver fatto qualcosa di sbagliato durante la modifica /etc/profilerecente, ma non sono sicuro. Come posso risolvere questo problema?


1
Non tutto funziona normalmente. Il supporto del mouse non funziona, ha bisogno di un protocollo come gpm o il protocollo del mouse xterm.
ninjalj,

Risposte:


8

Un recente aggiornamento ha modificato le impostazioni predefinite per sudo. Se qualcuno ha questo problema controlla la tua sudoerconfigurazione. Da un esempio nella pagina man:

# 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"

Assicurati di avere qualcosa del genere in /etc/sudoers(usa visudoper modificare il file se necessario).

EDIT: non so esattamente da quando, ma almeno xauth 1.0.9 supporta la variabile d'ambiente XAUTHORITY. Impostarlo e lasciare HOME intatto, risolve anche l'avviso del protocollo ed è la soluzione migliore, poiché non vengono create risorse IPC (socket / pipe) scrivibili a livello mondiale che puntano a risorse root (una strada per l'escalation dei privilegi). xauth non esporta automaticamente la variabile nell'ambiente, quindi il modo migliore è impostarla nell'inizializzazione della shell.


3

Secondo questo thread , ci sono due possibili soluzioni al tuo problema:

Inserisci la seguente riga nel mio .bashrcscript di utenti root

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

poi ho copiato .Xauthority anche su root, cioè

sudo cp ~/.Xauthority /root

e ora l'avvertimento è sparito.

Potresti anche provare a correre via gksudo.

Ad ogni modo, vale la pena provare entrambi ...


Ho copiato .Xauthorityper /roote basta!
phunehehe,

No, mi sono sbagliato, dopo il riavvio ho ricevuto l'errore "chiave non valida".
phunehehe,

1
Per quanto mi ricordo il contenuto di un file .Xauthority cambia, quindi dovresti collegarlo in modo simbolico invece di copiarlo.
Adam Byrtek,

2

Sebbene la domanda abbia già alcune risposte, nessuna ha funzionato completamente per me. L'ho risolto attraverso una combinazione di alcuni suggerimenti e alcuni dei miei suggerimenti per la mia distribuzione Debian.

Ho creato un collegamento simbolico al .Xauthorityfile per root e tutti gli altri utenti. Il problema è stato risolto per l'utente root, perché root ha le autorizzazioni di accesso a quel file, ma non per altri utenti. Ho aggiunto l'autorizzazione di sola lettura per tutti gli altri utenti per il file .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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.