Co właściwie robi „sudo -s”?

26

Używam Ubuntu 10.04.

Zauważyłem, że po uruchomieniu „ sudo -s ” w terminalu monit zmienił się z

XXX @ XXX

do

root @ XXX ”,

wygląda na to, że zmieniło się w uprawnienie root.

Ale kiedy sprawdzić dokumentację komendy „sudo” tutaj , to wyjaśnia inna historia „sudo -s”, może ktoś mi wyjaśnić, co to jest „ sudo -s ” robi dokładnie?

Leem
źródło
6
Powinieneś o to zapytać na stronie askubuntu.com
7
Dlaczego askubuntu.com? sudonie jest specyficzny dla Ubuntu ...
Dave Sherohman,

Odpowiedzi:

9

Oba nie są tak naprawdę niespójne - sudopolecenie zawsze zmienia użytkownika, albo na root, albo na użytkownika określonego za pomocą -uprzełącznika. Wszystko, co -srobi, to skrót do uruchamiania powłoki jako ten użytkownik. To naprawdę odpowiada:

sudo $SHELL

z wyjątkiem tego, że prawdopodobnie nastąpi awaria /bin/shlub coś, jeśli SHELLnie zostanie ustawione.

TomH
źródło
6

sudo -suruchamia powłokę określoną w $SHELLzmiennej środowiskowej jako administrator / root. Możesz określić innego użytkownika za pomocą -u.

$SHELLZmienna zawiera ścieżkę do domyślnej powłoki logowania użytkownika. Rzeczywiste ustawienie domyślnego programu powłoki jest zwykle w etc/passwd. W zależności od tego, co zrobiłeś w bieżącej sesji, zmienna $ SHELL może nie zawierać aktualnie używanego programu powłoki. Jeśli na przykład zalogujesz się automatycznie za pomocą zsh, ale uruchomisz bash, $ SHELL się nie zmieni /bin/zsh.

Pokaż bieżącego użytkownika i program powłoki: echo $(whoami) is logged in and shell is $0

  • whoami wypisuje nazwę użytkownika, pod którą pracuje użytkownik.
  • $0 zawiera nazwę / ścieżkę aktualnie uruchomionego programu (w tym przypadku program powłoki).
RKelley
źródło
3

Z instrukcji:

sudo pozwala uprawnionemu użytkownikowi na wykonanie polecenia jako administrator lub inny użytkownik, jak określono w pliku sudoers.

-s Shell, uruchamia powłokę określoną przez zmienną środowiskową SHELL, jeśli jest ustawiona, lub powłokę określoną w passwd (5).

Mówiąc poważniej, sudo -s uruchamiają zmienną środowiskową powłoki. Ponieważ nie dodałeś żadnej zmiennej, działa ona tak, jak określono w passwd, więc łączy Cię jako root.

Anarko_Bizounours
źródło
1
Z podręcznika nie wynika, że ​​jeśli nie podasz użytkownika, domyślnie root. Będziesz musiał przeczytać opis -uopcji, aby się tego nauczyć. Ale dla kogoś, kto nie jest zaznajomiony sudo, nie wiedziałby, na kogo patrzeć -u.
wisbucky,
0

Wygląda na to, że tworzy kolejną instancję powłoki na wierzchu bieżącej powłoki, ale z uprawnieniami roota. Założę się, że sudo -sjeśli to zrobisz, jeśli wpiszesz polecenie exit, wrócisz do oryginalnej powłoki.

Noah Duncan
źródło
-1

sudo -s pozwala uruchomić komendę, dla której jesteś wstępnie autoryzowany [patrz / etc / sudoers], prawdopodobnie prosząc cię o potwierdzenie aktualnego ID.

Eric Herlitz
źródło