Ini sangat tergantung pada bagaimana Anda memanggil program Anda dengan sudo
atau su
.
Misalnya pada sistem di mana saya saat ini:
.bashrc
COMMAND $HOME $USER Env. $PATH
1. sudo -i (root) root root [1]
2. sudo -s (USER) root USER /home/${USER}/bin:[1]
3. sudo /bin/bash (USER) root USER /home/${USER}/bin:[1]
4. sudo su (root) root USER [1]:/usr/games:/usr/local/games
5. sudo su - (root) root root [1]
Di mana [1] = / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin
Env = Variabel lingkungan diatur ulang untuk 1 dan 5, diambil dari $ USER di 2,3,4.
Jadi skrip, atau program yang diluncurkan dengan opsi yang berbeda dapat melihat yang berbeda $PATH
,, $HOME
shellnya dapat membaca yang berbeda .bashrc
, .profile
dan variabel Lingkungan. Bunyinya file yang terkait dengan $HOME
. Setiap pengguna dapat memodifikasi lingkungannya dengan cara yang berbeda (variabel $PATH
,, .bashrc, .profile, .bash_profile, alias ...). Secara khusus seorang pengguna dapat memiliki urutan direktori yang berbeda di dalam bukunya $PATH
dan, sebagai konsekuensinya, sebuah skrip dapat mengeksekusi sebuah perintah misalnya di /home/$USER/bin
alih-alih yang ada di jalur yang diharapkan dari root.
Anda dapat menjalankan program di bawah sudo -i
saat Anda login sebagai root dengan su -
, tetapi Anda dapat memiliki perilaku yang berbeda jika Anda menjalankannya dengan sudo MyCommand
atau dengan su -c MyCommand
.
Dari man su
:
Di bagian deskripsi:
Lingkungan saat ini diteruskan ke shell baru . Nilai $ PATH disetel ulang ke / bin: / usr / bin untuk pengguna normal, atau / sbin: / bin: / usr / sbin: / usr / bin untuk superuser
...
Pada bagian opsi:
- , -l , --login
Menyediakan lingkungan yang mirip dengan apa yang diharapkan pengguna seandainya pengguna masuk secara langsung .
Dari manusia sudo
-i , --login
Jalankan shell yang ditentukan oleh entri basis data kata sandi pengguna target sebagai shell login. Ini berarti bahwa file sumber daya khusus masuk seperti. Profil atau .login akan dibaca oleh shell. Jika suatu perintah ditentukan, perintah tersebut diteruskan ke shell untuk dieksekusi melalui opsi -c shell. Jika tidak ada perintah yang ditentukan, shell interaktif dijalankan. sudo
mencoba untuk mengubah ke direktori home pengguna itu sebelum menjalankan shell. Perintah dijalankan dengan lingkungan yang mirip dengan yang akan diterima pengguna saat login . Bagian Lingkungan Perintah di sudoers (5) manual mendokumentasikan bagaimana opsi -i mempengaruhi lingkungan di mana perintah dijalankan ketika kebijakan sudoers digunakan.