Normalerweise kann nur root darauf zugreifen /etc/shadow
. Aber Programme mögen su
und sudo
können Passwörter überprüfen, ohne als root ausgeführt zu werden. Die Frage ist also: Warum können diese Programme /etc/shadow
ohne Berechtigungen zugreifen ? Ich habe versucht, mit dem spwd
Modul ohne Berechtigungen über Python darauf zuzugreifen , aber ich habe keinen Zugriff erhalten (wie erwartet). Welchen Mechanismus verwenden diese Programme?
permissions
root
shadow
Kritzefitz
quelle
quelle
sudo
undsu
Sie als root ausführen. Informationen zu den Interna finden Sie unter unix.stackexchange.com/questions/11285/how-does-sudo-work .Antworten:
Weil Programme mögen
su
und eingestelltpasswd
habenSetUID
. Sie können Folgendes überprüfen:Wenn Sie sich in Ihrer Dateiberechtigung umschauen, sehen Sie "s". Wenn jemand versucht, das
passwd
Programm auszuführen , übernimmt er standardmäßig das Privileg des Eigentümers (hier root) der Datei. Dies bedeutet, dass jeder Benutzer das Root-Recht erhalten kann, daspasswd
Programm auszuführen , da nur der Root-Benutzer das Programm bearbeiten oder aktualisieren/etc/passwd
und/etc/shadow
archivieren kann. Andere Benutzer können nicht. Wenn der normale Benutzer daspasswd
Programm auf seinem Terminal ausführt, wird daspasswd
Programm als "root" ausgeführt, da die effektive UID auf "root" gesetzt ist. So kann der normale Benutzer die Datei problemlos aktualisieren.Sie können den
chmod
Befehl mit den Argumentenu+s
oder verwendeng+s
, um die Bits setuid und setgid für eine ausführbare Datei festzulegenLange Antwort: Set-User_Id (SUID): Power für einen Moment:
Wenn ein Benutzer eine Datei ausführt, verfügt der Prozess, der zu dieser Ausführung führt, standardmäßig über dieselben Berechtigungen wie der Benutzer. Tatsächlich erbt der Prozess seine Standardgruppen- und Benutzeridentifikation.
Wenn Sie das SUID-Attribut für eine ausführbare Datei festlegen, verwendet der Prozess, der zu seiner Ausführung führt, nicht die Benutzeridentifikation, sondern die Benutzeridentifikation des Dateieigentümers.
Der von Dennis Ritchie erfundene SUID-Mechanismus ist ein potenzielles Sicherheitsrisiko. Es ermöglicht einem Benutzer, verborgene Kräfte zu erlangen, indem er eine solche Datei ausführt, die root gehört.
Die Auflistung zeigt, dass passwd für alle lesbar ist, Schatten jedoch für Gruppen und andere nicht lesbar. Wenn ein Benutzer, der das Programm ausführt, zu einer dieser beiden Kategorien gehört (wahrscheinlich zu anderen), schlägt der Zugriff im Lesetest für Schatten fehl. Angenommen, ein normaler Benutzer möchte sein Passwort ändern. Wie kann er das machen? Er kann das tun, indem er rennt
/usr/bin/passwd
. Viele UNIX / Linux-Programme verfügen über einen speziellen Berechtigungsmodus, mit dem Benutzer vertrauliche Systemdateien aktualisieren können -/etc/shadow
ähnlich wie etwas, das sie nicht direkt mit einem Editor tun können. Dies gilt für daspasswd
Programm.Der Buchstabe s in der Benutzerkategorie des Berechtigungsfelds stellt einen speziellen Modus dar, der als set-user-id (SUID) bezeichnet wird. In diesem Modus verfügt ein Prozess während der Instanz des Programms über die Berechtigungen des Eigentümers der Datei. Wenn also ein nicht privilegierter Benutzer passwd ausführt, ist die effektive UID des Prozesses nicht die des Benutzers, sondern die des Stamms - des Eigentümers des Programms. Dieses SUID-Privileg wird dann von passwd zum Bearbeiten verwendet
/etc/shadow
.Referenzlink
quelle
S
ist eigentlich anders alss
.s
bedeutet: execute + setuid, währendS
nur setuid ohne execute bedeutet. Dadurch wird sichergestellt, dass Sie feststellen können, ob der jeweilige Benutzer noch über die Ausführungsberechtigung verfügt, da das Flags
/S
den von demx
Flag normalerweise verwendeten Speicherplatz verwendet .info ls "What information is listed"