|
Linux führt einen Prozess immer unter der Kennung jenes Benutzers aus, der das Programm startet. Somit gelten die Rechte eines Users für alle seine Aktionen. Dieses über 35 Jahren bewährte Konzept hat Linux von Unix übernommen. Allerdings funktioniert das simple Schema nicht in jedem Fall, zum Beispiel wenn ein User sein Kennwort ändern möchte. Das Passwort steht in »/etc/passwd« oder »/etc/shadow«, beide Dateien sind für einen normalen Benutzer aber nicht schreibbar und nur »/etc/passwd« ist lesbar. Ein pauschales Schreibrecht wäre fatal, denn jeder Anwender und jede Anwendung könnte alle Passwörter ändern. Unter fremder Flagge
Um das Dilemma zu lösen, erfand Dennis Ritchie, einer der Unix-Väter, das Set-UID-Bit. Die Bell Laboratories meldeten seine Idee 1973 sogar zum Patent an, das sie 1979 unter der Nummer 4 135 240 auch erhielten [1] und später als Public Domain freigaben. Mit dem Set-UID-Bit ist es möglich, dass ein Benutzer einen Prozess erzeugt, der die Rechte des Dateibesitzers, also eines anderen Benutzers, ausübt. Auf Fedora 8 sieht zum Beispiel das Passwort-Programm wie folgt aus:
-rwsr-xr-x 1 root root 25604 5. Apr 2007 /usr/bin/passwd
Die Programmdatei gehört »root« und hat das Set-UID-Bit gesetzt, erkennbar an dem kleinen »s« statt eines »x« an vierter Stelle. Der entstehende Prozess »passwd« hat dank S-Bit effektiv die Rechte des Benutzers »root« (Effective UID), also die Rechte des Besitzers der Programmdatei.
Die Rechte des aufrufenden Users behält er aber bei (Real UID). Dank Saved UID kann der Prozess sogar jederzeit zwischen den Rechten wechseln. Ruft der Benutzer »ralf« den Befehl »passwd« auf, dann lassen sich die Rechteverhältnisse mit dem Befehl »ps -o cmd,pid,ppid,euser,ruser, -U ralf« anzeigen:
CMD PID PPID EUSER RUSER
-bash 2851 2848 ralf ralf
passwd 2912 2851 root ralf
Die Ausgabe verrät, dass der Benutzer »ralf« sich angemeldet hat, ihm gehört die Login-Shell »-bash«. Anschließend hat er den Befehl »passwd« aufgerufen. Der läuft mit der realen User-ID (Ruser) »ralf« und der effektiven UID (Euser) »root«. Nun könnte das »passwd«-Tool alle Möglichkeiten von Root nutzen und beispielsweise fremde Passwörter ändern oder die Firewall abschalten.
Solange keine Programmierfehler vorliegen, beschränkt sich »passwd« freilich darauf, das Passwort des aufrufenden Users zu ändern. Um das Risiko zu mindern, haben die Linux-Distributoren in den letzten Jahren den Einsatz der Set-UID-Bits reduziert.
|