Ich bin auf diese Frage gestoßen, als ich nach etwas völlig Unabhängigem gesucht habe, aber ich dachte, ich würde die folgende wichtige Unterscheidung hinzufügen, die bisher überhaupt nicht erwähnt wurde:sudoedit führt Ihren Editor nicht als root aus.
$ sudo vim /etc/farts.conf
Führt vim einfach als root aus und erlaubt ihm, die Datei zu lesen. Der Nachteil ist, dass der Editor jetzt auch als root läuft und alles machen kann. Wenn Sie einem Benutzer nur erlauben wollten, eine Konfigurationsdatei zu bearbeiten und sonst nichts, haben Sie ihm leider nur root gegeben auf das ganze System. Nichts hindert mich daran, eine Shell von vim mit :sh
zu erzeugen oder :!command
, und da es sich um untergeordnete Prozesse handelt, werden sie auch als root ausgeführt.
Andererseits:
$ sudoedit /etc/farts.conf
wird tatsächlich anders funktionieren. Es erstellt eine Kopie mit einem eindeutigen Namen in /tmp mit Berechtigungen, die nur für Ihren Benutzer gesperrt sind, und erzeugt dann Ihren Editor normal ohne Root-Rechte auf dieser Kopie.
Sobald Sie Ihren Editor verlassen, vergleicht er die temporäre Datei und die Originaldatei und ersetzt das Original sicher durch Ihre Bearbeitung, falls es sich geändert hat.
In diesem Szenario wird es möglich, einem Benutzer zu erlauben, eine Systemdatei zu bearbeiten, ihm aber nicht zu erlauben, zufällige Binärdateien als root auszuführen oder überall im Dateisystem zu stöbern.
Das ist hauptsächlich der eigentliche Unterschied, der Rest, der erwähnt wurde, sind nur nette Nebeneffekte.
Zunächst einmal sudo vim
erwähnt bereits explizit Ihren Standardeditor, was nicht notwendig ist, wenn Sie ihn in $EDITOR
definiert haben . sudoedit
erspart Ihnen die Definition des Editors jedes Mal, wenn Sie etwas bearbeiten möchten – und auf einem Mehrbenutzersystem ermöglicht es jedem, den Editor zu verwenden, den er persönlich mag.
Wie? Stellen Sie sich ein System vor, bei dem normale Benutzer nur sudo
erhalten Berechtigungen zum Bearbeiten bestimmter Dateien. Sie dürfen sudo
nicht ausführen mit allem anderen aber. Sie müssten ihnen sudo vi
erlauben und sudo vim
und sudo nano
und sudo emacs
und sudo pico
(und so weiter). Anstatt das tun zu müssen, könnten Sie ihnen einfach sudoedit
erlauben die Datei, mit ihrer Wahl der Einstellung $EDITOR
zu was sie mögen. (Stellen Sie sich vor, Sie würden einen Emacs-Liebhaber zwingen, Vim zu verwenden …)
Ein weiteres Problem ist, dass wenn Ihr $EDITOR
auf vim
eingestellt ist , und Sie haben Anpassungseinstellungen dafür in .vimrc
Ihres Benutzers , werden diese Einstellungen nicht verwendet, wenn Sie sudo vim
verwenden oder sudo $EDITOR
. sudoedit
behält jedoch die Umgebung des aufrufenden Benutzers und damit Ihre Einstellungen bei.
Siehe auch:Was ist so toll an sudoedit?