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