Dlaczego mogę uruchomić powłokę roota za pomocą sudo, nawet z '! „w swoim cieniu?

9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

W drugim polu pliku cienia !oznacza , że użytkownik root nie może się zalogować, ale dlaczego mogę się zalogować do użytkownika root sudo su?

Dlaczego nie mogę się zalogować do użytkownika root za pomocą su rootlub su -?

Sinoosh
źródło
1
„W drugim polu pliku cienia! Oznacza, że ​​użytkownik root nie może się zalogować” Nie, nie robi tego. Gdzie to słyszałeś?
Wyścigi lekkości na orbicie
@LightnessRacesinOrbit, co to znaczy?
George Udosen
@George: muru zacytował instrukcję w swojej odpowiedzi i szczegółowo ją wyjaśnił. Powinieneś przeczytać dokumentację!
Wyścigi lekkości na orbicie

Odpowiedzi:

15

W !polu shadowzaszyfrowanego hasła wpisu oznacza, że ​​żadne hasło nie może zostać uwierzytelnione w stosunku do niego. Od man shadow:

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

Jak mówi instrukcja, nie oznacza to, że nie możesz zalogować się jako root. Oznacza to po prostu, że nie możesz zalogować się jako root przy użyciu hasła do konta root. (Możesz zalogować się jako root za pośrednictwem SSH za pomocą kluczy SSH, na przykład, jeśli wcześniej go skonfigurowałeś, nawet jeśli konto jest zablokowane.)

sudonormalnie uwierzytelnia ze swoim hasłem, a nie root. Można to zmienić poprzez ustawienie jednego targetpw, rootpwlub runaspww sudoers. Jeśli ustawisz jedną z tych opcji i spróbujesz użyć hasła, gdy hasło jest zablokowane, to się nie powiedzie .

muru
źródło
Świetnie, oznacza to, że mogę przejść do dowolnego użytkownika przez sudo z moim hasłem albo jest to użytkownik aktywny, albo użytkownik zablokowany, prawda?
Sinoosh,
1
@Sinoosh przy założeniu braku innych ograniczeń, tak
mur
4

Teraz spójrzmy odpowiednio na polecenia:

  1. sudo su:

    • sudouruchamia polecenie su(użytkownik zastępczy) z uprawnieniami administratora, więc nawet jeśli /etc/shadowpowiedzą lub ma root:!:17179:0:99999:7:::, nadal będzie uruchamiać polecenia z uprawnieniami administratora.
  2. su -lub su root:

    • To faktycznie przełącza się na użytkownika root, który z /etc/shadowpliku nie może się zalogować, więc użycie tych poleceń nie będzie działać. Jeśli chcesz, aby działały, konto root musi zostać odblokowane poprzez podanie hasła.

Podsumowanie:

su -0r su rootprzełącza się na root użytkownika , nie istnieje, więc nie może się zdarzyć, ale sudo suuruchamia polecenie switch z rootuprawnieniami, więc w tym przypadku przejdzie, jeśli jesteś w sudogrupie. W tym przypadku nie logujesz się jako root, tylko działasz jako root, więc przejdzie.

Źródło: Jaka jest różnica między „su -” a „su root”?

George Udosen
źródło
Dziękujemy, to znaczy, sudo suże nie widzi pól przejścia w pliku cienia?
Sinoosh,
1
@Sinoosh sudo suto zły sposób uruchamiania sudo shlub sudo bash.
Bakuriu