Kullanıcı olarak oturum açma ile root üzerinden su kullanan kullanıcıları değiştirme arasındaki fark nedir?


17

Bir çeşit sunucunuz olduğunda, örneğin sunucuya erişebilir ssh user1@ipve ssh root@iproot kullanıcısına su ayrıcalıklarıyla gidebilir ve daha sonra adresine gidebilirsiniz su user1. Benim düşünceme göre, her iki yol da beni aynı kullanıcı ortamına götürmelidir (bu durumda, "kullanıcı1"), ama gerçek tecrübemde öyle değil, çünkü içinde ssh user1@ipyüklü su user1olmayan şeyler var.

Neden?

Yanıtlar:


15

SSH bir oturum açma kabuğu başlatır. su, varsayılan olarak değildir.

Özellikle, bu ~/.profilekullanıcının (veya benzer dosyanın) kaynaklanmadığı anlamına gelir . Dolayısıyla, yapılan değişiklikler ~/.profilegeçerli olmayacaktır. Aynı zamanda şu da olabilir:

  • bir giriş kabuğuna başlasanız bile, köklerde ~/.profilekullanıcının ortamını kirletebilecek farklı değişiklikler yapıldı .
    • /etc/profileve /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_environmentortam 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 ~/binmevcuttur 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 suve sudo -sbir kök kabuğu almanın berbat yollardır. Bu iki yol da çevre tarafından kirletilir.


İlişkili:


2
Soruları almadan önce uyanık olmalıyım gibi görünüyor :) cevabınız harika ve benim doğru cevabı hedeflemek için özledim. Aferin +1
Videonauth

-1

Genel olarak bu stratejik bir farktır.

Süper kullanıcı olarak giriş yaptıysanız, her zaman her şeyi değiştirebilirsiniz ... yani - yıkıcı hatalara karşı koruma yok, güvenlik için geçici olarak başka bir kullanıcıya geçmeniz gerekir.

Oysa: sınırlı ayrıcalıklarla oturum açtıysanız, bazı felaket hataları riskinden kaçınırsınız, çünkü bu güce geçici erişim için kasıtlı olarak su köküne geçmeniz gerekir, ancak şimdi güvenli bir kullanıcıya varsayılan geri dönüş konumuna sahipsiniz .

Bu nedenle fark, teknik değil, gerçekten stratejiktir.


Soru, kök kullanıcının tam olarak diğer kullanıcılardan farkı değildi. Bir sunucu kullanıcısına doğrudan ssh üzerinden erişmek ve buna zaten kök kullanıcının içindeki su aracılığıyla erişmek arasındaki farktı. Her neyse, söylediklerinize katılıyorum haha ​​teşekkürler
Miguel Corti

Ah tamam, özür dilerim ... Aslında herkesin neden teknik ayrıntılara gittiğini merak ediyordum, sanırım niyetinizi yanlış okudum.
Başkan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.