Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       chown, fchown, lchown - Modifier l'appartenance d'un fichier

SYNOPSIS

       #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(const char *path, uid_t owner, gid_t group);

   Exigences  de  macros  de  test de fonctionnalites pour la glibc (consultez
   feature_test_macros(7)) :

       fchown(), lchown() :
           Depuis la glibc 2.12 :
               _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
               _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED ||
               _POSIX_C_SOURCE >= 200809L
           Avant la glibc 2.12 :
               _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
               _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

DESCRIPTION

       Ces appels systeme modifient le proprietaire et le groupe d'un fichier.
       Ils different seulement dans la facon dont le fichier est specifie :

       * chown() modifie l'appartenance du fichier indique dans path, qui  est
         dereference s'il s'agit d'un lien symbolique.

       * fchown()   modifie   l'appartenance   du  fichier  reference  par  le
         descripteur de fichier ouvert fd.

       * lchown() est  comme  chown(),  mais  ne  dereference  pas  les  liens
         symboliques.

       Seul  un  processus  privilegie  (sous  Linux :  un  processus qui a la
       capacite CAP_CHOWN) peut modifier  le  proprietaire  d'un  fichier.  Le
       proprietaire  peut  modifier  le  groupe du fichier pour n'importe quel
       groupe auquel il appartient. Un processus privilegie (sous Linux : avec
       la capacite CAP_CHOWN) peut modifier le groupe arbitrairement.

       Si l'argument owner ou group vaut -1, l'element correspondant n'est pas
       change.

       Quand le proprietaire,  ou  le  groupe  d'un  fichier  executable  sont
       modifies par un utilisateur ordinaire, les bits S_ISUID et S_ISGID sont
       effaces. POSIX ne precise pas s'il faut agir de meme lorsque  c'est  le
       superutilisateur  qui invoque chown(). Le comportement de Linux dans ce
       cas depend de la version du noyau. Si le fichier n'est  pas  executable
       par  les  membres de son groupe (c'est-a-dire un fichier pour lequel le
       bit S_IXGRP n'est pas positionne), le bit S_ISGID indique  la  presence
       d'un verrou obligatoire sur le fichier, et n'est donc pas efface par un
       chown().

VALEUR RENVOY'EE

       S'il reussit, cet appel systeme renvoie 0. S'il echoue, il  renvoie  -1
       et remplit errno en consequence.

ERREURS

       Suivant  le type de systeme de fichiers, plusieurs erreurs peuvent etre
       renvoyees. Les plus courantes pour chown() sont les suivantes :

       EACCES L'acces a  un  element  du  chemin  est  interdit.  (Voir  aussi
              path_resolution(7).)

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

       ELOOP  path  contient  une  reference  circulaire  (a  travers  un lien
              symbolique)

       ENAMETOOLONG
              path est trop long.

       ENOENT Le fichier n'existe pas.

       ENOMEM Pas assez de memoire pour le noyau.

       ENOTDIR
              Un element du chemin d'acces n'est pas un repertoire.

       EPERM  Le processus appelant n'a pas les permissions necessaires  (voir
              plus haut) pour modifier le proprietaire et/ou le groupe.

       EROFS  Le fichier specifie reside sur un systeme de fichiers en lecture
              seule.

       Les erreurs courantes pour fchown() sont les suivantes :

       EBADF  Le descripteur de fichier est invalide.

       EIO    Une erreur d'entree-sortie bas niveau s'est produite  durant  la
              modification de l'inoeud.

       ENOENT Voir plus haut.

       EPERM  Voir plus haut.

       EROFS  Voir plus haut.

CONFORMIT'E

       BSD 4.4, SVr4, POSIX.1-2001.

       La version BSD 4.4 ne peut etre appelee que par le superutilisateur (ce
       qui signifie qu'un utilisateur ordinaire ne peut pas ceder la propriete
       d'un fichier).

NOTES

       Lorsqu'un  nouveau  fichier  est  cree  (par  exemple  avec  open(2) ou
       mkdir(2)), son proprietaire  est  le  meme  que  l'UID  du  systeme  de
       fichiers  du  processus  createur.  Le  groupe  du  fichier  depend  de
       plusieurs facteurs, incluant  le  type  du  systeme  de  fichiers,  les
       options  utilisees  pour monter le systeme de fichiers, et si le bit de
       permission SGID est active pour le repertoire parent. Si le systeme  de
       fichiers   accepte   les   options  -o grpid  (ou  de  facon  identique
       -o bsdgroups) et -o nogrpid (ou de facon  identique  -o sysvgroups)  de
       mount(8), les regles sont alors les suivantes :

       * Si le systeme de fichiers est monte avec l'option -o grpid, le groupe
         du nouveau fichier est celui du repertoire parent.

       * Si le systeme de fichiers est monte avec l'option -o nogrpid et si le
         bit SGID est deactive pour le repertoire parent, le groupe du nouveau
         fichier est le GID du systeme de fichiers du processus.

       * Si le systeme de fichiers est monte avec l'option -o nogrpid et si le
         bit  SGID  est active pour le repertoire parent, le groupe du nouveau
         fichier est celui du repertoire parent.

       Dans Linux 2.6.25, les options de montage -o grpid et  -o nogrpid  sont
       acceptees  par  ext2,  ext3,  ext4 et XFS. Les systemes de fichiers qui
       n'acceptent pas ces options de montage suivent les regles  de  l'option
       -o nogrpid.

       La  semantique  de chown() est volontairement modifiee sur les systemes
       de fichiers NFS ou la correspondance d'UID est activee. De plus,  c'est
       la  semantique  de  tous  les  appels  systeme  accedant au contenu des
       fichiers  qui  est  modifiee,  puisque  chown()  peut  declencher   une
       interdiction  immediate  d'acces  a des fichiers deja ouverts. Un cache
       situe  du  cote  client  peut  induire  un  delai  entre  l'instant  ou
       l'appartenance  du  fichier  est  modifiee  et le moment ou l'acces est
       effectivement accorde a l'utilisateur.

       Dans les versions de Linux anterieures a 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  systeme,
       lchown(),  qui  ne  les  suit pas. Depuis Linux 2.1.86, ce nouvel appel
       systeme (qui a donc la meme semantique que l'ancien chown()) a pris son
       numero de syscall, et chown() a recu un nouveau numero.

EXEMPLE

       Le  programme  suivant change le proprietaire d'un fichier fourni comme
       second  parametre  de  la  ligne  de  commande,  en   l'attribuant   au
       proprietaire  fourni  en premier argument. Le nouveau proprietaire peut
       etre precise par une valeur numerique 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 systeme.

       #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 <proprietaire> <fichier>\n", argv[0]);
               exit(EXIT_FAILURE);
           }

           uid = strtol(argv[1], &endptr, 10);  /* Permet une chaine numerique */

           if (*endptr != '\0') {         /* N'etait pas une chaine numerique */
               pwd = getpwnam(argv[1]);    /* Essai de recuperer 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);
           } /* if */

           exit(EXIT_SUCCESS);
       } /* main */

VOIR AUSSI

       chmod(2), fchownat(2), flock(2), path_resolution(7), symlink(7)

COLOPHON

       Cette page fait partie de  la  publication  3.27  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain   Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.