Provided by: manpages-nl-dev_4.15.0-9_all bug

NAAM

       setreuid, setregid - zet echte en/of geldende gebruiker of groep ID

SAMENVATTING

       #include <unistd.h>

       int setreuid(uid_t ruid, uid_t euid);
       int setregid(gid_t rgid, gid_t egid);

   Feature Test Macro´s eisen in  glibc (zie feature_test_macros(7)):

       setreuid(), setregid():
           _XOPEN_SOURCE >= 500
               || /* Vanaf glibc 2.19: */ _DEFAULT_SOURCE
               || /* Glibc <= 2.19: */ _BSD_SOURCE

BESCHRIJVING

       setreuid() zet echte en geldende gebruiker ID's van het huidige proces.

       Opgeven  van een waarde van -1 voor of het echte of het geldende ID dwingt het systeem dat
       ID onveranderd te laten.

       Niet-geprivilegieerde processen mogen alleen het effectieve gebruiker ID naar het geldende
       gebruiker ID, het effectieve gebruiker ID of het opgeslagen set-user-ID  zetten.

       On-geprivilegieerde gebruikers mogen het echte gebruiker ID naar het geldende gebruiker ID
       zetten en andersom.

       Als het echte gebruiker ID veranderd wordt  (i.e.,  ruid  is  niet  -1)  of  het  geldende
       gebruiker  ID  wordt  naar een waarde gezet niet gelijk aan het vorige echte gebruiker ID,
       dan zal het bewaarde ID gezet worden naar het nieuwe geldende gebruiker ID.

       Volledig analoog zet setregid() echte en effectieve groep ID´s van het aanroepende proces,
       en alles hierboven is geldig met "groep" in plaats van "gebruiker".

EIND WAARDE

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

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

FOUTEN

       EAGAIN De aanroep zou de echte UID van de aanroeper veranderen  (m.a.w.,  ruid  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 ruid komt niet overeen met de echte gebruiker ID van de aanroeper en  deze  aanroep
              zou  het  aantal  processen,  behorende  bij  de echte gebruikers ID ruid, 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 Een of meer van de doel gebruiker of groep ID´s is  niet  geldig  in  de  gebruiker
              naamruimte.

       EPERM  De   aanroepende   proces   is   niet-geprivilegieerd  (op  Linux:  heeft  niet  de
              noodzakelijke capaciteit in zijn gebruiker naamruimte: CAP_SETUID in het geval  van
              setreuid(),  of  CAP_SETGID  in het geval van setregid()) en een verandering anders
              dan (i) ruilen van het effectieve gebruiker  (groep)  ID  met  de  echte  gebruiker
              (groep)  ID, of (ii) eentje zetten op de waarde van de ander of (iii) zetten van de
              effectieve gebruiker (groep)  ID  op  de  waarde  van  het  opgeslagen  set-user-ID
              (opgeslagen set-group-ID) werd gespecificeerd.

VOLDOET AAN

       POSIX.1-2001, POSIX.1-2008, 4.3BSD (setreuid()  en setregid() verschenen voor het eerst in
       4.2BSD).

OPMERKINGEN

       Zetten van het effectieve gebruiker (groep) ID op het opgeslagen  set-user-ID  (opgeslagen
       set-group-ID) is mogelijk vanaf Linux 1.1.37 (1.1.38).

       POSIX.1   specificeert   niet   alle   UID  veranderingen  die  Linux  toestaat  voor  een
       niet-geprivilegieerd proces. Met setreuid()  kan  het  effectieve  gebruiker  ID  identiek
       gemaakt  worden  aan  het echte gebruiker ID of het opgeslagen set-user-ID, en het is niet
       gespecificeerd of een niet-geprivilegieerd proces het echte  gebruiker  ID  op  het  echte
       gebruiker  ID, het echte groep ID of het opgeslagen set-user-ID mag zetten. Met setreuid()
       kan het echte groep ID verandert worden naar de waarde van  het  echte  groep  ID  of  het
       opgeslagen  set-group-ID.  De  precieze  details omtrent welke ID veranderingen toegestaan
       worden variëren per implementatie.

       POSIX.1  specificeert het effect van  deze  aanroepen  op  de  opgeslagen  set-user-ID  en
       opgeslagen set-group-ID niet.

       De originele Linux setreuid()  en setregid()  systeem aanroepen ondersteunen alleen 16-bit
       gebruiker en groep IDs.  Vervolgens, voegde Linux 2.4 setreuid32()   en  setregid32()  toe
       voor  32-bit  IDs  ondersteuning.   De glibc setreuid()  en  setregid()  omwikkel functies
       handelen 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 setreuid() en setregid())  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

       getgid(2), getuid(2), seteuid(2),  setgid(2),  setresuid(2),  setuid(2),  capabilities(7),
       credentials(7), user_namespaces(7)

COLOFON

       Deze   pagina  is  onderdeel  van  release  5.13  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
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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⟩.