Saya telah membaca dokumentasi komunitas "RootSudo" dan saya tertarik dengan baris ini:
Anda tidak boleh menggunakan sudo normal untuk memulai aplikasi grafis sebagai Root.
Mengapa? Apa bedanya? Berikan penjelasan sederhana, karena saya hanya pengguna desktop biasa.
Jawaban:
Aplikasi grafis sering menyimpan pengaturan dan data khusus pengguna lainnya dalam file konfigurasi yang ditulis di dalam folder rumah pengguna . Aplikasi mekanisme utama yang digunakan untuk menentukan apa yang harus mereka gunakan sebagai folder home pengguna adalah
HOME
variabel lingkungan . (Anda dapat memeriksanya sendiri denganecho $HOME
).Misalkan Anda menjalankan
gedit
(editor teks grafis) sebagairoot
. Jika Anda menjalankansudo gedit
,HOME
akan terus menunjuk ke arah Anda direktori home, meskipun program ini berjalan sebagairoot
. Akibatnya,gedit
akan menulis file konfigurasi sebagairoot
ke direktori home Anda. Ini kadang-kadang akan menghasilkan file konfigurasi yang dimiliki olehroot
dan dengan demikian tidak dapat diakses oleh Anda (ketika Anda kemudian menjalankan program seperti diri Anda sendiri dan bukan sebagairoot
). Ini terutama terjadi ketika aplikasi harus membuat file konfigurasi baru. File yang baru dibuat, secara default, dimiliki oleh pengguna yang membuatnya (yang dalam hal iniroot
, bukan Anda).Itulah alasan utama mengapa Anda harus menjalankan aplikasi grafis dengan tampilan grafis
sudo
daripada dengan garis lurussudo
. Di Ubuntu dan sebagian besar turunannya (termasuk Xubuntu dan Lubuntu), antarmuka grafis standar adalahgksu
/gksudo
. Di Kubuntu begitukdesudo
. (Tergantung pada lingkungan desktop yang digunakan.)Jika Anda ingin menggunakan
sudo
secara langsung untuk menjalankan aplikasi grafis sepertigedit
, Anda dapat menjalankan:The
-H
flag membuatsudo
setHOME
untuk menunjuk keroot
's folder rumah (yang/root
).Itu masih tidak akan secara otomatis menangani kepemilikan
.Xauthority
dengan menyalinnya ke folder temp (ini adalah hal lain yang ditangani oleh grafissudo
frontend untuk Anda). Tetapi dalam peristiwa yang jarang terjadi yang.Xauthority
tidak dapat diakses, Anda akan mendapatkan kesalahan dengan mengatakannya, dan kemudian Anda dapat memperbaiki masalah dengan menghapusnya (sudo rm ~/.Xauthority
), karena masalah itu secara otomatis dibuat ulang. Dengan demikian, melindungi.Xauthority
kepemilikan dan izin kurang penting daripada melindungi kepemilikan dan izin file konfigurasi.Berbeda dengan yang
root
dimiliki.Xauthority
, ketika file konfigurasi menjadi milikroot
, tidak selalu sejelas apa masalahnya (karena program grafis akan sering berjalan, tetapi tidak berfungsi dengan baik, dan menampilkan kesalahan yang berguna ke konsol). Dan kadang-kadang kesulitan yang lebih besar untuk diperbaiki, terutama jika Anda berada dalam situasi di mana Anda ingin satu atau lebih file di direktori home Anda dimiliki oleh orang lain selain Anda (karena Anda tidak dapat memperbaikinya hanya dengan secara rekursif mengambilchown
semua file Anda. kembali ke dirimu sendiri).Oleh karena itu,
sudo
(setidaknya tanpa-H
) tidak boleh digunakan untuk menjalankan aplikasi grafis kecuali jika Anda sangat terbiasa dengan cara kerja aplikasi dan tahu pasti bahwa itu tidak pernah mencoba untuk menulis file konfigurasi.sumber
sudo chmod -R $USER:$USER ~
Sayangnya, kriteria tersebut tidak selalu berlaku. Jika Anda memiliki file di mana Anda perlu mempertahankan pemilik grup, Anda dapat menjalankannyasudo chmod -R $USER ~
. Ini biasanya cukup. (Jika Anda memiliki file perlu dimiliki oleh pengguna lain di direktori home Anda, bahkan itu akan menjadi masalah.)chmod
benar-benar melakukannya? Saya selalu berpikir ituchown
yang melakukannya.chmod
tidak pernah melakukannya untukku.chown
daripadachmod
di komentar saya di atas. Maaf tentang itu - dan terima kasih telah menunjukkan ini!sudo -H echo $HOME
, shell Anda - berjalan seperti Anda, bukan sebagai root - melakukan ekspansi parameter aktif$HOME
, mendapatkan path direktori home Anda , lalu meneruskannya kesudo
, yang pada gilirannya melewati nilai yang sudah diperluas untukecho
, yang mencetaknya.sudo -H printenv HOME
,,sudo -H bash -c 'echo $HOME'
dansudo -H sh -c 'echo $HOME'
semua cetak/root
. Secara konseptual ini mirip - meskipun dengan mekanisme yang berbeda - dengan carax=a echo "$x"
tidak mencetaka
(kecualix
sudah ada nilainyaa
).Sederhananya:
Baca di sini . Juga, mungkin duplikat Apa perbedaan antara "gksudo nautilus" dan "sudo nautilus"?
sumber
Alternatif untuk
gksu nautilus
dangksu gedit
adalah menggunakannautilus-admin
add-on. Ini memungkinkan Anda untuk menelusuri file dan direktori dengan Nautilus dan kemudian membukanya sebagai root (Administrator).Instalasi lurus ke depan:
Sekarang ketika Anda berada di nautilus Anda akan memiliki opsi tambahan untuk Edit sebagai administrator:
gedit
sebagai root tidak mengizinkan preferensiSaat dijalankan
gedit
sebagai root, Anda tidak dapat menggunakan preferensi yang telah Anda siapkan sebagai pengguna biasa untuk penghentian tab, mengonversi tab menjadi spasi, nama font, ukuran font, pembungkus baris, dll.Untuk mengatasi ini, saya telah menulis skrip
sgedit
untuk mewarisi preferensi pengguna dan menerapkannya ke root: Bagaimana saya bisa menyinkronkan root gedit saya dengan preferensi pengguna gedit saya?sgedit filename1 filename2 ...
sudo -H
untuk mempertahankan kepemilikan file sementara mendapatkan kekuatan root.sudo
batas waktu terakhir habis.gedit
sebagai tugas latar belakang sehingga terminal prompt muncul kembali dengan segera.sumber