Cara mengedit file sistem dengan sudoedit melestarikan lingkungan pengguna yang memohon

Cara mengedit file sistem dengan sudoedit melestarikan lingkungan pengguna yang memohon

Di Linux dan sistem operasi berbasis UNIX lainnya, sudo digunakan untuk menjalankan program dengan hak istimewa pengguna lain, sering root. Ketika kita perlu memodifikasi file yang mengharuskan hak administratif untuk diedit, jika kita meluncurkan editor teks favorit kita secara langsung dengan sudo, itu akan berjalan tanpa kustomisasi dan pengaturan yang kita gunakan ketika kita memohon secara normal, karena lingkungan pengguna yang memohon adalah tidak dilestarikan. Dalam tutorial ini kita akan melihat bagaimana kita dapat dengan mudah menyelesaikan masalah ini dan bagaimana kita dapat memodifikasi file sistem dengan aman dengan menggunakan sudoedit.

Dalam tutorial ini Anda akan belajar:

  • Cara mengedit file sistem menggunakan sudoedit
  • Langkah apa yang dilakukan saat file diedit dengan sudoedit
  • Cara mengatur editor default yang digunakan oleh sudo

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi Independen
Perangkat lunak sudo
Lainnya Tidak ada
Konvensi # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa

Perilaku standar sudo

Mayoritas distribusi Linux dikonfigurasi sehingga cara utama untuk mencapai hak istimewa adalah dengan menggunakan sudo. Penggunaan sudo memberi kami serangkaian hak istimewa su, Yang utama adalah hak istimewa yang dapat diberikan kepada satu pengguna tanpa harus memberinya akses root penuh.

Sudo bisa disesuaikan melalui /etc/sudoers mengajukan; Karena file ini sangat penting, itu harus diedit menggunakan Visudo perintah, yang memang memastikan tidak ada kesalahan sintaksis sebelum perubahan disimpan.

Dalam sebagian besar kasus, ketika suatu perintah dijalankan dengan sudo, lingkungan pengguna yang memohon tidak dipertahankan, jadi misalnya, jika kami memohon editor kami menggunakan sudo untuk memodifikasi file sistem yang dimiliki oleh root, itu akan berjalan mengabaikan pengaturan pribadi kami. Ini bisa agak tidak nyaman, dan dalam kasus -kasus tertentu menjalankan editor dengan hak istimewa yang meningkat dapat menimbulkan beberapa masalah keamanan. Mari kita lihat apa yang bisa kita lakukan.



Masalahnya: Editor diluncurkan tanpa pengaturan yang ditentukan pengguna

Misalkan kita harus mengedit file dengan hak administratif, misalnya misalnya /etc/fstab, Di situlah informasi statis tentang sistem file disimpan di Linux. Jika kami menggunakan editor teks favorit kami dan memindahkannya langsung menggunakan sudo,
Kustomisasi yang kami atur ke sana (biasanya melalui dotfiles yang sesuai yang disimpan di kami RUMAH direktori) tidak akan dihormati, karena lingkungan pengguna yang memohon tidak dilestarikan.

Mari kita lihat contohnya. Katakanlah editor favorit kami adalah vim dan kami ~/.Vimrc file kami memasukkan setel nomor arahan yang menyebabkan nomor baris ditampilkan. Jika kami mengedit /etc/fstab File yang memohon editor langsung dengan sudo, kita dapat melihat pengaturannya tidak efektif:

$ sudo vim /etc /fstab 

File akan dibuka di editor, dan berikut ini adalah apa yang akan ditampilkan. Isi file tidak masalah bagi kami dalam kasus ini, jadi itu terpotong:

# #/etc/fstab # # sistem file yang dapat diakses, dengan referensi, dipertahankan di bawah '/dev/disk/'. # Lihat halaman man fstab (5), findfs (8), mount (8) dan/atau blkid (8) untuk info lebih lanjut. # # Setelah mengedit file ini, jalankan 'Systemctl Daemon-Reload' untuk memperbarui unit SystemD # yang dihasilkan dari file ini. # /dev /mapper /fingolfin_vg-root_lv /ext4 default, x-systemd.Perangkat-timeout = 0 1 1 UUID = B308FBE5-68A6-4142-82DE-BA1DC3380484 /BOOT Ext2 Default 1 2 […] 

Karena Anda dapat melihat nomor baris tidak ditampilkan. Di atas hanyalah sebuah contoh dan mungkin kustomisasi editor kami jauh melampaui itu. Bagaimana kita bisa menyelesaikan masalah ini?

Solusinya: Menggunakan sudoedit

Untuk menyelesaikan masalah yang kami ilustrasikan di atas, kami dapat menggunakan sudoedit alih-alih sudo. Menggunakan sudoedit adalah setara dengan memohon sudo dengan -e opsi, yang merupakan kependekan dari --edit. Seperti yang dinyatakan dalam sudo Manual, opsi ini pada dasarnya berarti: "Edit file alih -alih menjalankan perintah".

Ketika strategi ini digunakan, dan pengguna yang memohon diizinkan untuk melakukan tindakan dengan kebijakan sistem, serangkaian langkah akan dilakukan. Pertama -tama, a sementara salinan file yang ingin kami edit dibuat. File sementara akan dimiliki oleh pengguna yang memohon, jadi tidak ada hak administratif yang diperlukan untuk memodifikasinya.

File sementara akan dibuka di editor teks default. Editor default diatur melalui beberapa variabel, yang dibaca dalam urutan tertentu. Mereka:

  1. Sudo_editor
  2. VISUAL
  3. EDITOR

Bergantung pada distribusi dan shell yang kami gunakan, nilai variabel ini dapat diatur secara permanen di ~/.Bash_profile (hanya bersumber dari cangkang bash) atau ~/.Profil mengajukan. Untuk mengatur vim Sebagai editor default kami, misalnya, kami akan menulis:

Ekspor sudo_editor =/usr/bin/vim 



Perhatikan bahwa kami menggunakan ekspor shell built-in sebelum definisi variabel: diperlukan untuk mengekspor variabel itu sendiri ke semua proses anak shell. Perubahan tidak akan segera efektif: kita harus keluar dan masuk lagi,
atau sumber file yang dimodifikasi "secara manual":

$ sumber ~/.Bash_profile 

Jika tidak satu pun dari variabel ini ditetapkan, editor pertama yang ditentukan sebagai nilai dari editor opsi dalam file sudoers (/etc/sudoers) akan digunakan.

Setelah file yang kami modifikasi disimpan (itu akan dibuat dari awal jika belum ada), dan editor ditutup, itu akan disalin kembali ke posisi asli, dan file sementara akan dihapus. Pengguna akan diminta
Konfirmasikan tindakan jika file yang diedit menjadi kosong; Ini adalah tindakan keamanan tambahan dan sangat berguna, yang dapat mencegah kesalahan bencana:

sudoedit: truncate /etc /fstab ke nol byte? (y/n) [n] n sudoedit: tidak menimpa/etc/fstab 

Sejak saat menggunakan sudoedit alih-alih sudo Lingkungan pengguna yang memohon dipertahankan dan file diedit sebagai pengguna itu sendiri dan bukan sebagai root, kami akan dapat menggunakan editor kami dengan semua kustomisasi yang kami atur, termasuk plugin yang dimuat.

Kesimpulan

Dalam tutorial ini kami belajar bagaimana mungkin untuk mengedit file yang mensyaratkan hak administratif untuk dimodifikasi sambil menjaga lingkungan pengguna menggunakan sudoedit alih -alih sudo. Kami melihat apa keuntungan dari pendekatan ini, apa saja langkah yang dilakukan saat diadopsi, dan bagaimana mengatur editor default yang digunakan oleh sudo.

Tutorial Linux Terkait:

  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Menguasai loop skrip bash
  • File Konfigurasi Linux: 30 Teratas Paling Penting
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?
  • Menangani input pengguna dalam skrip bash
  • Cara menghapus bloatware dari ponsel samsung android Anda…
  • Sistem Linux Hung? Cara melarikan diri ke baris perintah dan…
  • Cara membuat Modifikasi dan Hapus Akun Pengguna di Linux