Comment c’est calculé
Chaque fichier a trois jeux de droits : pour son propriétaire, pour son groupe et pour tous les autres. Chaque jeu a trois bits, lecture (4), écriture (2) et exécution (1), et un chiffre octal en est la somme.
chiffre = lecture 4 + écriture 2 + exécution 1 mode = propriétaire, groupe, autres 755 = rwx (4+2+1) r-x (4+1) r-x (4+1) 644 = rw- (4+2) r-- (4) r-- (4)
Un quatrième chiffre placé devant contient les bits spéciaux : setuid 4, setgid 2 et sticky 1. ls les affiche aux places de l’exécution, s pour setuid ou setgid et t pour sticky, en majuscule quand le bit d’exécution dessous est désactivé. Sur un dossier, l’exécution est le droit d’y entrer, donc les dossiers ont besoin de x là où de simples fichiers n’en ont pas besoin.
Exemple
chmod 640 wp-config.php : le propriétaire lit et écrit (6 = 4 + 2), le groupe lit (4) et les autres n’ont rien (0). ls -l affiche alors -rw-r-----, et le serveur web ne peut lire le fichier que s’il est dans le groupe du fichier.
Questions
Que signifie chmod 755 ?
Le propriétaire peut lire, écrire et exécuter (7), et le groupe et tous les autres peuvent lire et exécuter (5 chacun). ls -l l’affiche en rwxr-xr-x. C’est le mode habituel pour les dossiers et pour les scripts et programmes que d’autres doivent exécuter.
Quelle est la différence entre 644 et 755 ?
Uniquement le bit d’exécution. 644 (rw-r--r--) laisse le propriétaire écrire et tout le monde lire ; 755 laisse aussi tout le monde exécuter. Les fichiers ordinaires comme HTML, images et fichiers PHP ont besoin de 644, les dossiers et les scripts qui s’exécutent seuls de 755.
Pourquoi ne pas utiliser chmod 777 ?
777 permet à tout utilisateur et processus du serveur de modifier le fichier. Si un site ou un plugin est piraté, l’attaquant peut réécrire tout ce qui est en 777. Il vaut mieux corriger une erreur de droits en donnant le fichier au bon utilisateur avec chown, ou en ajoutant le serveur web au groupe du fichier.
Comment changer les droits de tous les fichiers d’un dossier ?
chmod -R 755 folder modifie tout ce qui s’y trouve, fichiers compris, ce qui rend chaque fichier exécutable. Pour distinguer dossiers et fichiers, utilisez find : find folder -type d -exec chmod 755 {} + pour les dossiers et find folder -type f -exec chmod 644 {} + pour les fichiers.