setuid

SETUID(2)                  Manuel du programmeur Linux                 SETUID(2)



NOM
       setuid - Définir l'identifiant de l'utilisateur

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

       int setuid(uid_t uid);

DESCRIPTION
       setuid()  sets the effective user ID of the calling process.  If the
       calling process is privileged (more precisely: if the process has the
       CAP_SETUID capability in its user namespace), the real UID and saved
       set-user-ID are also set.

       Sous Linux setuid() est implémenté comme le spécifie POSIX, avec l'option
       _POSIX_SAVED_IDS. Ceci permet à un programme Set-UID (autre que root)
       d'abandonner tous ses privilèges, d'effectuer des tâches non
       privilégiées, et de retrouver son UID effectif de manière sécurisée.

       If the user is root or the program is set-user-ID-root, special care must
       be taken: setuid()  checks the effective user ID of the caller and if it
       is the superuser, all process-related user ID's are set to uid.  After
       this has occurred, it is impossible for the program to regain root
       privileges.

       Ainsi un programme Set-UID root désireux d'abandonner temporairement ses
       privilèges, en prenant l'identité d'un utilisateur ordinaire, puis de
       récupérer ses privilèges par la suite ne doit pas utiliser setuid(). On
       peut accomplir ceci en utilisant l'appel seteuid(2).

VALEUR RENVOYÉE
       En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et
       errno reçoit une valeur adéquate.

       Note : dans certains cas, setuid() peut échouer alors même que l'UID de
       l'appelant est 0 ; ne pas vérifier la valeur renvoyée par setuid() pour
       détecter un échec est une grave erreur qui compromet la sécurité du
       système.

ERREURS
       EAGAIN L'appel a changé l'identifiant (UID) réel de l'appelant (c'est à
              dire que uid ne correspond pas à l'UID réel de l'appelant), mais
              une erreur temporaire est survenue lors de l'allocation des
              structures de données du noyau nécessaires à l'opération.

       EAGAIN uid ne correspond pas à l'UID réel de l'appelant et suite à cet
              appel, le nombre de processus appartenant à l'utilisateur dont
              l'identifiant réel est uid a dépassé la limite de ressources
              RLIMIT_NPROC de l'appelant. A partir de Linux 3.1, cette erreur ne
              peut plus se produire (néanmoins, les applications sérieuses
              doivent vérifier que l'erreur ne s'est pas produite) ; consultez
              la description de EAGAIN dans execve(2).

       EINVAL L'identifiant utilisateur indiqué dans uid n'est pas valide dans
              cet espace de noms utilisateur.

       EPERM  The user is not privileged (Linux: does not have the CAP_SETUID
              capability in its user namespace) and uid does not match the real
              UID or saved set-user-ID of the calling process.

CONFORMITÉ
       POSIX.1-2001, POSIX.1-2008, SVr4.  Not quite compatible with the 4.4BSD
       call, which sets all of the real, saved, and effective user IDs.

NOTES
       Linux dispose d'un concept d'UID de système de fichiers, qui est
       normalement égal à l'UID effectif. L'appel setuid() définit également
       l'UID de système de fichiers du processus appelant. Consultez
       setfsuid(2).

       Si l'uid est différent de l'ancien UID effectif, le processus ne pourra
       pas laisser d'image mémoire (core dump) sur le disque.

       L'appel système setuid() original de Linux ne gérait que des identifiants
       d'utilisateur sur 16 bits. En conséquence, Linux 2.4 a ajouté setuid32()
       qui prend en charge des identifiants 32 bits. La fonction setuid() de la
       glibc qui l'encapsule gère de manière transparente ces différences entre
       noyaux.

   différences entre bibliothèque C et noyau
       At the kernel level, user IDs and group IDs are a per-thread attribute.
       However, POSIX requires that all threads in a process share the same
       credentials.  The NPTL threading implementation handles the POSIX
       requirements by providing wrapper functions for the various system calls
       that change process UIDs and GIDs.  These wrapper functions (including
       the one for setuid())  employ a signal-based technique to ensure that
       when one thread changes credentials, all of the other threads in the
       process also change their credentials.  For details, see nptl(7).

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

COLOPHON
       Cette page fait partie de la publication 5.10 du projet man-pages Linux.
       Une description du projet et des instructions pour signaler des anomalies
       et la dernière version de cette page peuvent être trouvées à l'adresse
       https://www.kernel.org/doc/man-pages/.


TRADUCTION
       La traduction française de cette page de manuel a été créée par
       Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin
       <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>,
       François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe
       Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-
       luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas
       Huriaux <thomas.huriaux@gmail.com>, Nicolas François
       <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>,
       Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier
       <barbier@debian.org>, David Prévot <david@tilapin.org>, Cédric Boutillier
       <cedric.boutillier@gmail.com> et Frédéric Hantrais <fhantrais@gmail.com>

       Cette traduction est une documentation libre ; veuillez vous reporter à
       la GNU General Public License version 3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ concernant les conditions de
       copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel,
       veuillez envoyer un message à debian-l10n-french@lists.debian.org ⟨⟩.




Linux                              6 mars 2019                         SETUID(2)