Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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   (consulter
   feature_test_macros(7)) :

       fchmod():
           Depuis la glibc 2.24 :
               _POSIX_C_SOURCE >= 199309L
           De la glibc 2.19 à la glibc 2.23 :
               _POSIX_C_SOURCE
           De la glibc 2.16 à la glibc 2.19 :
               _BSD_SOURCE || _POSIX_C_SOURCE
           De la glibc 2.12 à la glibc 2.16 :
               _BSD_SOURCE || _XOPEN_SOURCE >= 500
                   || _POSIX_C_SOURCE >= 200809L
           glibc 2.11 et antérieure :
               _BSD_SOURCE || _XOPEN_SOURCE >= 500

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

DESCRIPTION

       Les appels système chmod() et fchmod() modifient les bits du mode d'un  fichier  (le  mode
       d'un  fichier  consiste  dans  les  bits  des  droits  du fichier et les bits set-user-ID,
       set-groupe-ID et sticky). Ces appels système ne diffèrent que dans  la  manière  dont  les
       fichiers sont indiqués :

       •  chmod()  modifie  le  mode 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 le mode du fichier référencé par le descripteur de fichier ouvert fd.

       Le nouveau mode du fichier est indiqué 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 impératif, 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 inode(7).

       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 absolu, alors 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

       En cas de succès, zéro est renvoyé. En cas d'erreur, -1 est renvoyé et errno  est  définie
       pour préciser l'erreur.

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

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

       EBADF  (fchmodat())   pathname  est  relatif  mais  dirfd  ne  vaut  ni  AT_FDCWD,  ni  un
              descripteur de fichier valable.

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

       EINVAL (fchmodat()) flags contient un attribut non valable.

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

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

       ENAMETOOLONG
              nom_chemin est trop long.

       ENOENT Le fichier n'existe pas.

       ENOMEM La mémoire disponible du noyau n'était pas suffisante.

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

       ENOTDIR
              (fchmodat())  pathname  est  relatif et dirfd est un descripteur de fichier faisant
              référence à un fichier qui n'est pas un dossier.

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

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

       EPERM  Le   fichier   est   indiqué   comme   immuable  ou  uniquement  complétable  (voir
              ioctl_iflags(2)).

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

VERSIONS

       fchmodat() a été ajouté dans Linux 2.6.16 ; la prise en charge de la  bibliothèque  a  été
       ajoutée dans la glibc 2.4.

STANDARDS

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

       fchmodat() : POSIX.1-2008.

NOTES

   différences entre bibliothèque C et noyau
       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.

   Notes de la glibc
       Sur  les anciens noyaux où fchmodat() n'est pas disponible, la fonction enveloppe de glibc
       se rabat sur l'utilisation de chmod(). Quand chemin est relatif, glibc construit un chemin
       à partir du lien symbolique dans /proc/self/fd et qui correspond au paramètre dirfd.

VOIR AUSSI

       chmod(1), chown(2), execve(2), open(2), stat(2), inode(7), symlink(7)

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>  et  Jean-Philippe  MENGUAL
       <jpmengual@debian.org>

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