Jawaban:
Kedua file mengarah ke tempat yang sama:
$ ls -l /usr/bin/gksudo
lrwxrwxrwx 1 root root 4 2010-09-27 18:23 /usr/bin/gksudo -> gksu
... gksudo
dikaitkan dengan gksu
. Tetapi ini tidak berarti mereka melakukan hal yang sama, jauh dari itu.
Aplikasi dapat mendeteksi perintah yang digunakan untuk menjalankannya. Ini biasanya argv[0]
dalam bahasa C-style atau $0
dalam skrip shell Bourne-style. Aplikasi dapat melihat itu dan dalam hal ini, sebenarnya itu mengubah cara kerjanya. Indikasi pertama ini ada di man gksu
halaman:
gksu is a frontend to su and gksudo is a frontend to sudo.
Jika Anda mencari di sumber ( apt-get source gksu
) untuk run_mode
, Anda akan melihat bagaimana ia mendeteksi ini:
{ /* support gksu_sudo_run */
gchar *myname = g_path_get_basename (argv[0]);
if (!strcmp(myname, "gksudo"))
run_mode = SUDO_MODE;
g_free (myname);
}
Anda dapat mengganti ini dengan --su-mode
/ -w
dan --sudo-mode
/ -S
argumen (sehingga Anda dapat menjalankan perintah setara tanpa perlu gksudo
symlink ... Tapi itu terserah Anda.
Jika Anda ingin tahu bagaimana "mode" ini benar-benar berbeda, hanya ada sedikit jalan keluar gksu
. Anda harus mengikutinya libgksu
. Ini adalah perpustakaan yang benar-benar memeriksa izin sebelum menyerahkan ke sistem.
Jika tidak ada mode yang ditentukan (mis. Anda menelepon gksu
tanpa argumen) pada saat itu mencapai libgksu
, itu akan memeriksa Gconf (seperti yang ditunjukkan oleh Stefano) dan jika itu masih tidak dapat memutuskan, itu akan default ke su
mode.
bash
mengaktifkan mode ketat POSIX ketika dipanggil sebagai sh
. Dan gksu
ini juga menyadari nama doa.
Di Ubuntu (!), Tidak ada perbedaan.
gksu
biasanya akan login pengguna root dan menjalankan aplikasi pada sesi ini. Namun, pada Ubuntu, defaultnya adalah menggunakan "mode sudo", yang setara dengan berjalan gksudo
. Ini karena di ubuntu, Anda tidak dapat masuk sebagai root secara default.
gksudo
adalah ekuivalen grafis sudo
(dan seperti yang ditunjukkan Oli, hanya tautan simbolis ke gksu)
Dari entri gconf dari gksu:
Selanjutnya, tentang perbedaan antara sudo dan gksudo:
Anda seharusnya tidak pernah menggunakan sudo normal untuk memulai aplikasi grafis sebagai root. Anda harus menggunakan gksudo (kdesudo di Kubuntu) untuk menjalankan program tersebut. gksudo set HOME = ~ root, dan salin .Xauthority ke direktori tmp. Ini mencegah file di direktori home Anda menjadi milik root. (AFAICT, ini semua yang spesial tentang lingkungan proses yang dimulai dengan gksudo vs sudo).
- (dari dokumentasi komunitas via Chris Wilson )
Saya tahu ini adalah utas lama, tetapi saya telah diminta untuk memberi tahu Anda tentang perbedaan yang halus namun penting antara gksu
dan gksudo
.
Walaupun saya telah mencari jauh dan keras, saya tidak dapat menemukan perbedaan yang terdokumentasi di mana pun, namun hal itu memang ada. Saya juga belum tahu mengapa ada perbedaan. Saya menemukan ini dengan cara yang sulit ketika saya secara tidak sengaja menghapus beberapa file sistem justru karena perbedaan ini (dibahas di utas di Forum Ubuntu ) - Saya telah menggunakan gksu
, tetapi sejak itu saya selalu memastikan untuk menggunakannya gksudo
.
Untuk meringkas, coba ini.
touch abc
touch abc.tmp
touch abctmp
Jalankan enam perintah berikut. Lima yang pertama memberikan hasil yang sama (diharapkan) (yaitu adil abc.tmp
) sedangkan yang keenam menyertakan file tambahan ( abctmp
) yang tidak seharusnya.
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
Bayangkan masalah ketika Anda mengganti -print
dengan -delete
dalam find
perintah (yang persis apa yang terjadi pada saya, menyebabkan beberapa file sistem dihapus).
Jadi, silakan gunakan gksudo
bukan gksu
.
gksudo
itu setara dengan mengetikgksu --sudo-mode