Gibt es einen Unterschied zwischen dem Verhalten von gksu foo
und gksudo foo
?
Können sie austauschbar verwendet werden?
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 wirdsh
. Undgksu
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 entsprichtgksudo
. Dies liegt daran, dass Sie sich unter Ubuntu nicht standardmäßig als root anmelden können .gksudo
ist das grafische Äquivalent vonsudo
(und wie Oli betont, nur ein symbolischer Link zu gksu)Aus dem gconf-Eintrag von gksu:
Über den Unterschied zwischen sudo und gksudo:
quelle
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 verwendengksudo
.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.Stellen Sie sich die Probleme auf, wenn Sie ersetzen
-print
mit-delete
imfind
Kommando (das ist genau das , was mir passiert ist , so dass einige Systemdateien gelöscht werden).Also bitte
gksudo
statt verwendengksu
.quelle
gksudo
dies der Eingabe entsprichtgksu --sudo-mode