CHMOD(2)           Manuel du programmeur Linux           CHMOD(2)


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

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

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

DESCRIPTION
       chmod change le mode d'accès du fichier pathname.
       fchmod change  le  mode  d'accès  du  fichier  associé  au
       descripteur fildes.

       Le  mode  est  spécifié  par un OU binaire ( | ) entre les
       éléments suivants (les nombres sont en octal) :


              S_ISUID 04000
                        modification  du   numéro   d'utilisateur
                        (UID) à l'exécution.

              S_ISGID 02000
                        modification  du numéro de groupe (GID) à
                        l'exécution.

              S_ISVTX 01000
                        positionner le sticky bit pour  conserver
                        le  code  du  programme  en mémoire apres
                        exécution.

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

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

              S_IXUSR (S_IEXEC) 00100
                        accès en exécution/parcours par  le  pro­
                        priétaire

              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





Linux                     26 Avril 1998                         1





CHMOD(2)           Manuel du programmeur Linux           CHMOD(2)


              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 doit être nul (root) ou doit
       correspondre à celui du propriétaire du fichier.

       Si l'UID effectif du processus n'est pas  nul,  et  si  le
       groupe du fichier ne correspond ni au GID effectif du pro­
       cessus, ni à l'un  de  ses  éventuels  groupes  supplémen­
       taires, le bit S_ISGID sera désactivé, mais cela ne créera
       pas d'erreur.

       Suivant le type de système de fichiers, les  bits  Set-UID
       et  Set-GID  peuvent être effacés si un fichier est écrit.
       Sur certains système de fichiers, seul le Super-User  peut
       positionner  le Sticky-Bit, lequel peut avoir une signifi­
       cation spécifique (par ex: pour un répertoire, un  fichier
       ne  pourra  y  être  effacé  que par le propriétaire ou le
       Super-User).

       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, si le client dis­
       pose d'un cache.


VALEUR RENVOYÉE
       chmod et fchmod renvoient 0 s'ils réussissent,  ou  -1  en
       cas d'échec, auquel cas errno contient le code d'erreur.

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

       EPERM   L'UID  effectif  ne correspond pas au propriétaire
               du fichier, et n'est pas nul.

       EROFS   Le fichier se trouve sur un systeme de fichiers en
               lecture seule.

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



Linux                     26 Avril 1998                         2





CHMOD(2)           Manuel du programmeur Linux           CHMOD(2)


       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éper­
               toire.

       EACCES  Le  parcours  d'un  élément du chemin de recherche
               est interdit.

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

       EIO     Une erreur d'entrée / sortie bas-niveau s'est pro­
               duite durant la modification de l'i-noeud.

       Les erreurs les plus courantes pour fchmod sont :

       EBADF   Le descripteur de fichier fildes est invalide.

       EROFS   Voir plus haut.

       EPERM   Voir plus haut.

       ENOMEM  Voir plus haut.

       EIO

CONFORMITÉ
       chmod est conforme a SVr4, SVID,  POSIX,  X/OPEN,  4.4BSD,
       SVr4  decrit  les  erreurs EINTR,  ENOLINK  et  EMULTIHOP,
       mais pas ENOMEM.  POSIX.1  ne  documente  ni  les  erreurs
       EFAULT,  ENOMEM,  ELOOP  et  EIO,  ni  les macros S_IREAD,
       S_IWRITE et S_IEXEC.

       fchmod est conforme à 4.4BSD et  SVr4.   SVr4  décrit  les
       erreurs supplémentaires EINTR et ENOLINK.

       POSIX  réclame  l'existence  de  la  fonction fchmod si au
       moins  une  des  deux  constantes  _POSIX_MAPPED_FILES  et
       _POSIX_SHARED_MEMORY_OBJECTS  est  définie,  et décrit les
       conditions d'erreur supplémentaires ENOSYS et EINVAL  mais
       pas EIO.

       POSIX   et   X/OPEN  ne  documentent  pas  le  Sticky  Bit
       (S_ISVTX).


VOIR AUSSI
       open(2), chown(2), stat(2)




Linux                     26 Avril 1998                         3





CHMOD(2)           Manuel du programmeur Linux           CHMOD(2)


TRADUCTION
       Christophe Blaess, 1997.























































Linux                     26 Avril 1998                         4