Warum kann ich eine Root-Shell mit sudo auch mit einem 'starten? 'in seinem Schatteneintrag?

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:::

Bedeutet im zweiten Feld der Schattendatei, !dass sich der Root-Benutzer nicht anmelden kann, aber warum kann ich mich beim Root-Benutzer anmelden sudo su?

Warum kann ich mich nicht mit su rootoder beim Root-Benutzer anmelden su -?

Sinoosh
quelle
1
"Im zweiten Feld der Schattendatei bedeutet!, Dass sich der Root-Benutzer nicht anmelden kann." Nein, das tut es nicht. Wo hast du das gehört?
Leichtigkeitsrennen im Orbit
@LightnessRacesinOrbit, was bedeutet das?
George Udosen
@ George: Muru zitierte das Handbuch in seiner Antwort und erklärte es ausführlich. Sie sollten die Dokumentation lesen!
Leichtigkeitsrennen im Orbit

Antworten:

15

Ein !im shadowverschlüsselten Passwortfeld des Eintrags bedeutet, dass sich kein Passwort dafür authentifizieren kann. Von 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).

Wie im Handbuch angegeben, bedeutet dies nicht , dass Sie sich nicht als root anmelden können. Dies bedeutet lediglich, dass Sie sich nicht mit einem Kennwort für das Root-Konto als root anmelden können. (Sie können sich über SSH mit SSH-Schlüsseln als root anmelden, wenn Sie es zuvor konfiguriert haben, auch wenn das Konto gesperrt ist.)

sudoNormalerweise authentifiziert er sich mit Ihrem Passwort, nicht mit dem von root. Dies kann durch Setzen eines geändert werden targetpw, rootpwoder runaspwin sudoers. Wenn Sie eine dieser Optionen festlegen und versuchen, ein Kennwort zu verwenden, wenn das Kennwort gesperrt ist , schlägt dies fehl .

muru
quelle
Großartig, es bedeutet, dass ich mit meinem Passwort zu jedem Benutzer von sudo wechseln kann, entweder als aktiver Benutzer oder als gesperrter Benutzer, oder?
Sinoosh
1
@Sinoosh unter der Annahme, dass keine anderen Einschränkungen bestehen, ja
Muru
4

Schauen wir uns nun die Befehle entsprechend an:

  1. sudo su::

    • sudoführt den Befehl su(Ersatzbenutzer) mit Root-Rechten aus, sodass auch dann Befehle mit Root-Rechten ausgeführt werden, wenn der /etc/shadowsagt oder hat root:!:17179:0:99999:7:::.
  2. su -oder su root:

    • Diese tatsächlich schaltet auf den Root - Benutzer , die aus der /etc/shadowDatei nicht einloggen kann , um diese Befehle nicht funktionieren. Wenn Sie möchten, dass sie funktionieren, muss das Root-Konto durch Eingabe eines Kennworts entsperrt werden.

Zusammenfassung:

su -0r su rootwechselt zu Benutzer root , ist nicht vorhanden, kann also nicht passieren, sudo suführt jedoch den Befehl switch mit rootBerechtigungen aus. In diesem Fall wird er ausgeführt, wenn Sie in der sudoGruppe sind. In diesem Fall melden Sie sich nicht als root an , sondern nur als root, damit es losgeht.

Quelle: Was ist der Unterschied zwischen 'su -' und 'su root'?

George Udosen
quelle
Vielen Dank, bedeutet sudo sues, dass keine Passfelder in der Schattendatei angezeigt werden?
Sinoosh
1
@Sinoosh sudo suist der falsche Weg zu laufen sudo shoder sudo bash.
Bakuriu