Jaka jest różnica między „su -”, „sudo bash” i „sudo sh”?

29

Chciałbym wiedzieć, jaka jest różnica między

  • su -
  • sudo bash
  • sudo sh

Nie mogę zalogować się jako root podczas pracy, su -ponieważ nie mam hasła roota - mam na myśli moje hasło użytkownika, które mogę, sudo "command" ale to hasło nie działa, ponieważ su - mogę zalogować się jako root za sudo bashpomocą hasła użytkownika i mogę się zalogować robienie, sudo shale wtedy pojawia się wiersz polecenia w tej formie #

Patryk
źródło

Odpowiedzi:

27

tło

W Linuksie (i ogólnie w Uniksie) istnieje SuperUser o nazwie Root . SuperUser może robić wszystko i wszystko, a tym samym wykonywanie codziennej pracy, ponieważ SuperUser może być niebezpieczny. Możesz wpisać polecenie niepoprawnie i zniszczyć system. W idealnym przypadku działasz jako użytkownik, który ma tylko uprawnienia potrzebne do danego zadania. W niektórych przypadkach jest to koniecznie rootowanie, ale przez większość czasu jest to zwykły użytkownik.

su -

To polecenie służy do logowania na koncie root.
Domyślnie hasło do konta root jest zablokowane w Ubuntu. Oznacza to, że nie można zalogować się bezpośrednio jako root lub użyć polecenia su, aby zostać użytkownikiem root. Ponieważ jednak konto root istnieje fizycznie, nadal można uruchamiać programy z uprawnieniami na poziomie administratora. W tym miejscu pojawia się sudo - pozwala autoryzowanym użytkownikom (zwykle użytkownikom administracyjnym) na uruchamianie niektórych programów jako root bez konieczności znajomości hasła roota.

Zobacz Jak włączyć konto root .

sudo sh

To polecenie uruchamia „sh” jako superużytkownik.
Narzędzie sh to interpreter języka poleceń, który wykonuje polecenia odczytane z ciągu wiersza poleceń, standardowego wejścia lub określonego pliku.

sudo bash

To polecenie uruchamia „bash” jako superużytkownik.
Bash jest tłumaczem powłoki lub języka poleceń. Bash jest powłoką kompatybilną z sh, która zawiera przydatne funkcje z powłoki Korn (ksh) i powłoki C (csh). Jest przeznaczony do zgodności ze standardem powłok i narzędzi IEEE POSIX P1003.2 / ISO 9945.2. Oferuje ulepszenia funkcjonalne w stosunku do sh zarówno w zakresie programowania, jak i interaktywnego użytkowania. Ponadto większość skryptów sh może być uruchamiana przez Bash bez modyfikacji.

Odniesienia: 1 , 2 , 3 .

desgua
źródło
7
Warto zauważyć, że możesz zalogować się jako superużytkownik, uruchamiając sudo su -bez hasła roota. Ponieważ sudo uruchamia su -polecenie z uprawnieniami administratora, użytkownik zostanie poproszony tylko o podanie hasła użytkownika. Ma to tę zaletę, że konfiguruje środowisko użytkownika root, czego nie można zrobić po prostu uruchamiając powłokę z sudo.
Aaron D
6

su -:

Spowoduje to zmianę identyfikatora użytkownika i odziedziczy zmienne środowiskowe, tak jakbyś zalogował się z tym użytkownikiem. Zwykle używasz tego formatu su - <userid>do logowania się jako użytkownik. Jeśli upuścisz „identyfikator użytkownika”, zakłada się, że próbujesz zalogować się jako root - czego nie możesz (chyba że zmienisz hasło roota).

sudo bashI sudo sh:

Wszystko po sudo jest programem do uruchomienia - więc w takich przypadkach należy uruchomić kilka powłok - odpowiednio bash i dash. użyj man bashi man shpo więcej szczegółów na temat różnych powłok.


Powiązane pytania:

fossfreedom
źródło
Ok, dziękuję za odpowiedź, ale jakie jest domyślne hasło dla roota? Gdzie mogę to znaleźć ?
Patryk
Katalog główny @lordmonkey nie ma hasła i nie potrzebuje go. sudo -ida ci powłokę logowania, tak jak su -sudo, z wyjątkiem sudo pytającego o twoje hasło, a nie roota.
geirha