GNU/Linux >> Belajar Linux >  >> Linux

cara meneruskan variabel lingkungan ke sudo su

Kiat pro:Tidak pernah ada alasan bagus untuk menjalankan sudo su . Untuk menjalankan perintah sebagai pengguna yang berbeda, gunakan sudo -u username command . Jika Anda menginginkan shell root, jalankan sudo -i atau sudo -l . Jika Anda telah mengaktifkan akun root, Anda juga dapat menjalankan su sendiri, tetapi sudo su hanya tidak berguna. Dan ya, saya tahu Anda melihatnya di mana-mana.

Artinya, sudo memiliki -E sakelar yang akan menjaga lingkungan sesi pengguna:

 -E, --preserve-env
        Indicates to the security policy that the user wishes to preserve 
        their existing environment variables.  The security policy may
        return an error if the user does not have permission to 
        preserve the environment.

Jadi, pertama-tama Anda harus mengekspor variabel Anda, lalu menjalankan sudo -E :

$ export DUMMY=dummy
$ sudo -Eu bob bash -c 'echo $DUMMY'
dummy

bash -c tidak diperlukan. Namun, jika saya menjalankan sudo -Eu bob echo "$DUMMY" , variabel diperluas sebelum root shell diluncurkan sehingga tidak menunjukkan bahwa perintah benar-benar berfungsi:

$ sudo -u bob echo $DUMMY  ## looks like it works but doesn't
dummy
$ sudo -u bob bash -c 'echo D:$DUMMY' ## now we see it failed
D:
$ sudo -Eu bob bash -c 'echo D:$DUMMY'  ## works as expected
D:dummy

Anda dapat melakukannya tanpa memanggil shell login:

sudo DUMMY=dummy su ec2-user -c 'echo "$DUMMY"'

atau:

sudo DUMMY=dummy su -p - ec2-user -c 'echo "$DUMMY"'

-p pilihan su perintah melestarikan variabel lingkungan.


-E melakukan pekerjaan untuk saya. Dari man sudo -

-E , --preserve-env
Menunjukkan kebijakan keamanan yang diinginkan pengguna untuk mempertahankan variabel lingkungan mereka yang ada. Kebijakan keamanan dapat mengembalikan kesalahan jika pengguna tidak memiliki izin untuk melestarikan lingkungan.


Linux
  1. Bagaimana Kami Menjalankan Perintah yang Disimpan Dalam Variabel?

  2. Bagaimana Menjalankan Terminal Sebagai Root?

  3. Bagaimana Melewati Variabel Lingkungan ke Docker Containers

  1. Bagaimana cara menghapus variabel lingkungan yang diekspor?

  2. Bagaimana cara mengatur &menjalankan PhantomJS di Ubuntu?

  3. Bagaimana cara memeriksa apakah saya memiliki akses sudo?

  1. Bagaimana Cara Membuat Skrip A Sebagai Root Secara Retroaktif?

  2. Bagaimana Cara Menjalankan Wireshark Di Ubuntu 17.10?

  3. Bagaimana cara mengubah bahasa git saya?