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
dan vim
sering direkomendasikan. Editor teks berbasis terminal menyukai vim
(atau setidaknya vi
perintah) dan nano
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 berlari sudo -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 melalui SUDO_EDITOR
, VISUAL
atau EDITOR
variabel lingkungan , yang berkonsultasi dalam urutan itu. Dengan demikian Anda dapat menjalankan:
VISUAL=gedit sudoedit filename
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 mengaturnya gedit
, 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 mendukung admin://
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.
gedit admin:///path/to/filename
Di sana, /path/to/filename
harus ada jalur absolut ke file, dimulai dengan /
. Jadi ada tiga /
karakter setelahnya admin:
.
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
dan sudo 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, seperti git
) 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 seperti sudoedit
, ada juga kelemahan lain dari perintah seperti sudo nano
dan sudo 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 seperti vim
sebagai root tetapi tanpa mengatur ulang $HOME
(seperti sudo -H
dan sudo -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 melalui admin://
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 menggunakan sudo
). Perilaku sudah berubah di Ubuntu 19.10 , yang merupakan rilis pengembangan pada tulisan ini.
-H
itu penting , jangan gunakansudo
untuk meluncurkan aplikasi GUI tanpanya.