Bu, programınızı sudoveya ile nasıl çağırdığınıza bağlıdır su.
Örneğin şu an bulunduğum sistemde:
.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]
[1] = / usr / yerel / sbin: / usr / yerel / bin: / usr / sbin: / usr / bin: / sbin: / bin
Env = Ortam değişkenleri 1 ve 5 için sıfırlanır, 2,3,4.
Yani bir komut dosyası veya farklı görebilirsiniz farklı seçeneği ile başlatılan bir program $PATH, $HOMEkendi kabuk farklı okuyabilir .bashrc, .profileve ortam değişkenleri. İle ilgili dosyayı okur $HOME. Her kullanıcı ortamını farklı bir şekilde değiştirebilir (değişkenler $PATH, .bashrc, .profile, .bash_profile, alias ...). Özellikle bir kullanıcı, içinde dizinlerin farklı bir sırasına sahip olabilir $PATHve bunun bir sonucu olarak, bir komut dosyası, örneğin /home/$USER/bin, kökten beklenen yoldaki yerine bir komut çalıştırabilir .
Programı altında sudo -iroot olarak oturum açtığınız gibi su -çalıştırabilirsiniz, ancak ile birlikte sudo MyCommandveya birlikte çalıştırdığınızda farklı davranışlar gösterebilirsiniz su -c MyCommand.
Kimden man su:
Açıklama bölümünde:
Geçerli ortam yeni kabuğa geçirilir . $ PATH değeri normal kullanıcılar için / bin: / usr / bin olarak ayarlanır, veya / sbin: / bin: / usr / sbin: / usr / bin, superuser için
...
Seçenekler bölümünde:
- , -l , --login Kullanıcının doğrudan giriş yapması durumunda, kullanıcının beklediğine benzer
bir ortam sağlayın .
Adamdan sudo
-i , --login
Hedef kullanıcının şifre veritabanı girişi tarafından belirtilen kabuğu bir giriş kabuğu olarak çalıştırın. Bu, .profile veya .login gibi girişe özgü kaynak dosyalarının kabuk tarafından okunacağı anlamına gelir. Bir komut belirtilirse, kabuğun -c seçeneği ile yürütülmek üzere kabuğa geçirilir. Hiçbir komut belirtilmezse, etkileşimli bir kabuk yürütülür. sudoKabuğu çalıştırmadan önce bu kullanıcının giriş dizinini değiştirmeye çalışır. Komut, kullanıcının oturum açtığında alacağıkine benzer bir ortamla çalıştırılır . Sudoers'daki (5) Komut Ortamı bölümü, -i seçeneğinin, sudoers politikası kullanılırken bir komutun çalıştırıldığı ortamı nasıl etkilediğini manuel olarak belgeler.