Un système d’exploitation GNU/Linux a trois types d’utilisateurs et trois type de droits distincts.
Cette page explique et présente les options les plus souvent utilisées pour des scripts et plus précisément la gestion de dossiers et fichiers de sites web sur un serveur Apache sous Linux.
I – La commande CHmod
Les types d’utilisateurs
- Le propriétaire du fichier (user)
- Le groupe du propriétaire du fichier (group)
- Les autres utilisateurs, ou encore le reste du monde (others)
Les types de droits
- r : droit de lecture (read)
- w : droit d’écriture (write)
- x : droit d’exécution (eXecute)
II – Correspondances des droits en binaire/octale et leurs significations
Position Binaire | Valeur octale | Droits | Signification |
---|---|---|---|
000 | 0 | – – – | Aucun droit |
001 | 1 | – -x | Exécutable |
010 | 2 | – w – | Ecriture |
011 | 3 | – w x | Ecrire et exécuter |
100 | 4 | r – – | Lire |
101 | 5 | r – x | Lire et exécuter |
110 | 6 | r w – | Lire et écrire |
111 | 7 | r w x | Lire écrire et exécuter |
Ainsi pour modifier les droits de façon octale, la meilleure façon pour être certain du résultat, est d’additionner ceux-ci.
Par exemple : changer les droits du fichier « monscript » pour que je sois (moi le propriétaire) le seul à pouvoir le modifier, que les personnes de mon groupe puissent le lire comme l’exécuter et que le reste du monde puisse uniquement l’exécuter :
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r – x | – – x |
Position Binaire | 111 | 101 | 001 |
Valeur Octale | 7 | 5 | 1 |
Il faudra donc lancer dans la console pour modifier ces droits comme ci-dessus :
sudo chmod 751 monscript
III – Récapitulatif des différentes valeurs possibles fréquemment utilisées
644 – Lecture, écriture pour le propriétaire / Lecture pour les autres
Valeur par défaut d’un fichier sous GNU/Linux
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w – | r – – | r – – |
Position Binaire | 110 | 100 | 100 |
Valeur Octale | 6 | 4 | 4 |
666 – Lecture, écriture pour tout le monde
Déconseillé
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w – | r w – | r w – |
Position Binaire | 110 | 110 | 110 |
Valeur Octale | 6 | 6 | 6 |
700 – Lecture, écriture, exécution juste pour le propriétaire
Valeur par défaut d’un dossier sous GNU/Linux
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | – – – | – – – |
Position Binaire | 111 | 000 | 000 |
Valeur Octale | 7 | 0 | 0 |
705 – Le propriétaire à tous les droits / Le groupe aucun / Les autres lire et executer
Préconisé par certains providers pour le répertoire du site, si celui-ci est inaccessible (message : « Forbidden… »)
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | – – – | r – x |
Position Binaire | 111 | 000 | 101 |
Valeur Octale | 7 | 0 | 5 |
La ligne de code à entrer en FTP (sur Filezilla) en cas de souci avec certains providers est : site chmod 705 /
755 – Le propriétaire à tous les droits / Les autres lire et exécuter
Utile pour des scripts par exemple et certains fichiers d’un site web
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r – x | r – x |
Position Binaire | 111 | 101 | 101 |
Valeur Octale | 7 | 5 | 5 |
764 – Tous droits pour le propriétaire / Lecture, écriture pour le groupe / Lecture seule pour les autres
Parfois utile pour des fichiers d’un site web appartenant au groupe www-data
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r w – | r – – |
Position Binaire | 111 | 110 | 100 |
Valeur Octale | 7 | 6 | 4 |
774 – Tous les droits pour le propriétaire et le groupe / Lecture seule pour les autres
Utile pour certains fichiers d’un site sur un serveur local de développement
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r w x | r – – |
Position Binaire | 111 | 111 | 100 |
Valeur Octale | 7 | 7 | 4 |
775 – Tous les droits pour le propriétaire et le groupe / Lecture et exécution pour les autres
Très pratique pour se simplifier la vie avec la gestion d’un site en développement sur un serveur local (dans le dossier media)
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r w x | r – x |
Position Binaire | 111 | 111 | 101 |
Valeur Octale | 7 | 7 | 5 |
777 – Tous les droits pour tous
Fortement déconseillé !
Mais peut-être nécessaire pour le cache de CMS en local (par exemple) sur un serveur Lamp
Type d’utilisateurs | Propriétaire | Groupe | Les autres |
---|---|---|---|
Droits | r w x | r w x | r w x |
Position Binaire | 111 | 111 | 111 |
Valeur Octale | 7 | 7 | 7 |
Pour modifier les droits d’un répertoire et de ses sous répertoires, utilisez la fonction récursive -R
Exemple, pour modifier le répertoire /var/www/html/monsite avec les droits modifiés en 755, lancez :
sudo chmod -R 755 /var/www/html/monsite
IV – Afficher les droits d’un répertoire
Les droits des fichiers d’un dossier peuvent être affichés par la commande « ls -l »
Par exemple, afficher les droits des fichiers du dossier /var/www/html/monsite :
ls -l /var/www/html/monsite
V – Format des droits
Le format des droits d’accès est une liste de 10 symboles. Le 1er symbole est soit un « – » soit un « l » soit un « d« , ils indiquent s’il s’agit :
- d’un fichier (-)
- d’un lien (l)
- ou d’un dossier (d).
Ensuite suivent les trois groupes des trois symboles des permissions (rwx-). Par exemple :
-rw-r–r– | signifie que c’est un fichier dont les droits sont définis 644. |
drwx—— | signifie que c’est un dossier dont les droits sont définis en 700 |
lrwxrwxrwx | signifie que c’est un lien dont les droits sont définis en 777 |
VI – L’avantage du CHown
Pour éviter des chmod 666 (ou pire encore des 777), CHown permet de modifier le propriétaire d’un fichier.
Par exemple, si vous souhaitez vous réaproprier les droits sur l’ensemble d’un dossier et que vous êtes l’utilisateur « martin », lancez dans la console :
sudo chown -R martin /chemin/vers/dossier
Puis pour récupérer les droits sur l’ensemble du dossier, lancez :
sudo chmod -R 755 /chemin/vers/dossier
En bonus : un calculateur de CHMOD en ligne.
VII – A propos de Joomla! et d’autres CMS sur un serveur local GNU/Linux
Une fois que vous avez créé un fichier contenant votre CMS Joomla (ici appelé : « site-joomla ») vous devez modifier les permissions sur ce dossier (pour que l’installateur de Joomla! puisse y avoir accès) pour le groupe d’utilisateurs www-data.
Puis rendre le répertoire accessible en écriture pour le groupe www-data
sudo chmod -R g+w /var/www/site-joomla
+w ajoute le droit en écriture (write), g spécifiant que ce droit doit être ajouté seulement au groupe.
Pour certaines extensions, « JCH Optimize » par exemple, il faudra également modifier certains droits, notamment :
- ceux des dossiers « image » et « cache » (en 777)
- celui du fichier /var/www/html/site-joomla/plugins/system/jch-optimize/cache/jscss.php (en 755)
pour ce faire, lancez la commande :
sudo chmod 777 /var/www/html/site-joomla/plugins/system/jch_optimize/cache
Ainsi que la commande :
sudo chmod 755 '/var/www/html/site-joomla/plugins/system/jch_optimize/cache/jscss.php'
Remplacez bien sûr dans ces 4 commandes « site-joomla » par le nom de votre dossier contenant votre Joomla!
Inspirez-vous également de ces lignes de commandes pour d’autres CMS, tels WordPress, Contao, Drupal, LifeRay, PrestaShop, Thelia, FreeGuppy, SPIP, etc…
VIII – Syntaxe de CHown
chown nouveau_propriétaire:nouveau_groupe mon_fichier
Exemple : « olivier » devient le nouveau propriétaire du nouveau groupe « partageur » du fichier « manuel.odt »
chown olivier:partageur manuel.odt
Modifier seulement le propriétaire sans toucher au groupe
chown nouveau_propriétaire nom_du_fichier
Exemple : « alain » devient le propriétaire du fichier « index.php »
chown alain index.php
IX – Syntaxe de CHmod
Rendre le répertoire accessible en écriture du répertoire /var/www/html/monsite
sudo chmod -R g+w /var/www/html/monsite
X – Cas pratique
Pour que l’utilisateur « olivier » reprenne ses droits sur le répertoire /media/www-dev/private/monsite (et ses sous-répertoires)
sudo chown -R olivier /media/www-dev/private/monsite
sudo chmod -R 755 /media/www-dev/private/monsite
Si vous avez activé l’affichage des messages d’erreurs PHP sur un site en développement et que les fichiers contenus dans le répertoire « /media/www-dev/private/mon-site/mon-dossier » vous en renvoient une ribambelle, ce qui est le cas lorsque les fichiers doivent avoir une autorisation en écriture (cache, compteurs de visite, etc.), voici la commande à utiliser pour les éviter :
sudo chmod -R 777 /media/www-dev/private/mon-site/mon-dossier
Ci-dessous la commande pour réattribuer les droits à toutes les images se trouvant dans un dossier :
find /chemin/vers/dossier -regex ".+\.\(jpeg\|gif\|png\)" -exec chmod 644 {} \;s