Saya pada dasarnya perlu melakukan ini:
DUMMY=dummy
sudo su - ec2-user -c 'echo $DUMMY'
Ini tidak berfungsi. Bagaimana saya bisa meneruskan variabel env $ DUMMY ke su? -p tidak bekerja dengan -l.
linux
sudo
environment-variables
su
Umang
sumber
sumber
sudo -iu ec2-user echo $DUMMY
?Jawaban:
Anda dapat melakukannya tanpa memanggil shell login:
atau:
The
-p
pilihan untuksu
perintah melestarikan variabel lingkungan.sumber
-p
adalah pilihansu
, tidaksudo
dalam kasus ini-m
mempertahankan variabel, yang lain mengatakan-c
apa bedanya? Dan salah satu komentar di hari jawaban ini-E
stackoverflow.com/questions/10488758/…Kiat pro: Tidak pernah ada alasan bagus untuk menjalankan
sudo su
. Untuk menjalankan perintah sebagai pengguna yang berbeda, gunakansudo -u username command
. Jika Anda menginginkan shell root, jalankansudo -i
atausudo -l
. Jika Anda telah mengaktifkan akun root, Anda juga dapat menjalankannyasu
sendiri, tetapisudo su
tidak berguna. Dan ya, saya tahu Anda melihatnya di mana-mana.Yang mengatakan,
sudo
memiliki-E
saklar yang akan melestarikan lingkungan sesi pengguna:Jadi, pertama-tama Anda perlu mengekspor variabel Anda, dan kemudian jalankan
sudo -E
:Itu
bash -c
tidak dibutuhkan. Namun, jika saya menjalankansudo -Eu bob echo "$DUMMY"
, variabel diperluas sebelum shell root diluncurkan sehingga tidak menunjukkan bahwa perintah benar-benar berfungsi:sumber
env_keep
dalamsudoers
. Mungkin seperti ini:Defaults env_keep += "DUMMY"
.sudo
. Itu juga lebih rumit untuk satu variabel. Itu hanya berguna untuk sesuatu yang harus selalu diekspor.LD_PRELOAD
dan terbawaLESSCHARDEF
. Saya tidak berpikir kenyamanan seharusnya menjadi argumen yang menang di sini ...-E melakukan pekerjaan untukku. Dari man
sudo
-sumber
Berikut ini adalah solusi yang tidak perlu dilakukan seseorang untuk mengubah kebijakan keamanan.
Saya akan mengabaikan
su
bagian itu, karena kita dapat menggunakan--user
opsisudo
.Kami ingin meneruskan variabel lingkungan ke
command
run viasudo
. Namunsudo
tidak akan mengizinkan variabel lingkungan untuk diteruskan ke perintah (ada alasan keamanan yang valid untuk ini, beberapa variabel bisa berbahaya). Shell dapat digunakan untuk mengatur variabel lingkungan, dansudo
dapat menjalankan shell dengan skrip yang diteruskan ke sana. Oleh karena itu katakansudo
untuk menjalankan skrip yang mengatur variabel lingkungan.sumber