CHOWN
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
NOTES
CONFORMITÉ
REMARQUES
VOIR AUSSI
TRADUCTION
NOM
chown, fchown, lchown - Modifier l'appartenance d'un fichier.
SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
int chown(const char *path, uid_t owner, gid_t group);
int fchown(int fd, uid_t owner, gid_t group);
int lchown(cost char *path, uid_t owner, gid_t group);
DESCRIPTION
Le propriétaire et le groupe du fichier désigné par le chemin
path
ou par le descripteur de fichier
fd
sont modifiés. Seul le Super-User peut changer le propriétaire d'un fichier. Le
propriétaire peut changer le groupe du fichier pour n'importe quel groupe auquel
il appartient. Le Super-User peut changer le groupe arbitrairement.
Si l'argument
owner
ou
group
vaut -1, l'élément correspondant n'est pas changé.
Quand le propriétaire, ou le groupe d'un fichier exécutable sont modifiés par
un utilisateur ordinaire, les bits S_ISUID et S_ISGID sont effacés.
POSIX ne précise pas s'il faut agir de même lorsque c'est le Super-Utilisateur
qui invoque
chown.
Le comportement de Linux dans ce cas dépend de la version du noyau.
Si le fichier n'est pas exécutable par les membres de son groupe, (son
bit S_IXGRP étant à zéro) le bit S_ISGID indique la présence d'un verrou
obligatoire sur le fichier, et n'est donc pas effacé par un
chown.
VALEUR RENVOYÉE
chown, lchown, et fchown
renvoient 0 s'ils réussissent, ou -1 s'ils échouent, auquel cas
errno
contient le code d'erreur.
ERREURS
Suivant le type de système de fichiers, plusieurs erreurs peuvent être
renvoyées. Les plus courantes pour
chown
sont les suivantes :
- EPERM
-
L'UID effectif du processus ne correspond pas à celui du fichier, et n'est
pas nul, ou le propriétaire
owner
ou le groupe
group
sont spécifiés incorrectement.
- EROFS
-
Le fichier spécifié réside sur un système de fichiers en lecture seule.
- EFAULT
-
path
pointe en dehors de l'espace d'adressage accessible.
- 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.
- EACCES
-
L'accès à un élément du chemin est interdit.
- ELOOP
-
path
contient une référence circulaire (à travers un lien symbolique)
Les erreurs courantes pour
fchown
sont les suivantes :
- EBADF
-
Le descripteur de fichier est invalide
- ENOENT
-
Cf chown.
- EPERM
-
Cf chown.
- EROFS
-
Cf chown.
EIO
Une erreur d'entrée/sortie bas-niveau s'est produite durant
la modification de l'i-noeud.
NOTES
Dans les versions de Linux antérieures à 2.1.81 (sauf 2.1.46),
chown
ne suivait pas les liens symboliques. Depuis cette version,
chown
suit les liens symboliques, et il existe un nouvel appel-système,
lchown,
qui ne les suit pas.
Depuis Linux 2.1.86, ce nouvel appel système (qui a donc la même
sémantique que l'ancien
chown)
a pris son numéro de Syscall, et
chown
a reçu un nouveau numéro.
Le prototype de la fonction
fchown
est seulement utilisable si la constante symbolique
_BSD_SOURCE
est définie (soit explicitement, soit implicitement en ne définissant
pas _POSIX_SOURCE ou en compilant avec l'attribut -ansi).
CONFORMITÉ
L'appel système
chown
est conforme à
SVr4, SVID, POSIX, X/OPEN. La version 4.4BSD ne peut être appelée que
par le Super-User (ce qui signifie qu'un utilisateur ordinaire ne
peut pas céder la propriété d'un fichier).
SVr4 documente les erreurs EINVAL, EINTR, ENOLINK et EMULTIHOP, mais pas
ENOMEM. POSIX.1 ne décrit ni ENOMEM ni ELOOP.
L'appel système
fchown
est conforme à 4.4BSD et SVr4.
SVr4 indique des conditions d'erreurs supplémentaires EINVAL, EIO, EINTR, et ENOLINK.
REMARQUES
La sémantique de chown() est volontairement modifiée sur les systèmes
de fichiers NFS où la correspondance d'UID est activée. De plus, c'est la
sémantique de tous les appels systèmes accédant au contenu des fichiers qui
est modifiée, puisque chown() peut déclencher une interdiction immédiate
d'accès à des fichiers déjà ouverts. Un cache situé du côté client peut induire
un délai entre l'instant où l'appartenance du fichier est modifiée et le
moment où l'accès est effectivement accordé à l'utilisateur.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|