Wenn ich mir anschaue
usr/bin/
Verzeichnis, sah ich die Befehlszeile mit passwd
-rwsr-xr-x. 1 root root 30768 2012-02-22 20:48 /usr/bin/passwd
und es ermöglicht die Änderung, um Root-Berechtigungen zu erhalten. mit s.
Ich war erstaunt, dass nur root möglicherweise das Passwort eines anderen Benutzers ändern kann mit
passwd user
Ich möchte den Speicherort dieses Befehls finden und nachschlagen.
ist dieser Befehl auch Teil des Verzeichnisses usr/bin/? oder ist es etwas anderes
das, was ich tun möchte, ist.
Ich melde mich an
user1
und Typ
[user1] passwd user2
natürlich ist es irgendwie blockiert, aber ich möchte mehr darüber wissen.
Antwort1
Unix (und Linux) hat das Konzept vonrealBenutzer undWirksamBenutzer. Ein Setuid-Programm wie /usr/bin/passwd
setzt den effektiven Benutzer auf den Besitzer der Datei; in diesem Fall setzt es den effektiven Benutzer auf root
.
Was ein Programm mit diesen erhöhten Berechtigungen macht, bleibt dem Programm selbst überlassen.
Wenn Sie dem passwd
Programm einen Benutzernamen übergeben, wird geprüft, ob derrealDer Benutzer ist root. Wenn dies der Fall ist, ist die Ausführung erfolgreich, andernfalls wird ein Fehler zurückgegeben.
Der root
Benutzer kann es also ausführen /usr/bin/password user2
und es funktioniert, aber wenn user
er denselben Befehl ausführt, schlägt es fehl. Es gibt nur ein Programm, aber die Funktionsweise ändert sich je nach Benutzer, der es ausführt.
Antwort2
Die passwd
Binärdatei ist suid, da sie Rootberechtigung benötigt, um die /etc/shadow
Datei zu ändern. Sie erlaubt es einem nicht privilegierten Benutzer nicht, das Passwort eines anderen Benutzers zu ändern. Sie erlaubt es, root
das Passwort eines beliebigen Benutzers zu ändern, aber das ist nicht der Grund, warum sie suid ist.