"No se especificó ningún protocolo" cuando se ejecuta vim con sudo

9

Recientemente empiezo a obtener "No se especificó ningún protocolo" cuando lo uso sudo vim. Es solo una advertencia, supongo, porque todo funcionaba normalmente (puedo abrir, editar y guardar archivos). El mensaje no aparece si lo uso, sudo -E vimasí que creo que hice algo mal al editar /etc/profilerecientemente, pero no estoy seguro. ¿Cómo puedo arreglar esto?

phunehehe
fuente
1
No todo funciona normalmente. La compatibilidad con el mouse no funciona, necesita un protocolo como gpm o el protocolo de mouse xterm.
ninjalj

Respuestas:

8

Una actualización reciente cambió la configuración predeterminada para sudo. Si alguien tiene este problema, verifique su sudoerconfiguración. De un ejemplo en la página del 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"

Asegúrese de tener algo así /etc/sudoers(use visudopara editar el archivo si es necesario).

EDITAR: no sé exactamente desde cuándo, pero al menos xauth 1.0.9 admite la variable de entorno XAUTHORITY. Establecer eso y dejar INICIO intacto, también corrige la advertencia del protocolo y es la mejor solución, ya que no se crean recursos IPC de escritura mundial (sockets / tuberías) que apuntan a los recursos raíz (una vía para la escalada de privilegios). xauth no exporta automáticamente la variable al entorno, por lo que la mejor manera es configurarla en la inicialización de su shell.

phunehehe
fuente
3

De acuerdo con este hilo , hay dos posibles soluciones a su problema:

Pon la siguiente línea en mi .bashrcscript de usuario root

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

luego copié .Xauthority a root también, es decir

sudo cp ~/.Xauthority /root

y ahora la advertencia se ha ido.

También puedes intentar ejecutar via gksudo.

De todos modos, vale la pena probar ambos ...

Justin Ethier
fuente
He copiado .Xauthoritya /rooty eso es todo!
phunehehe
No, estaba equivocado, después de reiniciar recibí el error "clave no válida"
phunehehe
1
Por lo que recuerdo, el contenido de un archivo .Xauthority cambia, por lo que debe vincularlo en lugar de copiarlo.
Adam Byrtek
2

Aunque la pregunta ya tiene algunas respuestas, ninguna me funcionó por completo. Lo resolví mediante una combinación de algunas sugerencias anteriores y algunos fragmentos míos para mi distribución de Debian.

Hice un enlace simbólico al .Xauthorityarchivo para root y todos los demás usuarios. El problema se resolvió para el usuario root, porque el root tiene permisos de acceso a ese archivo, pero no para otros usuarios. Agregué permiso de solo lectura para todos los demás usuarios para el archivo .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
fuente