Cara Mengedit Fail Sistem Dengan SudoEdit Memelihara Persekitaran Pengguna Pengguna

Cara Mengedit Fail Sistem Dengan SudoEdit Memelihara Persekitaran Pengguna Pengguna

Di Linux dan sistem operasi berasaskan Unix yang lain, sudo digunakan untuk menjalankan program dengan keistimewaan pengguna lain, sering berakar. Apabila kita perlu mengubah suai fail yang memerlukan keistimewaan pentadbiran untuk diedit, jika kita melancarkan editor teks kegemaran kita secara langsung dengan sudo, ia akan berjalan tanpa penyesuaian dan tetapan yang kita gunakan apabila kita memanggilnya secara normal, kerana persekitaran pengguna yang memohon adalah tidak dipelihara. Dalam tutorial ini kita akan melihat bagaimana kita dapat menyelesaikan masalah ini dengan mudah dan bagaimana kita dapat mengubah suai fail sistem dengan selamat dengan menggunakan sudoedit.

Dalam tutorial ini anda akan belajar:

  • Cara mengedit fail sistem menggunakan sudoedit
  • Apakah langkah -langkah yang dilakukan apabila fail diedit dengan sudoedit
  • Cara menetapkan editor lalai yang digunakan oleh sudo

Keperluan perisian dan konvensyen yang digunakan

Keperluan Perisian dan Konvensyen Talian Perintah Linux
Kategori Keperluan, konvensyen atau versi perisian yang digunakan
Sistem Pengedaran bebas
Perisian sudo
Yang lain Tiada
Konvensyen # - Memerlukan komando linux yang diberikan untuk dilaksanakan dengan keistimewaan akar sama ada secara langsung sebagai pengguna root atau dengan menggunakan sudo perintah
$-memerlukan komando Linux yang diberikan sebagai pengguna yang tidak berkadar biasa

Tingkah laku standard sudo

Majoriti pengagihan Linux dikonfigurasikan supaya cara utama untuk mencapai keistimewaan akar adalah menggunakan sudo. Penggunaan sudo memberi kita satu siri keistimewaan su, yang utama ialah keistimewaan tertentu yang dapat diberikan kepada satu pengguna tanpa harus memberinya akses akar penuh.

Sudo boleh disesuaikan dengan halus melalui /etc/sudoers fail; Oleh kerana fail ini sangat penting, ia harus diedit menggunakan Visudo perintah, yang memastikan tiada ralat sintaks hadir sebelum perubahan disimpan.

Dalam majoriti kes, apabila arahan dijalankan dengan sudo, persekitaran pengguna yang menggunakan tidak dipelihara, jadi sebagai contoh, jika kami memanggil editor kami menggunakan sudo untuk mengubah suai fail sistem yang dimiliki oleh root, ia akan menjalankan mengabaikan persediaan peribadi kami. Ini agak menyusahkan, dan dalam kes -kes tertentu yang menjalankan editor dengan keistimewaan yang meningkat dapat menimbulkan beberapa masalah keselamatan. Mari lihat apa yang boleh kita lakukan, sebaliknya.



Masalahnya: Editor dilancarkan tanpa tetapan yang ditentukan oleh pengguna

Katakan kita mesti mengedit fail dengan keistimewaan pentadbiran, katakan contohnya /etc/fstab, di mana maklumat statik mengenai sistem fail disimpan di linux. Sekiranya kami menggunakan editor teks kegemaran kami dan gunakannya secara langsung menggunakan sudo,
penyesuaian yang kami tetapkan (biasanya melalui dotfiles yang sesuai yang disimpan di kami Rumah direktori) tidak akan dihormati, kerana persekitaran pengguna yang tidak dipelihara tidak dipelihara.

Mari lihat contoh. Katakan editor kegemaran kami adalah Vim dan di kami ~/.vimrc fail kami memasuki Tetapkan nombor Arahan yang menyebabkan nombor garis dipaparkan. Sekiranya kita mengedit /etc/fstab Fail yang menggunakan editor secara langsung dengan sudo, kita dapat melihat tetapan tidak berkesan:

$ sudo vim /etc /fstab 

Fail akan dibuka di editor, dan yang berikut adalah apa yang akan dipaparkan. Kandungan fail tidak penting kepada kami dalam kes ini, jadi ia dipotong:

# #/etc/fstab # # sistem fail yang boleh diakses, dengan rujukan, dikekalkan di bawah '/dev/disk/'. # Lihat halaman lelaki fstab (5), findfs (8), mount (8) dan/atau blkid (8) untuk maklumat lanjut. # # Setelah mengedit fail ini, jalankan 'Sistem Daemon-Reload' untuk mengemas kini unit sistem # yang dihasilkan dari fail ini. # /dev /mapper /fingolfin_vg-root_lv /ext4 lalai, x-systemd.Peranti-timeout = 0 1 1 UUID = B308FBE5-68A6-4142-82DE-BA1DC3380484 /BOOT EXT2 DEFAULTS 1 2 [...] 

Seperti yang anda dapat lihat nombor baris tidak dipaparkan. Di atas hanyalah contoh dan mungkin penyesuaian editor kami jauh melebihi itu. Bagaimana kita dapat menyelesaikan masalah ini?

Penyelesaiannya: Menggunakan sudoedit

Untuk menyelesaikan masalah yang digambarkan di atas, kita hanya boleh menggunakan sudoedit bukan sudo. Menggunakan sudoedit adalah bersamaan dengan menggunakan sudo dengan -e pilihan, yang pendek untuk --edit. Seperti yang dinyatakan dalam sudo manual, pilihan ini pada dasarnya bermaksud: "edit fail dan bukannya menjalankan arahan".

Apabila strategi ini digunakan, dan pengguna yang memohon dibenarkan melakukan tindakan oleh dasar sistem, satu siri langkah akan dilakukan. Pertama sekali, a Sementara Salinan fail yang ingin kami edit dibuat. Fail sementara akan dimiliki oleh pengguna yang dipanggil, jadi tidak ada keistimewaan pentadbiran yang diperlukan untuk mengubahnya.

Fail sementara akan dibuka dalam editor teks lalai. Editor lalai ditetapkan melalui beberapa pembolehubah, yang dibaca dalam urutan tertentu. Mereka adalah:

  1. Sudo_editor
  2. VISUAL
  3. Editor

Bergantung pada pengedaran dan shell yang kami gunakan, nilai pembolehubah ini boleh ditetapkan secara kekal di ~/.BASH_PROFILE (hanya diperolehi oleh shell bash) atau ~/.profil fail. Untuk menetapkan vim Sebagai editor lalai kami, sebagai contoh, kami akan menulis:

Eksport sudo_editor =/usr/bin/vim 



Perhatikan bahawa kami menggunakan eksport shell terbina dalam sebelum definisi pembolehubah: diperlukan untuk mengeksport pembolehubah itu sendiri kepada semua proses anak shell. Perubahan tidak akan berkesan: Kita harus logout dan log masuk lagi,
atau sumber fail yang diubahsuai "secara manual":

$ sumber ~/.BASH_PROFILE 

Sekiranya tiada pembolehubah ini ditetapkan, editor pertama yang dinyatakan sebagai nilai editor pilihan dalam fail sudoers (/etc/sudoers) akan digunakan.

Sebaik sahaja fail yang kami diubah suai disimpan (ia akan dibuat dari awal jika belum wujud), dan editor ditutup, ia akan disalin kembali ke kedudukan asal, dan fail sementara akan dikeluarkan. Pengguna akan diminta ke
Sahkan tindakan jika fail yang diedit menjadi kosong; Ini adalah langkah keselamatan tambahan dan sangat berguna, yang boleh menghalang kesilapan bencana:

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

Sejak ketika menggunakan sudoedit bukan sudo Persekitaran Pengguna Pengguna dipelihara dan failnya diedit sebagai pengguna sendiri dan bukan sebagai akar, kami akan dapat menggunakan editor kami dengan semua penyesuaian yang kami tetapkan, termasuk plugin dimuatkan.

Kesimpulan

Dalam tutorial ini, kami belajar bagaimana mungkin untuk mengedit fail yang memerlukan keistimewaan pentadbiran untuk diubahsuai sambil mengekalkan persekitaran pengguna yang menggunakan sudoedit bukannya sudo. Kami melihat apakah kelebihan pendekatan ini, apakah langkah -langkah yang dilakukan ketika ia diterima pakai, dan bagaimana menetapkan editor lalai yang digunakan oleh sudo.

Tutorial Linux Berkaitan:

  • Pengenalan kepada Automasi, Alat dan Teknik Linux
  • Perkara yang hendak dipasang di Ubuntu 20.04
  • Menguasai Gelung Skrip Bash
  • Fail Konfigurasi Linux: 30 teratas yang paling penting
  • Perkara yang perlu dilakukan setelah memasang ubuntu 20.04 Focal Fossa Linux
  • Mint 20: Lebih baik daripada Ubuntu dan Microsoft Windows?
  • Mengendalikan input pengguna dalam skrip bash
  • Cara mengeluarkan bloatware dari Samsung Android Mobile anda ..
  • Sistem Hung Linux? Cara melarikan diri ke baris arahan dan ..
  • Cara membuat Modify dan Padam Akaun Pengguna di Linux