Un dossier créé au mauvais endroit ou avec des droits trop ouverts finit souvent par poser problème plus tard. La commande mkdir suffit pour commencer, mais elle ne remplace pas le contrôle du propriétaire, du groupe et des permissions.
Pour un répertoire personnel, créez-le dans votre dossier utilisateur. Pour un répertoire partagé ou utilisé par un service, identifiez d’abord le compte qui doit écrire dedans. Un chmod 777 masque parfois un vrai problème de propriétaire et laisse tous les comptes locaux modifier le contenu.
Créez le dossier au bon emplacement
Depuis le dossier courant, la commande suivante crée un seul répertoire :
mkdir sauvegardes
Avec un chemin absolu, vous savez précisément où le dossier sera créé. Ajoutez -p si les dossiers parents peuvent manquer :
mkdir -p ~/projets/site-test/logs
Sans -p, mkdir s’arrête si ~/projets/site-test n’existe pas. L’option évite aussi une erreur lorsque le dernier dossier est déjà présent. Elle ne transforme pas un chemin erroné en bon chemin : vérifiez-le avec pwd avant de lancer la commande.
Pour préparer un espace qui doit appartenir à votre compte, restez dans votre répertoire personnel. Vous éviterez sudo, donc un dossier créé par root que votre utilisateur ne pourra plus remplir :
mkdir -p ~/archives/2026
stat -c '%A %U:%G %n' ~/archives ~/archives/2026
Choisissez des droits adaptés à l’usage
Un dossier demande le droit x pour être traversé. Sur un répertoire, r permet de lister les noms et w permet d’ajouter, renommer ou supprimer des entrées. Les droits réellement appliqués dépendent aussi de votre umask.
Pour un dossier privé, créez-le avec un mode explicite :
mkdir -m 700 ~/archives-privees
stat -c '%A %a %U:%G %n' ~/archives-privees
Le mode 700 laisse l’accès au propriétaire et ferme le dossier aux autres utilisateurs. Pour un répertoire où un groupe de travail doit lire et écrire, choisissez plutôt un groupe connu et le mode 2770 :
sudo install -d -o alice -g equipe-web -m 2770 /srv/equipe-web
stat -c '%A %a %U:%G %n' /srv/equipe-web
Le 2 au début active le bit setgid du dossier. Les nouveaux fichiers et sous-dossiers héritent alors du groupe equipe-web. Cette solution évite d’ouvrir l’écriture à tous les comptes du serveur. Vérifiez que les membres attendus sont bien dans ce groupe avec id nom_utilisateur.
mkdir -m 777 crée un répertoire modifiable par tout le monde, puis le umask peut encore réduire ce mode. Ne l’utilisez pas pour corriger un Permission denied. Lisez plutôt le chemin complet, son propriétaire et les droits de chaque dossier parent :
namei -l /srv/equipe-web
ls -ld /srv /srv/equipe-web
id
Contrôlez avant de confier le dossier à un service
Un service lancé sous www-data, postgres ou un compte dédié ne voit pas forcément les mêmes droits que votre session. Consultez son utilisateur avant de changer quoi que ce soit. Pour systemd, cette commande donne les comptes configurés par l’unité :
systemctl show mon-service \
-p User -p Group -p DynamicUser
Créez ensuite le dossier avec le propriétaire attendu, puis testez un fichier depuis ce compte. Sur une machine de test :
sudo install -d -o www-data -g www-data -m 750 /var/lib/mon-service
sudo -u www-data touch /var/lib/mon-service/test-ecriture
ls -l /var/lib/mon-service/test-ecriture
sudo rm /var/lib/mon-service/test-ecriture
Cette vérification vous dit si le compte du service peut réellement écrire. Si elle échoue, n’ajoutez pas des permissions au hasard. Contrôlez d’abord le propriétaire, le groupe, les ACL éventuelles avec getfacl et les droits des dossiers parents.
- Utilisez
mkdir -ppour un chemin dont les parents peuvent manquer. - Utilisez
statouls -ldjuste après la création. - Pour un dossier partagé, définissez propriétaire, groupe et mode avant de lancer le service.
- Réservez
chmodà une correction ciblée, après avoir identifié le compte bloqué.
Le guide sur setfacl sous Linux aide quand un seul utilisateur a besoin d’un accès supplémentaire. Si vous devez modifier des permissions dans une arborescence existante, utilisez plutôt la procédure consacrée à chmod récursif : changer tous les fichiers et dossiers avec le même mode casse facilement les droits d’exécution des répertoires.
La page de manuel mkdir(1) détaille les options, et mkdir(2) explique l’effet de l’umask et l’héritage du groupe. Gardez ces deux points en tête avant de créer un dossier utilisé par un service.
