Odpowiedzi:
Oba pliki wskazują to samo miejsce:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudojest dowiązany do gksu. Ale to nie znaczy, że robią to samo, wręcz przeciwnie.
Aplikacje mogą wykryć polecenie użyte do jego uruchomienia. Zazwyczaj jest to argv[0]w językach $0w stylu C lub w skryptach powłoki w stylu Bourne'a. Aplikacja może na to patrzeć iw tym przypadku faktycznie zmienia sposób działania. Pierwsze wskazanie tego znajduje się na man gksustronie:
gksu is a frontend to su and gksudo is a frontend to sudo.
Jeśli spojrzysz na źródło ( apt-get source gksu) run_mode, zobaczysz, jak to wykrywa:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Możesz to zmienić za pomocą argumentów --su-mode/ -wi --sudo-mode/ -S(abyś mógł uruchamiać równoważne polecenia bez potrzeby użycia gksudodowiązania symbolicznego ... Ale to zależy od ciebie.
Jeśli chcesz wiedzieć, jak naprawdę różnią się te „tryby”, możesz tylko trochę uciec gksu. Musisz to śledzić libgksu. Jest to biblioteka, która faktycznie sprawdza uprawnienia przed przekazaniem do systemu.
Jeśli nie zostanie określony żaden tryb (np. Wywołujeszgksu bez argumentów), zanim osiągnie libgksu, sprawdzi Gconf (jak wskazuje Stefano), a jeśli nadal nie będzie mógł zdecydować, przejdzie w sutryb domyślny .
bashwłącza tryb ścisły POSIX po wywołaniu jako sh. I gksu jest również świadomy nazwy wywołania.
W Ubuntu (!) Nie ma różnicy.
gksunormalnie logowałby się jako użytkownik root i uruchamiał aplikację w tej sesji. Jednak w Ubuntu domyślnie używa „trybu sudo”, który jest równoważny z uruchomieniem gksudo. Wynika to z faktu, że na Ubuntu domyślnie nie można zalogować się jako root .
gksudojest graficznym odpowiednikiem sudo(i jak zauważa Oli, tylko symboliczny link do gksu)
Z wpisu gksu w gconf:

Ponadto na temat różnicy między sudo i gksudo:
Nigdy nie powinieneś używać normalnego sudo do uruchamiania aplikacji graficznych jako root. Powinieneś używać gksudo (kdesudo na Kubuntu) do uruchamiania takich programów. gksudo ustawia HOME = ~ root i kopiuje .Xauthority do katalogu tmp. Zapobiega to posiadaniu plików w katalogu domowym przez root. (AFAICT, to wszystko, co jest szczególne w środowisku uruchomionego procesu z gksudo vs. sudo).
- (z dokumentacji społeczności za pośrednictwem Chrisa Wilsona )
Wiem, że to stary wątek, ale zostałem poproszony o opowiedzenie o subtelnej, ale zasadniczej różnicy między gksui gksudo.
Chociaż długo i intensywnie szukałem, nigdzie nie mogę znaleźć udokumentowanej różnicy, a jednak ona istnieje. Nie dowiedziałem się również, dlaczego jest taka różnica. Znalazłem to w trudny sposób, gdy przypadkowo usunąłem niektóre pliki systemowe właśnie z powodu tej różnicy (omówione w wątku na forach Ubuntu ) - korzystałem gksu, ale od tego czasu zawsze starałem się używać gksudo.
Podsumowując, spróbuj tego.
touch abctouch abc.tmptouch abctmpUruchom następujące sześć poleceń. Pierwsze pięć daje taki sam (oczekiwany) wynik (tj. Po prostu abc.tmp), podczas gdy szósty zawiera dodatkowy plik ( abctmp), którego nie powinien.
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
Wyobraź sobie problemów podczas wymiany -printze -deletew findpoleceniu (co jest dokładnie to, co się ze mną stało, powodując niektóre pliki systemowe do usunięcia).
Więc użyj gksudozamiast gksu.
gksudojest to równoważne z pisaniemgksu --sudo-mode