setreuid(2) | System Calls Manual | setreuid(2) |
setreuid, setregid - zet echte en/of geldende gebruiker of groep ID
Standard C bibliotheek (libc, -lc)
#include <unistd.h>
int setreuid(uid_t ruid, uid_t euid); int setregid(gid_t rgid, gid_t egid);
setreuid(), setregid():
_XOPEN_SOURCE >= 500
|| /* Since glibc 2.19: */ _DEFAULT_SOURCE
|| /* Glibc <= 2.19: */ _BSD_SOURCE
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".
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.
POSIX.1-2001, POSIX.1-2008, 4.3BSD (setreuid() en setregid() verschenen voor het eerst in 4.2BSD).
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.
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).
getgid(2), getuid(2), seteuid(2), setgid(2), setresuid(2), setuid(2), capabilities(7), credentials(7), user_namespaces(7)
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.
5 februari 2023 | Linux man-pagina's 6.03 |