SSH bir oturum açma kabuğu başlatır. su
, varsayılan olarak değildir.
Özellikle, bu ~/.profile
kullanıcının (veya benzer dosyanın) kaynaklanmadığı anlamına gelir . Dolayısıyla, yapılan değişiklikler ~/.profile
geçerli olmayacaktır. Aynı zamanda şu da olabilir:
- bir giriş kabuğuna başlasanız bile, köklerde
~/.profile
kullanıcının ortamını kirletebilecek farklı değişiklikler yapıldı .
/etc/profile
ve /etc/profile.d/*
ayarları farklı kullanıcılar için farklı uygulayabilir (varsayılan olarak olmasa da)
- SSH yapılandırmasında farklı kullanıcılar için farklı ayarlar olabilir.
PAM yapılandırması farklıdır. Örneğin /etc/pam.d/ssh
:
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
oysa ki /etc/pam.d/su
:
session required pam_env.so readenv=1 envfile=/etc/default/locale
Bu SSH yükleri anlamına gelir ~/.pam_environment
, ancak yüklenmez su
. Bu büyüktür, çünkü ~/.pam_environment
ortam değişkenleri için kabuktan bağımsız bir yerdir ve GUI, TTY veya SSH'den giriş yaparsanız uygulanır.
Bir giriş kabuğunu başlatmak için şunlardan birini çalıştırın:
su - <username>
sudo -iu <username>
Misal:
# su muru -c 'sh -c "echo $HOME $PATH"'
/home/muru /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
# su - muru -c 'sh -c "echo $HOME $PATH"'
/home/muru /home/muru/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
# sudo -iu muru sh -c 'echo $HOME $PATH'
/home/muru /home/muru/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# sudo -u muru sh -c 'echo $HOME $PATH'
/root /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# ssh muru@localhost 'echo $HOME $PATH'
/home/muru /home/muru/devel/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Bunun yerine bir kabuk başlayan bir komutu çalıştırmak eğer bile SSH ile, bir giriş kabuğu (almaması dikkat çalıştırmak olmayacak ~/bin
mevcuttur SSH testinde su -
ve sudo -i
). Doğru sonucu almak için, kabuğumu bir giriş kabuğu olarak çalıştıracağım:
# ssh muru@localhost '$SHELL -ilc "echo \$HOME \$PATH"'
/home/muru /home/muru/bin:/home/muru/devel/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Bu yüzden de sudo su
ve sudo -s
bir kök kabuğu almanın berbat yollardır. Bu iki yol da çevre tarafından kirletilir.
İlişkili: