Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       setfsuid - Benutzeridentität für Dateisystemprüfungen setzen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <sys/fsuid.h>

       [[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  für  die  Berechtigungsprüfung
       beim  Zugriff  auf  Dateisystemobjekte  verwandt,  während die effektive Benutzerkennung für verschiedene
       andere Arten von Berechtigungsprüfungen 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  ändert,  wenn  sich  die  effektive  Benutzerkennung  eines
       Prozesses   ändert.  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 ändert.

       Explizite Aufrufe von setfsuid() und setfsgid(2) werden (wurden) gewöhnlich nur von  Programmen  wie  dem
       Linux-NFS-Server  benutzt.  Sie  müssen  die  für  Dateizugriffe  verwendete Benutzer- und Gruppenkennung
       ändern,  ohne  die  reale  oder  effektive  Gruppenkennung  zu  ändern.  Eine   Änderung   der   normalen
       Benutzerkennungen bei Programmen wie dem NFS-Server ist (war) eine Sicherheitslücke, die es unerwünschten
       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.

RÜCKGABEWERT

       Sowohl im Fehler- als auch im Erfolgsfall wird dieser Aufruf die vorherige Dateisystembenutzerkennung des
       Aufrufenden zurückliefern.

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  Prüfen von Dateizugriffsrechten seine effektive Benutzerkennung änderte, in die
       Lage versetzt wurde, Signale von einem anderen (nicht privilegierten) Prozess mit der selben  Kennung  zu
       empfangen.  Daher  wurde das Benutzerkennungsatttribut des Dateisystems hinzugefügt, um einem Prozess das
       Ändern seiner Benutzerkennung zum  Prüfen  der  Dateizugriffsrechte  zu  ermöglichen,  ohne  gleichzeitig
       sensibel für den Empfang unerwünschter Signale zu werden. Seit Linux 2.0 ist der Umgang mit Signalrechten
       anders  gelöst  (siehe  kill(2)), was dazu führt, dass ein Prozess seine effektive Benutzerkennung ändern
       kann, ohne empfänglich  für  Signale  von  unerwünschten  Prozessen  zu  werden.  Daher  wird  setfsuid()
       heutzutage nicht mehr benötigt und sollte in neuen Anwendungen vermieden werden (ebenso setfsgid(2)).

       Der  Original-Linux-Systemaufruf  setfsuid() unterstützte nur 16-Bit-Benutzerkennungen. Nachfolgend fügte
       Linux 2.4 setfsuid32() hinzu, das 32-Bit-Kennungen unterstützte.  Die  Glibc-Wrapper-Funktion  setfsuid()
       stellt die Änderungen transparent über Kernel-Versionen hinweg bereit.

   Unterschiede C-Bibliothek/Kernel
       Wenn  der  Wrapper für diesen Systemaufruf unter Glibc 2.15 und älter feststellt, dass das Argument nicht
       ohne  Ganzzahlschnitt  an  den  Kernel  übergeben  werden  kann  (weil  der  Kernel  alt  ist  und  keine
       32-Bit-Benutzerkennungen   unterstützt),  wird  -1  zurückgegeben  und  errno  auf  EINVAL  gesetzt.  Der
       Systemaufruf unterbleibt.

FEHLER

       Es werden keine Anhaltspunkte für Fehler an den Aufrufenden zurückgegeben und die Tatsache,  dass  sowohl
       erfolgreiche  als auch nicht erfolgreiche Aufrufe den selben Wert zurückgeben, macht es unmöglich, direkt
       zu bestimmen, ob der Aufruf erfolgreich war oder fehlschlug. Stattdessen musste der  Aufrufende  auf  die
       Betrachtung  des  Rückgabewerts  eines  weiteren  Prozesses  wie  setfsuid(-1)  zurückgreifen  (der immer
       fehlschlägt), um zu bestimmen, ob ein vorheriger Aufruf  von  setfsuid()  die  Dateisystembenutzerkennung
       geändert  hat.  Zumindest  sollte  EPERM  zurückgegeben  werden,  wenn  der  Aufruf  fehlschlägt  (da dem
       Aufrufenden die CAP_SETUID-Capability fehlt).

SIEHE AUCH

       kill(2), setfsgid(2), capabilities(7), credentials(7)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>,  Helge  Kreutzmann
       <debian@helgefjell.de>,      Chris      Leick      <c.leick@vollbio.de>     und     Mario     Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder  neuer
       bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

       Wenn  Sie  Fehler  in  der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                              2. Mai 2024                                       setfsuid(2)