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