Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

       chmod, fchmod, fchmodat - Modifier les permissions d'accès à un fichier

SYNOPSIS

       #include <sys/stat.h>

       int chmod(const char *pathname, mode_t mode);
       int fchmod(int fd, mode_t mode);

       #include <fcntl.h>           /* Définition des constantes AT_* */
       #include <sys/stat.h>

       int fchmodat(int dirfd, const char *pathname, mode_t mode, int flags);

   Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :

       fchmod() :
           _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L

       fchmodat() :
           Depuis la glibc 2.10 :
               _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
           Avant la glibc 2.10 :
               _ATFILE_SOURCE

DESCRIPTION

       Les  appels système chmod()  and fchmod() modifient les permissions d'un fichier. Ils diffèrent seulement
       dans la façon dont le fichier est indiqué :

       * chmod() modifie les permissions du fichier indiqué dont le  nom  est  fourni  dans  pathname,  qui  est
         déréférencé s'il s'agit d'un lien symbolique.

       * fchmod() modifie les permissions du fichier référencé par le descripteur de fichier ouvert fd.

       Les  nouvelles  permissions  du fichier sont indiquées dans mode, qui est un masque de bit créé par un OU
       bit à bit de zéro ou plusieurs des valeurs suivantes :

       S_ISUID  (04000)  SUID (Définir l'UID effectif d'un processus lors d'un execve(2))

       S_ISGID  (02000)  SGID (Définir le GID effectif d'un processus lors d'un execve(2) ; verrou  obligatoire,
                         comme  décrit  dans fcntl(2) ; prendre un nouveau groupe de fichiers dans le répertoire
                         parent, comme décrit dans chown(2) et mkdir(2))

       S_ISVTX  (01000)  définir le bit « sticky »  (attribut  de  suppression  restreinte,  comme  décrit  dans
                         unlink(2))

       S_IRUSR  (00400)  accès en lecture pour le propriétaire

       S_IWUSR  (00200)  accès en écriture pour le propriétaire

       S_IXUSR  (00100)  accès   en   exécution/parcours   par  le  propriétaire  (« parcours »  s'applique  aux
                         répertoires, et signifie que le contenu du répertoire est accessible)

       S_IRGRP  (00040)  accès en lecture pour le groupe

       S_IWGRP  (00020)  accès en écriture pour le groupe

       S_IXGRP  (00010)  accès en exécution/parcours pour le groupe

       S_IROTH  (00004)  accès en lecture pour les autres

       S_IWOTH  (00002)  accès en écriture pour les autres

       S_IXOTH  (00001)  accès en exécution/parcours pour les autres

       L'UID effectif du processus appelant doit  correspondre  à  celui  du  propriétaire  du  fichier,  ou  le
       processus doit être privilégié (sous Linux : il doit avoir la capacité CAP_FOWNER).

       Si  le  processus  appelant  n'est pas privilégié (sous Linux : n'a pas la capacité CAP_FSETID), et si le
       groupe du fichier ne correspond ni au GID effectif du processus, ni  à  l'un  de  ses  éventuels  groupes
       supplémentaires, le bit S_ISGID sera désactivé, mais cela ne créera pas d'erreur.

       Par  mesure de sécurité, suivant le type de système de fichiers, les bits Set-UID et Set-GID peuvent être
       effacés si un fichier est écrit. (Sous Linux, cela arrive si le processus qui écrit n'a pas  la  capacité
       CAP_FSETID.  Sur  certains systèmes de fichiers, seul le superutilisateur peut positionner le Sticky-Bit,
       lequel peut avoir une signification spécifique. Pour la signification du Sticky-Bit et du bit Set-GID sur
       les répertoires, consultez stat(2).

       Sur  les  systèmes  de  fichiers  NFS, une restriction des autorisations d'accès aura un effet immédiat y
       compris sur les fichiers déjà ouverts, car les contrôles d'accès sont effectués sur le serveur, mais  les
       fichiers sont maintenus ouverts sur le client. Par contre, un élargissement des autorisations peut ne pas
       être immédiat pour les autres clients, s'ils disposent d'un cache.

   fchmodat()
       L'appel système fchmodat() fonctionne exactement comme chmod(2),  les  seules  différences  étant  celles
       décrites ici.

       Si  pathname  est  un  chemin  relatif,  il  est  interprété  par  rapport au répertoire référencé par le
       descripteur de fichier dirfd, plutôt que par rapport au répertoire courant, comme dans chmod().

       Si pathname est un chemin relatif, et si dirfd est la valeur spéciale AT_FDCWD, pathname  est  interprété
       comme étant relatif au répertoire courant du processus appelant, comme pour chmod().

       Si pathname est un chemin absolu, dirfd est ignoré.

       L'argument flags est soit 0, soit un OU binaire « | » avec les options suivantes :

       AT_SYMLINK_NOFOLLOW
              Si  pathname est un lien symbolique, ne pas le déréférencer, mais renvoyer des informations sur le
              lien lui-même. Cet attribut n'est actuellement pas implémenté.

       Consultez openat(2) pour une explication de la nécessité de fchmodat().

VALEUR RENVOYÉE

       S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.

ERREURS

       Suivant le type de système de fichiers, d'autres  erreurs  que  celles  listées  ci-desous  peuvent  être
       renvoyées.

       Les erreurs les plus courantes pour chmod() sont :

       EACCES L'accès à un élément du chemin est interdit. (Voir aussi path_resolution(7).)

       EFAULT pathname pointe en‐dehors de l'espace d'adressage accessible.

       EIO    Une erreur d'entrée-sortie s'est produite.

       ELOOP  Trop de liens symboliques ont été rencontrés en parcourant pathname.

       ENAMETOOLONG
              pathname est trop long.

       ENOENT Le fichier n'existe pas.

       ENOMEM Pas assez de mémoire pour le noyau.

       ENOTDIR
              Un élément du chemin d'accès n'est pas un répertoire.

       EPERM  L'UID  effectif ne correspond pas au propriétaire du fichier, et le processus n'est pas privilégié
              (sous Linux : il n'a pas la capacité CAP_FOWNER).

       EROFS  Le fichier indiqué réside sur un système de fichiers en lecture seule.

       Les erreurs les plus courantes pour fchmod() sont :

       EBADF  Le descripteur de fichier fd n'est pas valable.

       EIO    Voir plus haut.

       EPERM  Voir plus haut.

       EROFS  Voir plus haut.

       Les mêmes erreurs qui  apparaissent  pour  chmod(2)  peuvent  apparaître  pour  fchmodat().  Les  erreurs
       supplémentaires suivantes peuvent également se produire pour fchmodat() :

       EBADF  dirfd n'est pas un descripteur de fichier valable.

       EINVAL flags contient un attribut invalide.

       ENOTDIR
              pathname  est  relatif,  et  le  descripteur  de  fichier dirfd est associé à un fichier, pas à un
              répertoire.

       ENOTSUP
              flags spécifiait AT_SYMLINK_NOFOLLOW, qui n'est pas supporté.

VERSIONS

       fchmodat() a été ajouté au noyau Linux dans sa version 2.6.16 ; la glibc le gère depuis la version 2.4.

CONFORMITÉ

       chmod(), fchmod() : 4.4BSD, SVr4, POSIX.1-2001i, POSIX.1-2008.

       fchmodat() : POSIX.1-2008.

NOTES

       La fonction enveloppe fchmodat() de la bibliothèque C de GNU  implémente  l'interface  conforme  à  POSIX
       décrite dans cette page. Cette interface est différente de l'appel système Linux sous-jacent, qui n'a pas
       d'argument flags.

VOIR AUSSI

       chown(2), execve(2), open(2), stat(2), path_resolution(7), symlink(7)

COLOPHON

       Cette page fait partie de la publication 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».