Wenn ein normaler Benutzer Änderungen an der passwd-Datei vornehmen möchte, erhält der Benutzer von setuid den effektiven Benutzerzugriff. Benutzer wird vorübergehend root und kann passwd bearbeiten.
Allerdings können Sie nur Ihr Passwort richtig bearbeiten, und nicht alle anderen? Ihr effektiver Benutzerzugriff ist jedoch root. Wie kommt es, dass Sie andere Passwörter als Ihre nicht ändern dürfen?
Wenn Sie ein Programm mit setuid ausführen, was bedeutet es dann eigentlich, wenn der effektive Benutzer root ist, aber die tatsächliche Benutzer-ID immer noch Ihr Name ist?
Sie dürfen nur Ihr Passwort ändern, obwohl Sie eine gültige Benutzer-ID von root haben, da zum Zeitpunkt der Passwortänderung die tatsächliche Benutzer-ID und nicht die gültige Benutzer-ID überprüft wird. Sie können nur die effektive Benutzer-ID und nicht die tatsächliche Benutzer-ID ändern.
Nur der Root-Benutzer kann die tatsächliche Benutzer-ID ändern, um das Programm als nicht privilegierter Benutzer auszuführen. Die tatsächliche Benutzer-ID kann nicht geändert werden, da sie zum Zeitpunkt des Sitzungsstarts festgelegt wurde.
Aus diesem Grund kann nur Ihr Passwort geändert werden, da die tatsächliche Benutzer-ID nicht geändert wird (da es immer noch Ihre ist, nicht Ihre Root-ID).
quelle
Ein früher Hack in Unix bestand darin, eine symbolische Verknüpfung zu einem setuid-Shell-Skript herzustellen und die Verknüpfung aufzurufen
-i
. Dies hat zur Folge, dass das Skript so aufgerufen wird,sh -i
dass anstelle des-i
beabsichtigten Ausführens des aufgerufenen Skripts eine interaktive Shell gestartet wird, die dann die vollen Berechtigungen bietet. Eine effektive Benutzer-ID kann verwendet werden, um diepasswd
Datei für einen beliebigen Benutzer oder Root selbst zu ändern . Die beste Möglichkeit, sich dagegen zu schützen, besteht darin, SELinux zu verwenden, um zu verhindern, dass vertrauenswürdige Skripts oder Programme außerhalb des Bereichs geändert werden, in dem SELinux die Ausführung zulässt.Eine andere Technik besteht darin, ein unveränderliches Bit für wichtige Dateien zu haben, die nicht einmal vom Root-Benutzer geändert werden können (außer im Einzelbenutzermodus).
Als Root können Sie Benutzer einladen, sich ohne Kennwort an Ihrem System anzumelden und als Benutzer zu erscheinen, aber normale privilegierte Prozesse versuchen sehr, dies zu verhindern.
Wenn Sie Netzwerk-Dateisysteme verwenden, wird der Root-Benutzer anstelle von root als niemand in diesem Dateibereich behandelt, sodass nicht vertrauenswürdige Computer einem vertrauenswürdigen Netzwerk wie einem Universitätscampus beitreten können.
quelle
Sie dürfen nur Ihr Passwort ändern, da das Set-Password-Programm so programmiert ist, dass es nur Passwörter ändert, obwohl es die Macht hat, irgendetwas zu tun. Es wird die tatsächliche Benutzer-ID überprüft, um zu entscheiden, welches Kennwort geändert werden soll.
Da Sie Ihre tatsächliche Benutzer-ID nicht ändern können, selbst wenn Sie ein Set-UID-Programm aufrufen, kann das Programm damit die Sicherheit implementieren. Das Betriebssystem übergibt die Sicherheit an das eingestellte UID-Root-Programm.
Hinweis: Das Set-UID-Root-Programm kann auch die tatsächliche Benutzer-ID ändern (dies ist jedoch in diesem Anwendungsfall nicht von Nutzen).
Warnung: Set UID Root gilt als schädlich (auch viel weniger als ideal). Wir sollten heutzutage Funktionen nutzen (siehe Was sind die verschiedenen Möglichkeiten, Dateiberechtigungen usw. unter gnu / linux und http://man7.org/linux/man-pages/man7/capabilities.7.html festzulegen ).
quelle