"Kein Protokoll angegeben", wenn vim mit sudo ausgeführt wird

9

Vor kurzem bekomme ich bei der Verwendung "Kein Protokoll angegeben" sudo vim. Es ist nur eine Warnung, denke ich, weil alles normal funktionierte (ich kann Dateien öffnen, bearbeiten und speichern). Die Meldung wird nicht angezeigt, wenn ich sie verwende. sudo -E vimIch glaube, ich habe /etc/profilekürzlich beim Bearbeiten etwas falsch gemacht , bin mir aber nicht sicher. Wie kann ich das beheben?

Phunehehe
quelle
1
Nicht alles funktioniert normal. Die Mausunterstützung funktioniert nicht, sie benötigt ein Protokoll wie gpm oder das xterm-Mausprotokoll.
Ninjalj

Antworten:

8

Bei einem kürzlich durchgeführten Upgrade wurden die Standardeinstellungen für geändert sudo. Wenn jemand dieses Problem hat, überprüfen Sie Ihre sudoerKonfiguration. Aus einem Beispiel in der Manpage:

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

Stellen Sie sicher, dass Sie so etwas in haben /etc/sudoers(verwenden Sie visudo, um die Datei zu bearbeiten, wenn Sie müssen).

EDIT: Ich weiß nicht genau seit wann, aber mindestens xauth 1.0.9 unterstützt die Umgebungsvariable XAUTHORITY. Wenn Sie dies festlegen und HOME unberührt lassen, wird auch die Protokollwarnung behoben und es ist die bessere Lösung, da keine weltweit beschreibbaren IPC-Ressourcen (Sockets / Pipes) erstellt werden, die auf Stammressourcen verweisen (ein Weg zur Eskalation von Berechtigungen). xauth exportiert die Variable nicht automatisch in die Umgebung. Der beste Weg ist, sie in der Initialisierung Ihrer Shell festzulegen.

Phunehehe
quelle
3

Laut diesem Thread gibt es zwei mögliche Lösungen für Ihr Problem:

Fügen Sie die folgende Zeile in das .bashrcSkript meines Root-Benutzers ein

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

dann habe ich .Xauthority auch auf root kopiert, dh

sudo cp ~/.Xauthority /root

und jetzt ist die Warnung weg.

Sie können auch versuchen, über zu laufen gksudo.

Auf jeden Fall sind beide einen Versuch wert ...

Justin Ethier
quelle
Ich kopierte .Xauthorityzu /rootund das ist es!
Phunehehe
Nein, ich habe mich geirrt. Nach dem Neustart wurde der Fehler "Ungültiger Schlüssel" angezeigt.
Phunehehe
1
Soweit ich mich erinnere, ändert sich der Inhalt einer .Xauthority-Datei, daher sollten Sie sie mit einem Symlink verknüpfen, anstatt sie zu kopieren.
Adam Byrtek
2

Obwohl die Frage bereits einige Antworten hat, hat keine für mich vollständig funktioniert. Ich habe es durch eine Kombination der oben genannten Vorschläge und einiger meiner Vorschläge für meine Debian-Distribution gelöst.

Ich habe einen Symlink zur .XauthorityDatei für root und alle anderen Benutzer erstellt. Das Problem wurde für Root-Benutzer behoben, da Root über Zugriffsberechtigungen für diese Datei verfügt, nicht jedoch für andere Benutzer. Ich habe für alle anderen Benutzer eine schreibgeschützte Berechtigung für die .Xauthority-Datei hinzugefügt.

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