CHMOD
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
CONFORMITÉ
VOIR AUSSI
TRADUCTION
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 après 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 proprié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
- 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 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.
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èmes de fichiers,
seul le Super-User 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, si le client dispose 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
être 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 système de fichiers en lecture seule.
- EFAULT
-
pathname
pointe en dehors de l'espace d'adressage accessible.
- 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.
- 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 produite 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.
- EIO
-
Voir plus haut.
CONFORMITÉ
L'appel
chmod
est conforme a SVr4, SVID, POSIX, X/OPEN, 4.4BSD,
SVr4 décrit 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.
L'appel
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.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|