CHOWN |
Change le groupe |
|---|---|
Perl |
Syntaxe
| chown USERID, GROUPID, LIST |
Paramètres
| Nom | Description |
|---|---|
| USERID | Ce paramètre permet d'indiquer l'identificateur d'utilisateur |
| GROUPID | Ce paramètre permet d'indiquer l'identificateur de groupe |
| LIST | Ce paramètre permet d'indiquer la liste à affecter |
Description
Cette fonction permet de changer les propriétaires et les groupes de propriétaire (GID) des fichiers.
Remarques
- La fonction chown permet de modifier le propriétaire (UID) et le groupe (GID) d'un ensemble de fichiers. Elle prend comme premiers éléments de la liste deux valeurs numériques, devant obligatoirement représenter, dans cet ordre, l'identifiant utilisateur (uid) et l'identifiant de groupe (gid). Si l'on place la valeur -1 à l'une ou l'autre de ces positions, cela indique à la plupart des systèmes de laisser cette propriété inchangée, c'est-à-dire de ne pas modifier l'uid ou le gid correspondant. La fonction retourne alors le nombre de fichiers pour lesquels la modification a été effectuée avec succès.
- Sur les systèmes prenant en charge l'appel système fchown(), il est également possible de passer des descripteurs de fichiers (filehandles) dans la liste des fichiers à modifier. Cependant, sur les systèmes qui ne prennent pas en charge fchown(), fournir des descripteurs de fichiers comme arguments provoquera une exception (erreur). Pour que les descripteurs soient correctement reconnus comme tels, ils doivent être transmis sous la forme de globs (*HANDLE) ou de références à des globs (\*HANDLE) - les chaînes simples (appelées "barewords") seront quant à elles interprétées comme des noms de fichiers ordinaires, et non comme des descripteurs.
- print "Utilisateur : ";
- chomp(my $user = <STDIN>);
- print "Fichiers : ";
- chomp(my $pattern = <STDIN>);
- my ($login, $pass, $uid, $gid) = getpwnam($user)
- or die "$user n'existe pas dans le fichier passwd";
- my @ary = glob($pattern); # expansion des noms de fichiers selon le motif
- chown $uid, $gid, @ary;
- Sur la plupart des systèmes d'exploitation, il est interdit de changer le propriétaire (uid) d'un fichier si l'on n'est pas superutilisateur (root). Toutefois, il est généralement permis de modifier le groupe (gid) du fichier à condition qu'il s'agisse d'un groupe secondaire dont l'utilisateur fait partie. Sur certains systèmes jugés moins sécurisés, ces restrictions peuvent être allégées ou désactivées, mais il ne faut pas compter sur ce comportement, car il n'est pas portable d'un système à l'autre.
Voici un exemple plus complet illustrant comment traduire un nom d'utilisateur en uid/gid à partir du fichier système des mots de passe (/etc/passwd), puis à appliquer ce changement à un groupe de fichiers :
Sur les systèmes POSIX, il est possible de vérifier si de telles restrictions sont actives grâce à l'appel suivant :
Cette méthode retourne une valeur booléenne indiquant si la modification des propriétaires est restreinte sur le chemin concerné ($path_of_interest), ce qui permet d'adapter dynamiquement le comportement du script selon les capacités du système.
Exemple
Voici un exemple permet d'écrire trois octets dans le fichier «data.bin» et de changer le propriétaire pour le propriétaire courant :
Voir également
Langage de programmation - Perl - Référence de procédures et fonctions - POSIX::chown
Langage de programmation - C pour Linux - Référence de procédures et fonctions - chown
Références
La Bible Micro Application HTML & Développement Web, Stefan Munz, Wolfgang Nefzger, 2003, ISBN: 2-7429-2898-7, page 1175