Linux |
CentOS 5.3 |
|
fchown(2) |
chown, fchown, lchown − Modifier l’appartenance d’un fichier. |
#include <sys/types.h> int chown(const char *path, uid_t
owner, gid_t group); |
Ces appels systèmes modifient le propriétaire et le groupe du fichier désigné par le chemin path ou par le descripteur de fichier fd. Seul un processus privilégié (sous Linux : un processus qui a la capacité CAP_CHOWN) peut modifier le propriétaire d’un fichier. Le propriétaire peut modifier le groupe du fichier pour n’importe quel groupe auquel il appartient. Un processus privilégié (sous Linux : avec la capacité CAP_CHOWN) peut modifier 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(). |
chown, lchown, et fchown renvoient 0 s’ils réussissent, ou −1 s’ils échouent, auquel cas errno contient le code d’erreur. |
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(2).) |
|
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. |
Les erreurs courantes pour fchown() sont les suivantes : |