Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

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

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <sys/fsuid.h>

       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.

VERSIONEN

       Dieser Systemaufruf ist in Linux seit Version 1.2 vorhanden.

STANDARDS

       setfsuid ist Linux-spezifisch und sollte nicht in portierbaren Programmen benutzt werden.

ANMERKUNGEN

       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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.