Apakah ada perbedaan antara perilaku gksu foo
dan gksudo foo
?
Bisakah mereka digunakan secara bergantian?
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 sebagaish
. Dangksu
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 berjalangksudo
. Ini karena di ubuntu, Anda tidak dapat masuk sebagai root secara default.gksudo
adalah ekuivalen grafissudo
(dan seperti yang ditunjukkan Oli, hanya tautan simbolis ke gksu)Dari entri gconf dari gksu:
Selanjutnya, tentang perbedaan antara sudo dan gksudo:
sumber
Saya tahu ini adalah utas lama, tetapi saya telah diminta untuk memberi tahu Anda tentang perbedaan yang halus namun penting antara
gksu
dangksudo
.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 menggunakannyagksudo
.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.Bayangkan masalah ketika Anda mengganti
-print
dengan-delete
dalamfind
perintah (yang persis apa yang terjadi pada saya, menyebabkan beberapa file sistem dihapus).Jadi, silakan gunakan
gksudo
bukangksu
.sumber
gksudo
itu setara dengan mengetikgksu --sudo-mode