Définir les permissions nécessaires
Objectif : Régler les propriétaires et permissions pour qu’Apache puisse lire le site sans ouvrir l’accès en écriture.
Un site peut être correctement installé et pourtant renvoyer une erreur d’accès si Apache ne peut pas parcourir ses répertoires ou lire ses fichiers. À l’inverse, des permissions trop larges permettent à des comptes qui ne devraient pas intervenir de modifier le contenu.
Vous allez appliquer des droits de lecture au site sans accorder à Apache un droit d’écriture. La racine de documents et l’arborescence ont été préparées dans la leçon précédente ; les chemins utilisés ici sont /var/www/application et /var/www/api.
Comprendre les droits utiles à Apache
Apache traite les requêtes avec un compte système dédié, dont le nom dépend de la distribution : il s’agit souvent de www-data ou de apache. Ce compte doit pouvoir traverser chaque répertoire du chemin jusqu’au contenu demandé et lire les fichiers qu’il sert. Il n’a pas besoin d’en être propriétaire ni de pouvoir les modifier.
Sous Linux, le droit de lecture permet de consulter le contenu d’un fichier. Sur un répertoire, le droit d’exécution correspond à la traversée : il permet d’accéder aux éléments dont le nom est connu. Pour servir une page, Apache a donc besoin du droit de lecture sur le fichier et du droit de traversée sur chacun des répertoires de son chemin.
Appliquer des permissions de lecture seule
Pour un contenu statique, une configuration simple consiste à laisser les fichiers sous la propriété de l’administrateur et à accorder la lecture à tous les comptes locaux. Les répertoires sont réglés en 755 : leur propriétaire peut les modifier, tandis que les autres comptes peuvent les parcourir et en lire la liste. Les fichiers sont en 644 : seul leur propriétaire peut les modifier, et les autres comptes peuvent les lire.
sudo chown -R root:root /var/www/application /var/www/api
sudo find /var/www/application /var/www/api -type d -exec chmod 755 {} +
sudo find /var/www/application /var/www/api -type f -exec chmod 644 {} +
sudo stat -c '%A %U:%G %n' /var/www/application /var/www/api
sudo find /var/www/application /var/www/api -maxdepth 2 -printf '%M %u:%g %p\n'Les deux racines appartiennent à root:root. Les répertoires apparaissent avec des droits de type drwxr-xr-x et les fichiers avec des droits de type -rw-r--r--.La commande chown fixe ici le propriétaire et le groupe ; find applique ensuite des droits différents selon qu’il rencontre un répertoire ou un fichier. Cette distinction évite de rendre les fichiers exécutables sans raison et garantit la traversée des répertoires par Apache. Vérifiez le résultat avec les commandes d’affichage avant de poursuivre.
Contrôler tout le chemin d’accès
Des droits corrects dans /var/www/application ne suffisent pas si le compte Apache ne peut pas traverser un répertoire parent, par exemple /var ou /var/www. La commande namei affiche les permissions de chaque composant du chemin et aide à repérer un blocage. Le compte Apache doit pouvoir traverser ces répertoires, sans qu’il soit nécessaire de lui accorder un droit d’écriture.
namei -l /var/www/application/index.html
namei -l /var/www/api/index.htmlChaque composant du chemin est affiché avec son propriétaire, son groupe et ses permissions. Vérifiez que le compte utilisé par Apache peut traverser les répertoires et lire le fichier ciblé.Le principe du moindre privilège consiste à n’accorder à chaque compte que les droits nécessaires à sa tâche. Pour ces deux racines, Apache sert le contenu ; les mises à jour restent une opération administrative distincte. Si une future application doit écrire des téléversements ou des fichiers temporaires, limitez l’écriture au répertoire concerné au lieu d’ouvrir toute la racine du site.
À retenir
- Apache doit pouvoir traverser les répertoires du chemin et lire les fichiers servis.
- Pour un site statique, des répertoires en 755 et des fichiers en 644 permettent la lecture sans écriture pour les autres comptes.
- Gardez la propriété et les droits d’écriture hors du compte Apache, sauf besoin spécifique et limité.
- Contrôlez les permissions sur toute l’arborescence, y compris les répertoires parents.
Dans la prochaine leçon, vous associerez une racine de documents au premier hôte virtuel.