Loading

NOM

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

SYNOPSIS

       #include <sys/stat.h>

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

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

       fchmod() : _BSD_SOURCE || _XOPEN_SOURCE >= 500

       Ces  appels  système  modifient  les  permissions  d’un  fichier.   Ils
       diffèrent seulement dans la façon dont le fichier est spécifié :

       * chmod()  modifie  les  permissions du fichier indiqué dont le nom est
         fourni  dans  path,  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, voir 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.

VALEUR RENVOYÉE

       En  cas  de  réussite,  zéro est renvoyé, sinon -1 est renvoyé et errno
       contient le code d’erreur.

ERREURS

       Suivant le type de système de  fichiers,  différentes  erreurs  peuvent
       être renvoyées. Les plus courantes pour chmod() sont :

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

       EFAULT path pointe en dehors de l’espace d’adressage accessible.

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

       ELOOP  path contient  une  référence  circulaire  (à  travers  un  lien
              symbolique)

       ENAMETOOLONG
              path 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 spécifié 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.

CONFORMITÉ

       BSD 4.4, SVr4, POSIX.1-2001.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de  la  publication  3.23  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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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