gksu (do) juga memiliki konfigurasi sendiri yang variabel lingkungan untuk dilewati ke anak, terpisah dari su (do) sendiri. Sebagai contoh, jika konfigurasi sudoers Anda menentukan! Keep_env, kurangnya $ DISPLAY dapat mencegah aplikasi grafis berjalan, tetapi gksudo harus bekerja. Anda dapat menemukan beberapa detail di git.debian.org/?p=users/kov/gksu-polkit.git;a=blob;f=common/… atau live.gnome.org/gksu .
ephemient
@ephemient Jadi selain prompt grafis, sudo -Esetara dengan gksudo?
Saya ingin menekankan bahwa ini bukan perbedaan krusial sama sekali, dan jawaban ini cukup menyesatkan bagi pemula. Perbedaan utama dijelaskan di sini: askubuntu.com/a/11766/81034 dan jawaban di bawah ini (yang dikaitkan dengan @johnywhy) melangkah lebih jauh dari itu untuk menambahkan nuansa pada itu. Silakan baca pertanyaan askubuntu daripada mengandalkan jawaban yang menyesatkan ini.
sundar - Reinstate Monica
31
gksudoadalah frontend berbasis GTK dari sudo(BTW, kdesudoadalah frontend berbasis Qt), namun (secara default) menangani variabel lebih lingkungan ( HOME, XAUTHORITY, dll) dari sudosehingga membuat menjalankan perintah sebagai root lebih aman.
Sejauh yang saya bisa lihat hanya jawaban @Logics sudah cukup benar (@Ignacio Vazquez-Abrams tidak lengkap). Berikut adalah klarifikasi coba-untuk-menghindari ke @Davros @knitti jawaban / komentar (Harap hapus / edit ketika tidak diperlukan):
Meskipun kedua perintah memang mewakili sudo, UI yang digunakan BUKAN satu-satunya perbedaan dari dua perintah.
Menjalankan program GUI BUKAN satu-satunya situasi ketika Anda harus menggunakan gk / kdesudo, sebaliknya Anda harus menggunakan gk / kdesudo setiap kali Anda tidak dapat menentukan apakah perintah akan membuat / menulis file ke direktori home Anda (yang menunjuk HOMEvariabel lingkungan ke dalam sudoperintah dalam beberapa sistem dan situasi). Tidak semua aplikasi GUI menulis ke direktori home Anda dan tidak semua aplikasi CLI tidak , jadi jenis perintah bukanlah titik kunci.
Anda masih dapat menggunakan sudoperintah untuk meluncurkan aplikasi GUI sebagai root (untuk melihat output konsol aplikasi sebagai contoh), namun Anda perlu menangani HOME(dan yang lainnya seperti XAUTHORITY,, DISPLAYmetode input terkait metode, dll.) Variabel lingkungan dengan benar sehingga bahwa aplikasi yang diluncurkan tidak akan gagal, kehilangan fungsionalitas, atau melakukan hal-hal yang sangat buruk. Berikut ini adalah rekomendasi saya saat ini untuk menggunakansudo
sudo -H <rest of the command>
(dari sudohalaman manual bagian 8) -H ( HOME )Opsi meminta agar kebijakan keamanan mengatur HOMEvariabel lingkungan ke direktori home pengguna target (root secara default) seperti yang ditentukan oleh basis data kata sandi. Tergantung pada kebijakannya, ini mungkin merupakan perilaku default.
Ini setidaknya harus mencegah file yang dibuat di sudodirektori rumah pemanggil
sudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
Ini seharusnya membiarkan <GUI program> dieksekusi di terminal TTY dan ditampilkan di lingkungan desktop Anda
Perilaku sudoperintah tidak identik pada semua sistem dan dapat dikonfigurasi melalui visudoperintah, silakan periksa sudoers(5)halaman manual untuk info lebih lanjut.
tampaknya penjelasan yang jauh lebih baik daripada yang mendapatkan semua suara. lebih teliti, lebih benar. bahkan OP menjawab "apakah hanya itu?" untuk jawaban yang mendapat semua suara.
Johnny mengapa
2
Menggunakan sudo biasa untuk menjalankan program grafis pada kesempatan langka akan mengacaukan izin pada beberapa file. Agar aman, gksudo (atau kdesudo yang sesuai) harus digunakan untuk menjalankan program dengan GUI. Saya pikir ini benar-benar bug, walaupun saya mendengar penjelasan bahwa gksudo memahami variabel X server dan sudo tidak mungkin mengarah ke masalah. Sama seperti tip; jika Anda menjalankan program grafis sebagai root, alih-alih membuka satu terminal untuk setiap program yang ingin Anda jalankan, ketik ALT-F2 (alt dan tombol fungsi 2 secara bersamaan), lalu ketikkan di kotak dialog yang muncul "gksudo program "tanpa tanda kutip dan program digantikan oleh aplikasi yang ingin Anda jalankan.
sudo berjalan sebagai pengguna saat ini dengan hak istimewa yang tinggi. Ini berpotensi mengubah izin file dari file konfigurasi pengguna tertentu (yang berkaitan dengan lingkungan grafis Anda) saat menjalankan aplikasi grafis. Anda mungkin menemukan kesalahan saat menjalankan aplikasi ini lagi tanpa sudo.
gksudo (kdesudo di bawah KDE) menjalankan aplikasi sebagai pengguna root sehingga setiap izin file yang disentuh berada pada file root, bukan file pengguna. menjalankan aplikasi ini lagi tanpa gksudo / kdesudo akan selalu memiliki perilaku yang diharapkan.
"Anda seharusnya tidak pernah menggunakan sudo normal untuk memulai aplikasi grafis sebagai root. Anda harus menggunakan gksudo (kdesudo di Kubuntu) untuk menjalankan program seperti itu. Gksudo set HOME = ~ root, dan salin .Xauthority ke direktori tmp. Ini mencegah file di rumah Anda direktori menjadi dimiliki oleh root. (AFAICT, ini semua yang khusus tentang lingkungan dari proses yang dimulai dengan gksudo vs sudo). "
Ada empat jawaban lain; yang mana yang salah? Bukankah jawaban Anda pada dasarnya sama dengan jawaban Davros?
fixer1234
Saya merujuk pada jawaban yang ditandai sebagai benar. Ya, Davros mengatakan hal yang sama, tetapi saya menambahkan ini karena itu tidak mengandung tautan ke sumber.
eugene1832
1
Solusi yang lebih baik adalah mengusulkan edit untuk jawaban itu. Meningkatkan jawaban kemungkinan akan diterima (+2 rep), sedangkan pada dasarnya menduplikasi jawaban cenderung menarik downvotes.
Jawaban:
sudo
meminta kata sandi pada baris perintah, dangksudo
muncul kotak dialog untuk itu.sumber
sudo -E
setara dengangksudo
?gksudo
adalah frontend berbasis GTK darisudo
(BTW,kdesudo
adalah frontend berbasis Qt), namun (secara default) menangani variabel lebih lingkungan (HOME
,XAUTHORITY
, dll) darisudo
sehingga membuat menjalankan perintah sebagai root lebih aman.Sejauh yang saya bisa lihat hanya jawaban @Logics sudah cukup benar (@Ignacio Vazquez-Abrams tidak lengkap). Berikut adalah klarifikasi coba-untuk-menghindari ke @Davros @knitti jawaban / komentar (Harap hapus / edit ketika tidak diperlukan):
sudo
, UI yang digunakan BUKAN satu-satunya perbedaan dari dua perintah.HOME
variabel lingkungan ke dalamsudo
perintah dalam beberapa sistem dan situasi). Tidak semua aplikasi GUI menulis ke direktori home Anda dan tidak semua aplikasi CLI tidak , jadi jenis perintah bukanlah titik kunci.sudo
perintah untuk meluncurkan aplikasi GUI sebagai root (untuk melihat output konsol aplikasi sebagai contoh), namun Anda perlu menanganiHOME
(dan yang lainnya sepertiXAUTHORITY
,,DISPLAY
metode input terkait metode, dll.) Variabel lingkungan dengan benar sehingga bahwa aplikasi yang diluncurkan tidak akan gagal, kehilangan fungsionalitas, atau melakukan hal-hal yang sangat buruk. Berikut ini adalah rekomendasi saya saat ini untuk menggunakansudo
sudo -H <rest of the command>
sudo
halaman manual bagian 8)-H ( HOME )
Opsi meminta agar kebijakan keamanan mengaturHOME
variabel lingkungan ke direktori home pengguna target (root secara default) seperti yang ditentukan oleh basis data kata sandi. Tergantung pada kebijakannya, ini mungkin merupakan perilaku default.sudo
direktori rumah pemanggilsudo -H DISPLAY=<a working X display name, usually :0> <rest of a GUI program command>
sudo
perintah tidak identik pada semua sistem dan dapat dikonfigurasi melaluivisudo
perintah, silakan periksasudoers(5)
halaman manual untuk info lebih lanjut.sumber
Menggunakan sudo biasa untuk menjalankan program grafis pada kesempatan langka akan mengacaukan izin pada beberapa file. Agar aman, gksudo (atau kdesudo yang sesuai) harus digunakan untuk menjalankan program dengan GUI. Saya pikir ini benar-benar bug, walaupun saya mendengar penjelasan bahwa gksudo memahami variabel X server dan sudo tidak mungkin mengarah ke masalah. Sama seperti tip; jika Anda menjalankan program grafis sebagai root, alih-alih membuka satu terminal untuk setiap program yang ingin Anda jalankan, ketik ALT-F2 (alt dan tombol fungsi 2 secara bersamaan), lalu ketikkan di kotak dialog yang muncul "gksudo program "tanpa tanda kutip dan program digantikan oleh aplikasi yang ingin Anda jalankan.
sumber
sudo berjalan sebagai pengguna saat ini dengan hak istimewa yang tinggi. Ini berpotensi mengubah izin file dari file konfigurasi pengguna tertentu (yang berkaitan dengan lingkungan grafis Anda) saat menjalankan aplikasi grafis. Anda mungkin menemukan kesalahan saat menjalankan aplikasi ini lagi tanpa sudo.
gksudo (kdesudo di bawah KDE) menjalankan aplikasi sebagai pengguna root sehingga setiap izin file yang disentuh berada pada file root, bukan file pengguna. menjalankan aplikasi ini lagi tanpa gksudo / kdesudo akan selalu memiliki perilaku yang diharapkan.
sumber
Jawaban saat ini salah. Menurut wiki Ubuntu RootSudo :
"Anda seharusnya tidak pernah menggunakan sudo normal untuk memulai aplikasi grafis sebagai root. Anda harus menggunakan gksudo (kdesudo di Kubuntu) untuk menjalankan program seperti itu. Gksudo set HOME = ~ root, dan salin .Xauthority ke direktori tmp. Ini mencegah file di rumah Anda direktori menjadi dimiliki oleh root. (AFAICT, ini semua yang khusus tentang lingkungan dari proses yang dimulai dengan gksudo vs sudo). "
sumber