setfsuid(2) System Calls Manual setfsuid(2) BEZEICHNUNG setfsuid - Benutzeridentitat fur Dateisystemprufungen setzen BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include [[veraltet]] int setfsuid(uid_t fsuid); BESCHREIBUNG Unter Linux hat ein Prozess sowohl eine Dateisystembenutzerkennung als auch eine effektive Benutzerkennung. Die (Linux-spezifische) Dateisystembenutzerkennung wird fur die Berechtigungsprufung beim Zugriff auf Dateisystemobjekte verwandt, wahrend die effektive Benutzerkennung fur verschiedene andere Arten von Berechtigungsprufungen verwandt wird (siehe credentials(7)). Normalerweise ist der Wert der Dateisystembenutzerkennung des Prozesses identisch zu dem Wert seiner effektiven Benutzerkennung. Dies kommt daher, dass der Kernel auch die Dateisystembenutzerkennung zu dem gleichen Wert der effektiven Benutzerkennung andert, wenn sich die effektive Benutzerkennung eines Prozesses andert. Mittels setfsuid() kann ein Prozess veranlassen, dass sich der Wert seiner Dateisystembenutzerkennung von dem Wert seiner effektiven Benutzerkennung unterscheidet, womit dieser den Wert der Dateisystembenutzerkennung auf den in fsuid angegeben Wert andert. Explizite Aufrufe von setfsuid() und setfsgid(2) werden (wurden) gewohnlich nur von Programmen wie dem Linux-NFS-Server benutzt. Sie mussen die fur Dateizugriffe verwendete Benutzer- und Gruppenkennung andern, ohne die reale oder effektive Gruppenkennung zu andern. Eine Anderung der normalen Benutzerkennungen bei Programmen wie dem NFS-Server ist (war) eine Sicherheitslucke, die es unerwunschten Signalen aussetzen kann. (Allerdings ist dieses Problem historischer Natur, lesen Sie Nachstehendes.) setfsuid() wird nur erfolgreich sein, wenn der Aufrufende der Superuser ist oder wenn fsuid entweder der realen, effektiven Benutzerkennung, der gesicherten SUID oder der aktuellen Dateisystembenutzerkennung entspricht. RUCKGABEWERT Sowohl im Fehler- als auch im Erfolgsfall wird dieser Aufruf die vorherige Dateisystembenutzerkennung des Aufrufenden zuruckliefern. STANDARDS Linux. GESCHICHTE Linux 1.2. Zum Zeitpunkt, an dem dieser Systemaufruf erfolgte, konnte ein Prozess ein Signal an einen anderen Prozess mit der selben effektiven Benutzerkennung senden. Dies bedeutete, dass ein privilegierter Prozess, falls er zum Prufen von Dateizugriffsrechten seine effektive Benutzerkennung anderte, in die Lage versetzt wurde, Signale von einem anderen (nicht privilegierten) Prozess mit der selben Kennung zu empfangen. Daher wurde das Benutzerkennungsatttribut des Dateisystems hinzugefugt, um einem Prozess das Andern seiner Benutzerkennung zum Prufen der Dateizugriffsrechte zu ermoglichen, ohne gleichzeitig sensibel fur den Empfang unerwunschter Signale zu werden. Seit Linux 2.0 ist der Umgang mit Signalrechten anders gelost (siehe kill(2)), was dazu fuhrt, dass ein Prozess seine effektive Benutzerkennung andern kann, ohne empfanglich fur Signale von unerwunschten Prozessen zu werden. Daher wird setfsuid() heutzutage nicht mehr benotigt und sollte in neuen Anwendungen vermieden werden (ebenso setfsgid(2)). Der Original-Linux-Systemaufruf setfsuid() unterstutzte nur 16-Bit-Benutzerkennungen. Nachfolgend fugte Linux 2.4 setfsuid32() hinzu, das 32-Bit-Kennungen unterstutzte. Die Glibc-Wrapper-Funktion setfsuid() stellt die Anderungen transparent uber Kernel-Versionen hinweg bereit. Unterschiede C-Bibliothek/Kernel Wenn der Wrapper fur diesen Systemaufruf unter Glibc 2.15 und alter feststellt, dass das Argument nicht ohne Ganzzahlschnitt an den Kernel ubergeben werden kann (weil der Kernel alt ist und keine 32-Bit-Benutzerkennungen unterstutzt), wird -1 zuruckgegeben und errno auf EINVAL gesetzt. Der Systemaufruf unterbleibt. FEHLER Es werden keine Anhaltspunkte fur Fehler an den Aufrufenden zuruckgegeben und die Tatsache, dass sowohl erfolgreiche als auch nicht erfolgreiche Aufrufe den selben Wert zuruckgeben, macht es unmoglich, direkt zu bestimmen, ob der Aufruf erfolgreich war oder fehlschlug. Stattdessen musste der Aufrufende auf die Betrachtung des Ruckgabewerts eines weiteren Prozesses wie setfsuid(-1) zuruckgreifen (der immer fehlschlagt), um zu bestimmen, ob ein vorheriger Aufruf von setfsuid() die Dateisystembenutzerkennung geandert hat. Zumindest sollte EPERM zuruckgegeben werden, wenn der Aufruf fehlschlagt (da dem Aufrufenden die CAP_SETUID-Capability fehlt). SIEHE AUCH kill(2), setfsgid(2), capabilities(7), credentials(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Patrick Rother , Helge Kreutzmann , Chris Leick und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 setfsuid(2)