table of contents
other sections
CHOWN(2) | Manuel du programmeur Linux | CHOWN(2) |
NOM¶
chown, fchown, lchown - Modifier l'appartenance d'un fichierSYNOPSIS¶
#include <unistd.h>Exigences de macros de test de fonctionnalités pour la glibc (consultez feature_test_macros(7)) :
_BSD_SOURCE ||
_XOPEN_SOURCE >= 500 ||
_XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
|| /* Depuis la glibc 2.12 : */
_POSIX_C_SOURCE >= 200809L
DESCRIPTION¶
Ces appels système modifient le propriétaire et le groupe d'un fichier. Ils diffèrent seulement dans la façon dont le fichier est spécifié :- *
- chown() modifie l'appartenance du fichier indiqué dans path, qui est déréférencé s'il s'agit d'un lien symbolique.
- *
- fchown() modifie l'appartenance du fichier référencé par le descripteur de fichier ouvert fd.
- *
- lchown() est comme chown(), mais ne déréférence pas les liens symboliques.
VALEUR RENVOYÉE¶
S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.ERREURS¶
Suivant le type de système de fichiers, plusieurs erreurs peuvent être renvoyées. Les plus courantes pour chown() sont les suivantes :- EACCES
- L'accès à un élément du chemin est interdit. (Voir aussi path_resolution(7).)
- EFAULT
- path pointe en dehors de l'espace d'adressage accessible.
- ELOOP
- path contient une référence circulaire (à travers un lien symbolique)
- 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.
- EPERM
- Le processus appelant n'a pas les permissions nécessaires (voir plus haut) pour modifier le propriétaire et/ou le groupe.
- EROFS
- Le fichier spécifié réside sur un système de fichiers en lecture seule.
- EBADF
- Le descripteur de fichier est invalide.
- EIO
- Une erreur d'entrée-sortie bas niveau s'est produite durant la modification de l'inœud.
- ENOENT
- Voir plus haut.
- EPERM
- Voir plus haut.
- EROFS
- Voir plus haut.
CONFORMITɶ
BSD 4.4, SVr4, POSIX.1-2001.NOTES¶
Les appels système chown(), fchown() et lchown() originaux de Linux ne géraient que des identifiants d'utilisateur et de groupe sur 16 bits. En conséquence, Linux 2.4 a ajouté chown32(), fchown32() et lchown32() qui prennent en charge des identifiants 32 bits. Les fonctions chown(), fchown() et lchown() de la glibc qui les encapsulent gèrent de manière transparente ces différences entre noyaux.- *
- Si le système de fichiers est monté avec l'option -o grpid, le groupe du nouveau fichier est celui du répertoire parent.
- *
- Si le système de fichiers est monté avec l'option -o nogrpid et si le bit SGID est déactivé pour le répertoire parent, le groupe du nouveau fichier est le GID du système de fichiers du processus.
- *
- Si le système de fichiers est monté avec l'option -o nogrpid et si le bit SGID est activé pour le répertoire parent, le groupe du nouveau fichier est celui du répertoire parent.
EXEMPLE¶
Le programme suivant change le propriétaire d'un fichier fourni comme second paramètre de la ligne de commande, en l'attribuant au propriétaire fourni en premier argument. Le nouveau propriétaire peut être précisé par une valeur numérique ou par le nom de l'utilisateur (qui sera converti en UID avec getpwnam(3) pour rechercher dans le fichier des mots de passe du système.#include <pwd.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char *argv[]) { uid_t uid; struct passwd *pwd; char *endptr; if (argc != 3 || argv[1][0] == '\0') { fprintf(stderr, "%s <propriétaire> <fichier>\n", argv[0]); exit(EXIT_FAILURE); } uid = strtol(argv[1], &endptr, 10); /* Permet une chaîne numérique */ if (*endptr != '\0') { /* N'était pas une chaîne numérique */ pwd = getpwnam(argv[1]); /* Essai de récupérer l'UID de l'utilisateur */ if (pwd == NULL) { perror("getpwnam"); exit(EXIT_FAILURE); } uid = pwd->pw_uid; } if (chown(argv[2], uid, -1) == -1) { perror("chown"); exit(EXIT_FAILURE); } exit(EXIT_SUCCESS); }
VOIR AUSSI¶
chmod(2), fchownat(2), flock(2), path_resolution(7), symlink(7)COLOPHON¶
Cette page fait partie de la publication 3.44 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse <http://www.kernel.org/doc/man-pages/>.TRADUCTION¶
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>. Christophe Blaess <http://www.blaess.fr/christophe/> (1996-2003), Alain Portal <http://manpagesfr.free.fr/> (2003-2006). Julien Cristau et l'équipe francophone de traduction de Debian (2006-2009). Veuillez signaler toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le paquet manpages-fr. Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C <section> <page_de_man> ».22 novembre 2010 | Linux |