Saya relatif baru di Ubuntu, saya perhatikan bahwa dalam jawaban di situs ini, ketika orang menyarankan mengedit file sistem, perintah yang mereka berikan selalu sudo nano
atau sudo vi
. Karena saya tidak suka menggunakan editor teks berbasis terminal, saya biasanya menggunakan
sudo -H gedit
sebaliknya, dan sejauh ini bekerja dengan sangat baik.
Apakah ada masalah dengan penggunaan gedit
untuk mengedit file sistem atau apakah pilihan editor teks sepenuhnya sesuai dengan preferensi orang tersebut? Apakah ada sesuatu yang harus saya ingat (seperti penyandian) ketika mengedit file-file ini?
command-line
sudo
gedit
shinobody
sumber
sumber
-H
itu penting , jangan gunakansudo
untuk meluncurkan aplikasi GUI tanpanya.Jawaban:
Selama Anda menjalankannya dengan benar, itu masalah preferensi Anda.
Selain perbedaan fitur , editor teks apa yang Anda gunakan memang cukup banyak pilihan Anda. Ini benar bahkan ketika editor teks Anda adalah program grafis seperti Gedit . Ini bukan untuk mengatakan tidak ada alasan yang bagus
nano
danvim
sering direkomendasikan. Editor teks berbasis terminal menyukaivim
(atau setidaknyavi
perintah) dannano
tersedia bahkan ketika tidak ada GUI dan bahkan pada sistem yang sangat minim dan rusak ; mereka memiliki tradisi di belakang mereka (jika Anda tidak menyukai hal semacam itu); mereka dapat dijalankan di terminal yang sama di mana tugas-tugas lain dilakukan; mereka secara otomatis diintegrasikan ke dalam alur kerja pengguna terminal multiplexer ; dan mereka lebih mungkin tersedia daripada yang laineditor teks grafis tertentu , bahkan Gedit, bahkan di Ubuntu (yang memiliki beberapa rasa ).Bukan itu saja. Jika Anda akan mengedit file sistem, satu pendekatan adalah menjalankan editor Anda sebagai root. Ini bukan satu-satunya pendekatan, dan ada beberapa argumen yang menentangnya (lihat di bawah), tetapi itu adalah yang umum. Jika Anda mengambil pendekatan itu dan menggunakan program grafis sebagai editor Anda, maka Anda perlu berhati-hati untuk menjalankannya sedemikian rupa sehingga
$HOME
menjadi direktori home root daripada milik Anda , dan ini menambahkan lapisan kerumitan dan kompleksitas. Tetapi Anda sudah melakukan itu; Anda berlarisudo -H gedit
, yang merupakan salah satu cara yang masuk akal . Namun, kompleksitas itu adalah alasan lain mengapa orang cenderung menyarankan editor non-grafis.Program grafis seringkali lebih rumit daripada program non-grafis. Memiliki lebih banyak hal berjalan sebagai root umumnya buruk, karena ada lebih banyak cara kesalahan bisa terjadi, termasuk karena kemungkinan bug, termasuk secara tidak sengaja. (Editor teks non-grafis seperti
vim
cukup canggih juga, dan sering dikonfigurasi untuk menjalankan banyak program eksternal untuk melakukan berbagai tugas.)Selain menjalankan editor sebagai root, pendekatan umum lainnya adalah mengedit file yang editor dapat modifikasi bahkan ketika berjalan sebagai pengguna (non-root) Anda, sehingga perubahan pada file tersebut disebarkan ke file milik root yang Anda inginkan Untuk mengganti. Itu terdengar abstrak karena spesifiknya sangat bervariasi. Dua pendekatan konkret utama mengikuti.
sudoedit
Salah satu cara yang cukup lama untuk melakukan ini adalah
sudoedit
(didokumentasikan dalam halaman manual yang sama dengansudo
). Secara default,sudoedit
gunakan editor teks default , yang biasanya bukan - dan tidak boleh - program grafis. Tapi Anda bisa kirim ke menggunakan editor apapun melaluiSUDO_EDITOR
,VISUAL
atauEDITOR
variabel lingkungan , yang berkonsultasi dalam urutan itu. Dengan demikian Anda dapat menjalankan:Ganti
filename
dengan jalur relatif atau absolut ke file Anda.Ini membuat salinan sementara dari file yang ingin Anda edit. Salinan dimiliki oleh Anda, bukan oleh root (atau siapa pun pemilik aslinya). Ini membuka editor teks, dan Anda dapat mengedit salinan sementara. Saat Anda menutup editor teks,
sudoedit
periksa apakah Anda benar-benar membuat perubahan. Jika Anda melakukannya, itu menyalin salinan sementara yang dimodifikasi kembali ke aslinya.Sementara
sudoedit
bekerja dengan editor grafis, ini juga berguna untuk editor berbasis terminal. Dalam kedua kasus, editor teks berjalan seperti Anda, sehingga memiliki konfigurasi Anda, dan tindakan lain yang Anda lakukan di dalamnya lainnya dari modifikasi yang dilakukan ke file yang dilakukan oleh Anda, yang memberikan sedikit perlindungan terhadap beberapa jenis kesalahan.Anda dapat mengatur salah satu variabel lingkungan tersebut secara terus-menerus jika Anda mau.
SUDO_EDITOR
mungkin yang terbaik karena digunakan untuk hal-hal lain yang lebih sedikit. Namun, jika Anda mengaturnyagedit
, perlu diingat bahwa perintah seperti tidak akan berfungsi ketika tidak ada GUI yang tersedia, seperti yang sering (meskipun tidak selalu ) kasing di konsol virtual atau melalui SSH .sudoedit filename
Backend admin GVFS
Cara lain yang lebih baru untuk melakukan ini, adalah membuka file melalui
admin://
jalur GVFS daripada jalur gaya Unix tradisional. Terima kasih pergi ke pomsky untuk mengajari saya tentang ini. Seperti halnya ada jalur GVFS untuk mengedit file yang, dalam hal lain, tidak di tempat yang nyaman untuk diedit - misalnya karena mereka berada di mesin jarak jauh yang terhubung dengan Anda melalui SSH - GVFS mendukungadmin://
jalur untuk mengedit file kamu tidak memiliki.Secara konseptual ini mirip dengan
sudoedit
di mana Anda menjalankan editor seperti diri Anda sendiri dan file yang dilihat editor adalah sesuatu yang diizinkan untuk diedit. Mencoba membuka file mengharuskan Anda untuk mengautentikasi; ini bukan cara ajaib untuk menghindari pembatasan keamanan yang biasa.Di sana,
/path/to/filename
harus ada jalur absolut ke file, dimulai dengan/
. Jadi ada tiga/
karakter setelahnyaadmin:
.Pengkodean dan hal-hal lain secara teoritis dipengaruhi oleh konfigurasi editor
Pengkodean file tidak benar-benar dipengaruhi oleh apakah editor yang Anda gunakan adalah grafis atau tidak. Beberapa editor, seperti
vim
, bahkan dapat beroperasi baik secara grafis (gvim
perintah) atau non-grafis (vim
perintah). Jawaban sederhana untuk pertanyaan Anda tentang penyandian adalah bahwa Anda tidak perlu khawatir tentang itu. Itu cukup dekat dengan kebenaran sehingga Anda benar-benar tidak perlu membaca sisa dari jawaban ini.Dalam rilis Ubuntu saat ini (dan yang lalu), perintah menyukai
sudo nano
dansudo vim
menjalankan editor tersebut sebagai root tetapi$HOME
masih diatur ke direktori home Anda . Ini berarti editor secara default akan menggunakan konfigurasi Anda daripada konfigurasi root. Jika ada sesuatu dalam konfigurasi Anda dari editor tersebut (atau dalam program yang mereka jalankan untuk melakukan beberapa pekerjaan mereka, sepertigit
) tentang penyandian atau akhir baris , itu akan diikuti. Dengan , itu tidak akan terjadi.sudo -H editor
Beberapa orang menggunakan telanjang
sudo
(yaitu, tanpa-i
atau-H
) untuk editor karena mereka menginginkannya. Tapi sungguh, Anda harus berpikir dua kali tentang ini. Anda tidak hanya dapat mencapai tujuan itu dengan lebih bersih dengan metode sepertisudoedit
, ada juga kelemahan lain dari perintah sepertisudo nano
dansudo vim
:Jika konfigurasi editor Anda menyebabkan sesuatu untuk dijalankan, itu dijalankan sebagai root. Untuk editor canggih seperti
vim
, ini dapat menyebabkan sedikit kode nontrivial untuk dijalankan sebagai root. Seperti disebutkan di atas, memiliki sedikit kode yang dijalankan sebagai root umumnya baik dan ini adalah salah satu argumen terhadap menjalankan editor grafis sebagai root.Jika
vim
konfigurasi Anda memiliki banyak plugin - misalnya, untuk melakukan analisis statis pada kode sumber saat Anda mengetiknya - dan root tidak, lebih sedikit barang berjalan sebagai root daripada . (Bahkan lebih sedikit berjalan sebagai root , tetapi plugin Anda masih berfungsi!) Ini terpisah dari apakah editor Anda grafis atau tidak.sudo -H vim filename
sudo vim filename
VISUAL=vim sudoedit filename
Jika konfigurasi editor Anda rusak dan membuat Anda tidak dapat mengedit file dengan mudah, maka memperbaikinya bahkan mungkin lebih merepotkan, karena itu berlaku juga untuk root. Ini hanyalah masalah, bukan masalah yang sulit untuk dipecahkan.
Perintah seperti
sudo vim
memiliki sedikit masalah yang sama dengan perintah (keliru!)sudo gedit
. Jika Anda menjalankan editor sepertivim
sebagai root tetapi tanpa mengatur ulang$HOME
(sepertisudo -H
dansudo -i
akan dilakukan), dan itu menciptakan file konfigurasi untuk dirinya sendiri , file-file konfigurasi tersebut akan berada di direktori home Anda tetapi mereka akan dimiliki oleh root, dan konfigurasi Anda mungkin agak rusak ketika nanti Anda menjalankan editor seperti diri Anda sendiri.Baiklah, ini terdengar sangat mirip dengan masalah itu! Alasannya kurang penting dibandingkan dengan aplikasi grafis adalah bahwa editor biasanya masih dimulai, pesan kesalahan biasanya lebih mudah dipahami, Anda biasanya dapat mencari tahu apa file tertentu yang terpengaruh jauh lebih mudah, dan kerusakan biasanya terbatas pada program yang satu itu. (Program grafis menggunakan file-file konfigurasi di lebih banyak tempat.) Selain itu, tidak seperti dengan editor grafis, pengguna yang hanya santai menggunakan editor teks dan tidak sengaja mengubah konfigurasi cukup mungkin untuk mengalami masalah ini.
Sekali lagi, Anda dapat menggunakan konfigurasi editor akun pengguna Anda sendiri sambil menghindari masalah izin dengan menggunakan
sudoedit
atau, dari desktop, memulai editor secara normal tetapi mengakses file melaluiadmin://
jalur.Akhirnya, perhatikan bahwa perilaku yang disebutkan di atas tentang
sudo
kapan-H
atau-i
dilewati sebenarnya direncanakan untuk berubah dalam rilis Ubuntu yang akan datang (seperti yang sudah, bertahun-tahun lalu, di sebagian besar sistem operasi mirip Unix yang menggunakansudo
). Perilaku sudah berubah di Ubuntu 19.10 , yang merupakan rilis pengembangan pada tulisan ini.sumber
sudo -H
adalah 1 kali dari 100 atau 1000 Anda akan lupa-H
dan kepemilikan file mungkin ditransfer dari pengguna ke root di$HOME
suatu tempat.Untuk menjawab pertanyaan Anda: Secara umum, menggunakan editor GUI tidak akan menjadi masalah karena
gedit
menjadi sangat lambat untuk file besar.Tetapi untuk program GUI yang akan Anda gunakan
pkexec
ataugksu
bukansudo
. Anda mungkin perlu mengonfigurasipkexec
sebelum berfungsi.atau untuk versi Ubuntu yang lebih lama (mis. 16.04) Anda dapat menggunakan:
(Meskipun Anda mungkin mencoba editor GUI yang lebih baik, misalnya
geany
;-))sumber
gksu
cukup banyak dibuang.pkexec
......pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY