Dlaczego sudo -s jest lepszy od sudo su?


28

Widziałem wiele komentarzy tutaj w Ask Ubuntu, dotyczących preferencji w używaniu sudo -szamiast sudo su.

Dla mnie te dwa polecenia robią dokładnie to samo. Ale dlaczego sudo -sma być lepiej?


1
Myślę, sudo -iczy sudo sujest lepszy niż sudo -sz powodów wymienionych tutaj: ubuntuforums.org/showpost.php?p=6188826&postcount=4 także: jest to możliwe duplikat superuser.com/questions/29/...
— zorganizować

Myślę, że to pytanie powinno zostać przeniesione na unix.stackexchange.com
— igi

Odpowiedzi:


26

Myślę, że sudo -snie jest „lepszy”, jest po prostu inny.

sudo -s

przechowuje katalog $ HOME, więc podczas uruchamiania programów będą używać plików konfiguracyjnych (a nie roota) itp. Wada: mogą również zmienić własność plików w katalogu $ HOME, typowym przykładem jest .Xauthorityplik, ale ja nigdy nie doświadczyłem z tym problemu.

sudo su lub sudo -i

programy będą używać katalogu głównego root i jego plików konfiguracyjnych. Może to być bardziej intuicyjne, ale oznacza również, że nie będzie korzystał z żadnej konfiguracji, którą sam sobie ustawiłeś (aliasy, historia bash, ...).


1
Okej, teraz rozumiem różnicę. Dziękuję Ci!
— fitojb

1
„sudo su” nie jest równoważne z „sudo -i”. „sudo -i” jest równoważne z „sudo su -”, ale „sudo su -” zachowuje bieżący katalog roboczy, podczas gdy „sudo -i” przenosi cię do domu roota
— Gregory Pakosz

13

Ponieważ sudo -snie zmieni twoich zmiennych środowiskowych, szczególnie $HOME, które pozostaną HOME=/home/USER. Jeśli użyjesz sudo sutej opcji, zmieni się to, HOME=/rootco może mieć negatywne skutki uboczne, gdy programy zaczniesz próbować uzyskać dostęp do katalogu domowego użytkownika.

Zasadniczo jest to jak sudovs gksudopodczas uruchamiania programów graficznych.


5

Oprócz wspomnianych już różnic w zmiennych środowiskowych, uważam sudo sugłupie i marnotrawstwo, ponieważ prosisz sudoo uruchomienie sujako root, i poprosisz o uruchomienie powłoki jako root. Po co prosić program, aby poprosił program o podanie powłoki roota, skoro pierwszy program może dać ci tę powłokę? Czy ma to jakiekolwiek znaczenie praktyczne? Nie, jestem pedantyczny.


Masz rację, to jest trochę zbędne.
— fitojb

Cóż, nie do końca tak: jeśli używasz sudo surootowania, tak, po prostu idź sudo -ina przykład. Ale to nie pomaga, gdy chcemy stać się inny użytkownik: sudo su - myuser.
— hggdh

2
Jest jeszcze jedna różnica: sudo -iprzejdzie do /rootkatalogu i sudo supozostanie w katalogu, w którym się znajdujesz.
— laurent

1
@hggdh, sudo -u myuser.
— psusi

3

Nie zgadzam się z innymi odpowiedziami, rozważając przypadki, w których chcesz zalogować się jako użytkownik, który nie ma powłoki. Jest to bardzo częsty przypadek użytkowników przypisanych do usług.

Użycie „sudo su” uruchomi powłokę określoną przez użytkownika. Jednak w przypadku użytkownika przypisanego do procesu serwera powłoką jest / usr / bin / false, a logowanie się nie powiedzie. Zamiast tego należy wprowadzić jako:

sudo -sHu <server-user>

spowoduje to zalogowanie się i przejście do ścieżki domowej, nawet jeśli użytkownik nie ma przypisanej powłoki

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.