Provided by: manpages-nl-dev_4.13-4_all bug

NAAM

       setuid - zet gebruiker identiteit

SAMENVATTING

       #include <sys/types.h>
       #include <unistd.h>

       int setuid(uid_t uid);

BESCHRIJVING

       setuid()  zet  het effectieve gebruiker ID van het huidige proces. Als het huidige proces geprivilegieerd
       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
       wat niet-geprivilegieerd 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  geprivilegieerd  (Linux:  heeft  niet  de  CAP_SETUID  capaciteit in zijn
              gebruikers naamruimte) en uid komt niet overeen met de echte UID of opgeslagen set-user-ID van het
              aanroepende proces.

VOLDOET AAN

       POSIX.1-2001, POSIX.1-2008, SVr4.  Niet  geheel  compatibel  met  de  4.4BSD  aanroep,  die  alle  echte,
       opgeslagen en effectieve gebruiker ID´s zet.

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.

       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.

   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).

ZIE OOK

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

COLOFON

       Deze  pagina  is  onderdeel  van  release  5.10 van het Linux man-pages-project. Een beschrijving van het
       project,  informatie  over  het  melden  van  bugs  en  de  nieuwste  versie  van  deze  pagina  zijn  op
       https://www.kernel.org/doc/man-pages/ te vinden.

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                                             6 maart 2019                                         SETUID(2)