Jaka jest różnica między sudo -i i sudo su -

Odpowiedzi:

30

Mogą zapewniać funkcjonalnie zbliżone do tej samej rzeczy, ale wydaje się, że „sudo -i” ma mniejszą wagę i zachowuje pewne przydatne odniesienia w twoim środowisku.

Możesz zobaczyć dodatkowe procesy, patrząc na „ps auxf” (f daje widok lasu)

sudo -i daje to drzewo procesów

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su - daje to drzewo procesów

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

Zauważ, że zaczynają od tego samego pid procesu bash, 4482, ale to su - wydaje się odradzać kolejny krok.)

Twoje pierwsze „sudo” już podnosi poziom dostępu do rootowania. Uruchomienie su bez podania nazwy użytkownika w sudo powoduje zmianę bieżącego użytkownika na root.

Innym sposobem na sprawdzenie tego jest uruchomienie obu poleceń za pomocą strace -f.

strace -f -o sudoi sudo -i

vs

strace -f -o sudosu sudo su -

Jeśli rozróżnisz te dwie struny, zobaczysz, że więcej osób jest ściganych przez sudo su -.

Jeszcze jedna rzecz.

sudo -i utrzymuje dodatkowe zmienne środowiskowe ustawione przez SUDO.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - kasuje te zmienne.

Joel K.
źródło
Dzięki, głosowałem za właściwą odpowiedzią. Jeszcze jedno pytanie, więc czy nie ma sudo su -sensu?
Howard
Jeśli chcesz wyczyścić odwołania SUDO, może być to przydatne. Więc nie ma sensu w tym przypadku.
Joel K
Istnieją również duże różnice w obsłudze argumentów, obsłudze zmiennych środowiskowych i bezpieczeństwie, gdy staje się użytkownikiem innym niż root. Zobacz, co dodałem tutaj: serverfault.com/q/601140/102814
Craig Ringer
1

Odpowiedź od strzału: Nie, to nie to samo.

Długa odpowiedź: sudo i su - to różne programy, które wykonują to samo zadanie, czyli podnoszenie uprawnień do rootowania.

su był de facto sposobem na rootowanie w systemach Linux. Jednak zawsze istniała potrzeba oddzielenia uprawnień i pozostawienia niektórych informacji kontrolnych. Również gdy wykonujesz su - wszystko, co robisz, jest wykonywane jako root i niebezpieczne jest posiadanie tak dużej mocy. Tutaj sudo przybyło na ratunek.

sudo ma pewne cechy, których su nie ma. Kluczowym elementem w sudo jest możliwość uruchomienia polecenia „one” jako root, a następnie upuszczenia uprawnień zwykłemu użytkownikowi. Przykład: Usuń plik należący do roota.

sudo rm /root/someFile

To polecenie usunie plik, ponieważ sudo podniesie poziom rootowania za każdym razem, gdy użyjesz polecenia sudo przed innym poleceniem. Następne uruchomione polecenie zostanie uruchomione jak zwykły użytkownik (chyba że na początku dodasz polecenie sudo). Pozwala to na wykonanie zadania administracyjnego, a następnie natychmiastowe usunięcie uprawnień, co pomaga uniknąć niebezpiecznych warunków.

sudo zapewnia również inne korzyści, takie jak ograniczenie zestawu programów, które użytkownik może uruchamiać, loguje polecenia uruchamiane w sudo i inne rzeczy. Aby uzyskać więcej informacji sudo w pigułce

Kiedy robisz su - lub sudo -i robisz to samo. To staje się rootem, ale należy pamiętać, że su i sudo są zupełnie inne i zapewniają różne narzędzia jako administrator systemu. Osobiście NIGDY nie uruchamiam su - a moja polityka pam zabrania tego , nie pozwalając nikomu go uruchamiać. W moich systemach zawsze musisz używać sudo ze względu na dodatkowe korzyści.

Więcej informacji: Używanie i włączanie sudo

Termiux
źródło
sumożna również uruchomić tylko jedno polecenie:su -c 'command ...'
Eliah Kagan
Pytanie dotyczyło różnicy między sudo -ii sudo su -, a nie między sudoi su.
Alessio Gaeta,