La commande chown Linux (« change owner ») modifie le propriétaire et/ou le groupe d’un fichier ou d’un répertoire. Pour attribuer un fichier à un autre utilisateur, même si vous en êtes propriétaire, il faut normalement les privilèges administrateur, obtenus par exemple avec sudo. Ce mémo explique la syntaxe, les précautions, le cas des données Docker et le dépannage.
L’essentiel
Commande clé : sudo chown utilisateur:groupe fichier
Prérequis : privilèges permettant de changer le propriétaire ; pour changer uniquement le groupe de son propre fichier, appartenir au groupe cible peut suffire.
Portée : exemples pour Linux avec GNU coreutils ; vérifier l’implémentation et les options disponibles sur votre distribution.
Précaution : identifier le propriétaire attendu et vérifier le chemin avant toute modification récursive.
Sources : manuels Linux, GNU coreutils, documentation Docker et LinuxServer.io, consultés le 11 septembre 2026.
Commande chown Linux : à quoi sert-elle ?
Sous Linux, chaque fichier appartient à un utilisateur et à un groupe. chown change cette appartenance ; chmod règle les permissions de lecture, d’écriture et d’exécution. Changer le propriétaire ou le groupe peut donc changer les accès effectifs sans modifier les bits rwx.
Par exemple, un fichier ordinaire en mode 600 est lisible et modifiable par son propriétaire. Attribuer ce fichier à un autre utilisateur transfère ces droits à ce dernier, sous réserve des autres contrôles d’accès. Une erreur « Permission denied » peut aussi provenir des répertoires parents, des ACL ou de SELinux/AppArmor : chown n’est pas une solution automatique.
Syntaxe générale
chown [options] [utilisateur][:groupe] fichier...
| Élément | Rôle |
|---|---|
utilisateur | Nouveau propriétaire (nom ou UID) |
:groupe | Nouveau groupe (nom ou GID), optionnel, précédé de : |
fichier | Fichier ou répertoire cible |
À adapter : alice, equipe, fichier.txt et les chemins sont des exemples. Pour ces exemples nominatifs, le compte, le groupe et la cible doivent exister. Un UID/GID numérique peut être attribué sans compte correspondant : vérifiez alors sa signification avant de l’utiliser. Ne tapez pas les crochets ni les points de suspension de la syntaxe : ils indiquent des parties facultatives et la possibilité de fournir plusieurs fichiers. Fournissez un propriétaire, un groupe ou une référence.
Options les plus utilisées au quotidien :
| Option | Effet |
|---|---|
-R, --recursive | Applique la modification à un répertoire et tout son contenu |
-v, --verbose | Affiche chaque fichier traité |
-c, --changes | Comme -v, mais n’affiche que les fichiers réellement modifiés |
--reference=RFILE | Copie le propriétaire et le groupe d’un fichier de référence |
Cas d’usage fréquents
Changer uniquement le propriétaire
sudo chown alice fichier.txt
alice devient propriétaire de fichier.txt. Le groupe associé ne change pas.
Changer uniquement le groupe
sudo chown :equipe fichier.txt
Le deux-points sans nom d’utilisateur cible uniquement le groupe. Si vous possédez le fichier et appartenez à equipe, chown :equipe fichier.txt peut fonctionner sans sudo. Sinon, il faut les privilèges appropriés.
Changer le propriétaire et le groupe en une commande
Vérifiez les identités et la propriété actuelle, appliquez le changement voulu, puis contrôlez le résultat :
getent passwd alice
getent group equipe
ls -l -- fichier.txt
sudo chown alice:equipe fichier.txt
ls -l -- fichier.txt
Si un compte ou un groupe n’est pas trouvé, corrigez son nom avant de poursuivre. Pour un répertoire, utilisez ls -ld -- chemin afin d’inspecter le répertoire lui-même et non son contenu. Une commande chown réussie reste normalement silencieuse ; l’option -c signale les modifications.
Récursif sur un dossier
Réservez cet exemple à un dossier dont tout le contenu doit appartenir à alice:equipe. Ce choix n’est pas une configuration universelle pour un serveur web. Sauvegardez les données et les métadonnées avant une opération étendue.
ls -ld -- /var/www/mon-site
find /var/www/mon-site -ls
Tout message d’erreur de parcours rend le contrôle incomplet, avant comme après la modification. Si les droits empêchent l’inspection et que vous êtes autorisé à administrer cette cible, utilisez sudo find /var/www/mon-site -ls. Examinez la liste complète avant de poursuivre : head n’en montrerait que le début. Cette inspection n’est ni une simulation exacte de chown, ni une garantie si l’arborescence change ensuite. Arrêtez les processus susceptibles de la modifier et vérifiez les liens symboliques et les points de montage.
sudo chown -R -P -h --preserve-root alice:equipe /var/www/mon-site
find /var/www/mon-site -ls
Dans cet exemple GNU, -P évite de parcourir les liens vers des répertoires et -h change le lien lui-même plutôt que sa cible. Le chemin cible doit être un vrai répertoire, sans lien symbolique dans ses composants. Un sous-répertoire monté reste parcouru : ces options ne limitent pas l’opération à un seul système de fichiers.
Avertissement — N’appliquez jamais un changement récursif global à /, /etc, /usr ou /var. Avec GNU chown, --preserve-root refuse de traiter récursivement /, mais ne protège pas un autre mauvais chemin, comme /home. Validez les variables et citez les chemins dans vos scripts. Il n’existe pas d’annulation automatique : un changement inverse unique ne restitue pas des propriétaires initialement différents.
Copier le propriétaire d’un fichier modèle
sudo chown --reference=fichier_modele.conf nouveau_fichier.conf
nouveau_fichier.conf adopte le même propriétaire et le même groupe que fichier_modele.conf, sans avoir à les connaître à l’avance. Pratique pour harmoniser un lot de fichiers générés par un script.
chown et Docker : comprendre les UID/GID des données
Avec Docker Engine sur Linux, un dossier de l’hôte partagé par un bind mount conserve une propriété fondée sur les UID/GID numériques. Sans remappage d’utilisateurs, un fichier créé par le processus du conteneur porte son UID côté hôte. Si cet UID n’y correspond à aucun compte, ls -l affiche un nombre ; s’il correspond à un autre compte, il affiche ce nom. Le groupe dépend aussi du répertoire parent, notamment de son bit setgid.
Un propriétaire numérique n’est pas une erreur en soi. Identifiez d’abord les UID/GID attendus par l’application dans la documentation de l’image. L’UID 1000 n’est pas une valeur universelle. Le schéma illustre le cas sans remappage ; il ne signifie pas qu’il faut systématiquement reprendre les données avec votre compte.

id
ls -ldn -- ./data
ls -ln -- ./data/config.yml
L’option -n affiche les identifiants numériques, même lorsqu’un nom existe. Avant toute correction, arrêtez proprement l’application qui écrit dans ce dossier et faites une sauvegarde. La commande suivante n’est adaptée que si tout le dossier doit réellement appartenir à votre utilisateur courant, par exemple après récupération de données hors service. Ne l’appliquez pas aveuglément à une base de données ou à des fichiers appartenant à plusieurs comptes.
sudo chown -R "$(id -u):$(id -g)" ./data
ls -ldn -- ./data
ls -ln -- ./data/config.yml
Les substitutions $(id -u) et $(id -g) sont évaluées par votre shell avant sudo. Lancez cet exemple depuis votre session utilisateur habituelle, dans le bon dossier, pas depuis un shell root. Les mêmes précautions sur les liens et les montages que dans la section récursive s’appliquent. Les deux commandes ls ci-dessus vérifient seulement le dossier et le fichier indiqués, pas toute l’arborescence.
Pour une application en service, conservez la propriété qu’elle attend. PUID/PGID sont des conventions prises en charge par certaines images, notamment celles de LinuxServer.io, et non des variables universelles de Docker. La directive Compose user: change l’utilisateur d’exécution ; elle ne répare pas les fichiers existants et peut perturber l’initialisation d’une image qui attend root. Suivez la méthode documentée pour l’image utilisée.
Avec Docker rootless ou userns-remap, les UID/GID internes et ceux de l’hôte peuvent différer. Consultez les règles de correspondance Docker avant un chown côté hôte. Une fois la configuration corrigée, redémarrez le service et vérifiez qu’il lit et écrit ses données normalement.
Options GNU à connaître
| Option | Description |
|---|---|
-c, --changes | Signale les changements réellement effectués (verbeux sélectif) |
-f, --silent, --quiet | Supprime la plupart des messages d’erreur |
-v, --verbose | Affiche un diagnostic pour chaque fichier traité |
--dereference | Modifie la cible plutôt que le lien. Le comportement récursif dépend aussi des options de parcours ; choisissez explicitement la politique adaptée. |
-h, --no-dereference | Modifie le lien symbolique lui-même, pas sa cible (utile seulement sur les systèmes qui gèrent la propriété des liens) |
--from=PROPRIÉTAIRE_ACTUEL:GROUPE_ACTUEL | N’applique la modification que si la propriété actuelle correspond ; l’un des deux critères peut être omis |
--preserve-root | Refuse d’agir récursivement sur / |
--no-preserve-root | N’accorde aucun traitement spécial à / (comportement par défaut) |
--reference=RFILE | Utilise la propriété de RFILE plutôt que des valeurs explicites ; RFILE est toujours déréférencé s’il s’agit d’un lien symbolique |
-R, --recursive | Opère récursivement sur les fichiers et répertoires |
-H | Avec -R : traverse un lien symbolique vers un répertoire s’il est passé en argument sur la ligne de commande |
-L | Avec -R : traverse tout lien symbolique vers un répertoire rencontré |
-P | Avec -R : ne traverse aucun lien symbolique (comportement par défaut) |
GNU coreutils et Ubuntu : vérifier l’implémentation
Ne déduisez pas les comportements de chown du seul nom de la distribution. Vérifiez la version installée et les options qu’elle documente, notamment sur Ubuntu lorsque plusieurs implémentations sont possibles :
chown --version
chown --help
man chown
Avec GNU coreutils, chown alice: change le propriétaire et sélectionne le groupe de connexion d’alice ; chown alice laisse le groupe inchangé. Pour expliciter votre intention dans un script, indiquez les deux noms, par exemple alice:equipe, et vérifiez le résultat. Les éventuelles différences d’une autre implémentation doivent être rattachées à sa version précise ; ce guide ne présume pas qu’une régression reste présente dans toutes les versions ultérieures.
Erreurs courantes
chown: changing ownership of ‘fichier’: Operation not permitted
$ chown alice fichier.txt
chown: changing ownership of 'fichier.txt': Operation not permitted
Changer le propriétaire exige normalement la capacité CAP_CHOWN, y compris pour céder son propre fichier. Si votre compte est autorisé à administrer cette cible, utilisez :
sudo chown alice fichier.txt
Si l’erreur persiste avec sudo, recherchez un attribut immuable ou append-only, des restrictions de conteneur ou des règles du serveur de fichiers. Sur NFS, le remappage de root peut notamment limiter l’opération. FAT/exFAT ne stockent pas la propriété Unix habituelle : les options de montage peuvent déterminer le propriétaire affiché. Un système de fichiers en lecture seule provoque généralement une erreur « Read-only file system », distincte de « Operation not permitted ». Ne désactivez pas une protection sans en comprendre la raison.
chown: invalid user: ‘alice’
$ sudo chown alice fichier.txt
chown: invalid user: 'alice'
Le nom n’est pas résolu par le système. Vérifiez le compte et, si vous en indiquez un, le groupe :
getent passwd alice
getent group equipe
getent consulte les sources de comptes configurées, y compris les annuaires lorsque le système en utilise. Lire seulement /etc/passwd ne couvre pas tous ces cas. Ne créez pas un compte au hasard pour faire disparaître l’erreur : utilisez l’identité réellement prévue.
Commandes complémentaires
chown s’utilise souvent avec chmod pour compléter la gestion des droits : chown définit qui possède le fichier, chmod définit ce que chaque catégorie d’utilisateur peut en faire. Pour repérer des fichiers par leurs propriétés avant de leur appliquer chown, voir la commande find.
FAQ
Quelle est la différence entre chmod et chown ?
chown change le propriétaire et le groupe d’un fichier — c’est-à-dire à qui il appartient. chmod change les permissions — c’est-à-dire ce que chaque catégorie d’utilisateur (propriétaire, groupe, autres) a le droit d’y faire. Les deux commandes sont complémentaires : chown répond à « à qui appartient ce fichier », chmod répond à « qui peut le lire, l’écrire ou l’exécuter ».
chown seul suffit-il à sécuriser un fichier ?
Non, il faut vérifier ensemble la propriété et les permissions. chown peut changer qui bénéficie des droits existants, mais ne choisit pas les permissions rwx à votre place. Les permissions Unix d’un fichier en mode 777 autorisent notamment l’écriture aux autres utilisateurs ; lui donner root comme propriétaire ne corrige pas cela. Les ACL, les répertoires parents et les autres contrôles de sécurité peuvent aussi intervenir.
Attention aux exécutables : un changement de propriétaire ou de groupe peut également effacer les bits setuid/setgid et les capacités du fichier. N’appliquez pas de modification récursive indiscriminée aux programmes système.
Comment changer le propriétaire sans sudo ?
Sans sudo ne signifie pas sans privilèges : un shell root ou un processus disposant de CAP_CHOWN peut changer le propriétaire, dans les limites de son environnement. Un utilisateur ordinaire ne peut normalement pas céder son fichier à un autre compte. Il peut toutefois changer le groupe de son propre fichier vers un groupe dont il est membre. Dans un conteneur, les capacités, les espaces de noms et le système de fichiers déterminent ce qui est autorisé.
Comment appliquer chown récursivement sans tout casser ?
Choisissez un dossier précis dont toute la propriété doit changer, sauvegardez les données et métadonnées, puis inspectez l’arborescence sans tronquer la liste avec head. Vérifiez les liens et les montages, et empêchez les écritures concurrentes. L’option GNU --preserve-root protège /, pas tous les chemins sensibles. Contrôlez les propriétaires après l’opération et le fonctionnement du service concerné ; aucune option ne remplace ces vérifications.
Conclusion
Retenez trois étapes : identifier le propriétaire et le groupe attendus, cibler précisément les fichiers, puis vérifier le résultat. Utilisez -R seulement si la même propriété doit s’appliquer à tout le dossier. chown et chmod sont complémentaires : l’appartenance et les permissions déterminent ensemble les accès. Avec Docker, suivez les exigences de l’image et le mode de correspondance UID/GID ; ne remplacez pas un diagnostic par un chown automatique à chaque démarrage.
GNU chown(1) — syntaxe et options
Linux chown(2) — privilèges, effets et erreurs
GNU Coreutils — chown
getent(1) — résolution des comptes et groupes
Docker — bind mounts
Docker — correspondances UID/GID
Docker Compose — user
LinuxServer.io — PUID et PGID
Révision technique : 11 septembre 2026, à partir des manuels Linux et des documentations Docker et LinuxServer.io. Les comportements propres à une version doivent être vérifiés dans l’aide et le manuel de l’implémentation installée.