Odpowiedzi:
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.
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
su
można również uruchomić tylko jedno polecenie:su -c 'command ...'
sudo -i
i sudo su -
, a nie między sudo
i su
.
sudo su -
sensu?