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

NAAM

       setuid - zet gebruiker identiteit

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

SAMENVATTING

       #include <unistd.h>

       int setuid(uid_t uid);

BESCHRIJVING

       setuid()  zet  het  effectieve  gebruiker ID van het huidige proces. Als het huidige proces gerechtigd is
       (preciezer: als het proces de CAP_SETUID capaciteit in zijn gebruiker naamruimte heeft), dan worden zowel
       de echte UID als de opgeslagen set-user-ID ook gezet.

       Onder Linux is setuid() geïmplementeerd zoals de POSIX versie met het _POSIX_SAVED_IDS kenmerk. Dit staat
       een set-user-ID programma (anders dan root) toe, al zijn gebruikers rechten te laten  vallen,  vervolgens
       niet-gerechtigd  werk  uit  te voeren, en dan het origineel geldende gebruikers ID opnieuw op een veilige
       manier in te zetten.

       Als de gebruiker root is of het programma is setuid root, dan moet er extra opgepast worden. De  setuid()
       functie  test  het  geldende uid van de aanroeper en als het de systeem beheerder is, worden alle met het
       proces verbonden ID's naar uid gezet. Nadat dit heeft plaatsgevonden is het onmogelijk voor het programma
       om root privileges terug te krijgen.

       Dus een setuid-root programma dat wenst om tijdelijk root privileges te laten vallen, de  identiteit  aan
       te  nemen  van  een  niet-root  gebruiker,  en  dan  de  root  privileges te herwinnen, kan setuid() niet
       gebruiken. U kunt dat voor elkaar krijgen met de aanroep seteuid().

EIND WAARDE

       Bij succes wordt nul teruggegeven. Bij falen wordt -1 teruggegeven en wordt errno overeenkomstig gezet.

       Opmerking: er zijn gevallen waarbij setuid() kan falen, zelfs wanneer de aanroeper UID 0 is; het  is  een
       grove veiligheidsfout om de terugkeer waarde  van setuid() niet te controleren.

FOUTEN

       EAGAIN De  aanroep  zou  de  echte  UID van de aanroeper veranderen (m.a.w., uid komt niet overeen met de
              echte UID van de aanroeper), maar er trad  een  tijdelijke  fout  op  bij  het  toekennen  van  de
              benodigde data structuren in de kernel.

       EAGAIN uid  komt  niet  overeen met de echte gebruiker ID van de aanroeper en deze aanroep zou het aantal
              processen, behorende bij de echte gebruikers ID uid, boven de resource limiet RLIMIT_NPROC van  de
              aanroeper  brengen.  Vanaf  Linux  3.1  komt  deze fout niet meer voor (nog steeds zouden robuuste
              applicaties op deze fout moeten controleren); zie de beschrijving van EAGAIN in execvd(2).

       EINVAL De gebruikers ID opgegeven in uid is niet geldig in de gebruikers naamruimte.s

       EPERM  De gebruiker is niet gerechtigd (Linux: heeft niet de CAP_SETUID  capaciteit  in  zijn  gebruikers
              naamruimte)  en  uid  komt  niet  overeen  met  de  echte UID of de opgeslagen set-user-ID van het
              aanroepende proces.

VERSIES

   C library/kernel verschillen
       Op kernel niveau zijn gebruiker ID en groep ID een per-thread attribute. Hoewel POSIX  vereist  dat  alle
       threads  van  een  proces  dezelfde  identiteit delen. De NPTL implementatie van threads implementeert de
       POSIX eis door in  omwikkel functies te voorzien voor de diverse systeem aanroepen die de UID´s en  GID´s
       veranderen.  Deze omwikkel functies (inclusief die ene voor setuid() gebruiken een op signalen gebaseerde
       techniek om er van zeker te zijn dat als een thread zijn identiteit verandert, alle  andere  threads  van
       dat proces ook hun identiteit veranderen.  Zie voor details nptl(7).

VOLDOET AAN

       POSIX.1-2008.

GESCHIEDENIS

       POSIX.1-2001, SVr4.

       Niet  geheel  compatibel  met  de 4.4BSD aanroep, die alle echte, opgeslagen en effectieve gebruiker ID´s
       zet.

       De originele Linux setuid()  systeem aanroep ondersteunde alleen 16-bit gebruiker IDs. Vervolgens, voegde
       Linux 2.4  setuid32()  toe voor 32-bit IDs ondersteuning.  De glibc setuid()  omwikkel  functies  handelt
       de variaties in kernel versies transparant af.

OPMERKINGEN

       Linux  gebruikt  het  idee  van  bestandsysteem-gebruiker-ID,  normaal  is dat hetzelfde als het geldende
       gebruiker ID. De setuid() aanroep zet ook de bestandssysteem gebruiker ID van  het  huidige  proces.  Zie
       setfsuid(2).

       Als uid verschillend is van het oude geldende uid, dan zal het proces geen core-dumps mogen achterlaten.

ZIE OOK

       getuid(2), seteuid(2), setfsuid(2), setreuid(2), capabilities(7), credentials(7), user_namespaces(7)

VERTALING

       De  Nederlandse  vertaling  van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario
       Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

       Deze vertaling is vrije documentatie; lees  de  GNU General Public License Version 3  of  later  over  de
       Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

       Indien  U  fouten  in  de  vertaling  van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-
       dutch@lists.debian.org.

Linux man-pagina's 6.9.1                           2 mei 2024                                          setuid(2)