“Sudo -i” ve “sudo bash -l” arasındaki fark nedir


13

Bir yoktur son soru birden sistem yöneticilerinin root olarak çalışan ve ilgili sudo bash -lbaşvuruda bulunuldu.

Ben google ve SE bu aramış ama arasındaki farkı anlayamıyorum sudo bash -lve sudo -i.

Bash ve sudo için man sayfalarından fark sudo bash -l, kök kullanıcının ~ / .bash_profile, ~ / .bash_login ve ~ / .profile ve ~ / .bash_logout'u çalıştırması gibi görünebilir , ancak kendimi test etmem gibi görünüyor Kök olanı değil, normal kullanıcının .bashrc dosyasını çalıştırır. Hangi ifadenin ~ sayfalarında atıfta bulunduğunu yanlış anlamış olabilirim. Fark ve kullanım senaryolarının açıklığa kavuşturulması takdir edilecektir.

Yanıtlar:


10

/ Etc / passwd içinde belirtilen kök kullanıcı oturum açma kabuğunun bash olmaması durumunda, ikinci komut size kök olarak bir bash kabuğu alırken, ilk komut kök kullanıcının sahip olduğu etkileşimli kabuk kullanacaktır.


Merhaba @ johnshen64, farklı kullanım senaryolarını netleştirebilir misiniz?
Rqomey

2
insanlar kullandıkları kabuğu severler, bu yüzden bash kullandığınızdan emin olmak istiyorsanız, ikinci form kullanılmalıdır. ikinci form aynı zamanda gerçek bir girişi simüle eder (-l ne demektir). Tabii ki, sadece sudo -i kullanarak etkileşimli kabuk olarak kullanıcının (varsayılan olarak root) bash olmadığını bulduğunuzda bash yazabilirsiniz. aksi takdirde fark çok küçüktür. diğer cevabın da gösterdiği gibi, bazı küçük çevre farklılıkları da vardır. çoğu durumda fark önemli değildir ve birincisi daha kısadır, çünkü çoğu yaygın dağıtım bash kullanır. nadiren 2. formu kullanın.
johnshen64

4

Ayrıca @ johnshen64 cevap eklemek için sudo -iinvokasyon $USERNAMEenv değişkeni rootve cd ~kullanıcı evine böyle güncellediğini fark ettim ;

$ sudo -i
[root@workstation001 ~]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 ~]# echo $USERNAME
root
[root@workstation001 userXXX]# echo $PWD
/root

Ancak, için işaretlenmemiş sudo bash -l $USERNAMEve çalışma dizini değişmez. (bu diğer kullanıcılar arasında tutarlı olmasa da, yorumlara bakın ...)

$ sudo bash -l
[root@workstation001 userXXX]# id
uid=0(root) gid=0(root) groups=0(root)
[root@workstation001 userXXX]# echo $USERNAME
userXXX
[root@workstation001 userXXX]# echo $PWD
/home/userXXX

Yani muhtemelen ~/.bashrcaynı sırayla değil, aynı sırayla vb.

( .bashrckutum tamircilik tarafından biraz dağılmış olabilir, bu yüzden YMMV)


Teşekkürler @Tom H: echo $USERNAMEbenim için iki kez kök döndürür (ubuntu masaüstümde ve centos 5.2'de). Ancak PWD rapor ettiğiniz gibidir.
Rqomey
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.