Apakah ada cara untuk menentukan yang sudo
seharusnya mempertahankan variabel lingkungan tertentu hanya untuk perintah yang ditentukan? Untuk beberapa tujuan, saya ingin $HOME
env saya . variabel dipertahankan ketika saya menjalankan perintah tertentu. Untuk keperluan lain dan perintah lain, saya ingin mengatur ulang. Bisakah ini dilakukan /etc/sudoers
?
Edit:
Terima kasih atas jawabannya. Saya ingin tahu apakah saya dapat mengajukan pertanyaan lanjutan, yaitu, "Mengapa, kalau begitu, ini tidak berhasil?"
Dalam contoh saya mencoba bekerja, saya ingin sudo nano
membaca $HOME/.nanorc
. Jika saya menggunakan ini:
Defaults:simon env_keep=HOME
ini bekerja dengan sempurna. Jika saya menggunakan ini:
Defaults!/bin/nano env_keep=HOME
atau ini:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
itu tidak berfungsi sama sekali. Ada saran mengapa? (Saya sedang menguji Debian, btw.)
(Catatan: Saya tidak berpikir itu nano
spesifik, btw - Saya dapat mereproduksi perilaku dengan skrip bash satu baris yang hanya echo
s $HOME
).
sudoedit
sebaliknya.sudoedit
akan menjalankan menyalin isi file ke file tmp dan menjalankan editor pilihan Anda sebagai pengguna Anda, ketika editor keluar akan memeriksa apakah Anda mengubah sesuatu dan jika demikian ganti yang asli dengan yang diedit. Anda dapat memilih editor mana yang Anda inginkan untuk dijalankan dengan mengatur$EDITOR
atau $ VISUAL `env vars.sudo
dengan fungsi saya sendiri, saya hanya menambahkanif [ "$1" == "$EDITOR" ]; then
blok dan sekarang saya panggilsudoedit
:)Jawaban:
Untuk mengesampingkan
env_keep
hanya untuk/path/to/command
(ketika dijalankan melalui aturan apa pun, oleh pengguna mana pun) dan untuk penggunajoe
(tidak peduli apa perintah yang ia jalankan):Anda dapat menggunakan
-=
atau+=
untuk menghapus atau menambahkan entri keenv_keep
daftar.sumber
man
halaman, dan saya merasa sedikit bodoh. Tidak diragukan lagi, jawaban ini akan membantu orang lain juga.sudoers
halaman manual sulit untuk dikerjakan dari deskripsi formal dan contoh-contoh yang lebih mudah ditemukan jika Anda sudah tahu cara menulisnya.env_keep
pengaturan itu (simon ALL = ALL
). Sudo menggunakan entri yang cocok terakhir .Baris-baris itu dari saya sendiri
/etc/sudoers
untuk memperbaiki masalah yangpbuilder
terlihat pada$HOME
file konfigurasi penggunanya tetapi harus dijalankan sebagai root (memindahkannya untuk/root
agak mengalahkan tujuan memiliki sistem dan file konfigurasi pengguna).sumber
man sudoers:
Karenanya ya, Anda bisa melakukannya menggunakan
env_reset
,env_keep
danenv_check
di / etc / sudoers Anda.sumber