Antworten:
Beide Dateien verweisen auf denselben Ort:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
ist verbunden mit gksu
. Aber das bedeutet nicht, dass sie die gleichen Dinge tun , weit davon entfernt.
Anwendungen können den zum Ausführen verwendeten Befehl erkennen. Dies ist normalerweise argv[0]
in C-Sprachen oder $0
in Bourne-Shell-Skripten der Fall. Die Anwendung kann das betrachten und in diesem Fall ändert sie tatsächlich, wie es funktioniert. Der erste Hinweis darauf ist auf der man gksu
Seite:
gksu is a frontend to su and gksudo is a frontend to sudo.
Wenn Sie in der Quelle ( apt-get source gksu
) nach suchen run_mode
, werden Sie sehen, wie dies erkannt wird:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Sie können dies mit den Argumenten --su-mode
/ -w
und --sudo-mode
/ überschreiben -S
(so dass Sie gleichwertige Befehle ausführen können, ohne den gksudo
Symlink zu benötigen ... Aber das liegt bei Ihnen.
Wenn Sie wissen möchten, wie sich diese "Modi" wirklich unterscheiden, müssen Sie nur ein bisschen ausweichen gksu
. Sie müssen es in folgen libgksu
. Dies ist die Bibliothek, die tatsächlich die Berechtigungen überprüft, bevor sie an das System übergeben wird.
Wenn gksu
zum Zeitpunkt des Erreichens kein Modus angegeben ist (z. B. Sie rufen ohne Argumente auf) libgksu
, überprüft es Gconf (wie Stefano betont), und wenn es sich immer noch nicht entscheiden kann, wird standardmäßig der su
Modus verwendet.
bash
strengen POSIX-Modus, wenn er als aufgerufen wird sh
. Und gksu
ist auch bewusst Aufruf Namen.
In Ubuntu (!) Gibt es keinen Unterschied.
gksu
würde sich normalerweise beim root-Benutzer anmelden und in dieser Sitzung eine App ausführen. Unter Ubuntu wird jedoch standardmäßig der "Sudo-Modus" verwendet, der dem Ausführen entspricht gksudo
. Dies liegt daran, dass Sie sich unter Ubuntu nicht standardmäßig als root anmelden können .
gksudo
ist das grafische Äquivalent von sudo
(und wie Oli betont, nur ein symbolischer Link zu gksu)
Aus dem gconf-Eintrag von gksu:
Über den Unterschied zwischen sudo und gksudo:
Sie sollten niemals normales sudo verwenden, um grafische Anwendungen als root zu starten. Sie sollten gksudo (kdesudo auf Kubuntu) verwenden, um solche Programme auszuführen. gksudo setzt HOME = ~ root und kopiert .Xauthority in ein tmp-Verzeichnis. Dies verhindert, dass Dateien in Ihrem Home-Verzeichnis dem Root gehören. (AFAICT, das ist das Besondere an der Umgebung des gestarteten Prozesses mit gksudo vs. sudo).
- (aus der Community-Dokumentation über Chris Wilson )
Ich weiß, dass dies ein alter Thread ist, aber ich wurde gebeten, Ihnen von einem subtilen, aber wesentlichen Unterschied zwischen gksu
und zu erzählengksudo
.
Obwohl ich lange und intensiv gesucht habe, kann ich nirgendwo einen dokumentierten Unterschied finden, und dennoch existiert er. Ich habe auch nicht herausgefunden, warum es einen Unterschied gibt. Ich fand das schwierig, als ich versehentlich einige Systemdateien gerade wegen dieses Unterschieds löschte (in einem Thread in den Ubuntu-Foren besprochen ) - ich hatte es verwendet gksu
, aber seitdem habe ich immer darauf geachtet, es zu verwenden gksudo
.
Versuchen Sie dies zusammenfassend.
touch abc
touch abc.tmp
touch abctmp
Führen Sie die folgenden sechs Befehle aus. Die ersten fünf geben das gleiche (erwartete) Ergebnis (dh nur abc.tmp
), während die sechste eine zusätzliche Datei ( abctmp
) enthält, die es nicht sollte.
find . -regextype posix-egrep -regex '.*\.tmp' -print
sudo find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksudo --su-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu --sudo-mode -- find . -regextype posix-egrep -regex '.*\.tmp' -print
gksu -- find . -regextype posix-egrep -regex '.*\.tmp' -print
Stellen Sie sich die Probleme auf, wenn Sie ersetzen -print
mit -delete
im find
Kommando (das ist genau das , was mir passiert ist , so dass einige Systemdateien gelöscht werden).
Also bitte gksudo
statt verwenden gksu
.
gksudo
dies der Eingabe entsprichtgksu --sudo-mode