Régler les permissions sur les répertoires et fichiers pour Apache
Apache utilise l'utilisateur www-data
(sur Debian ou Ubuntu) lors de l'exécution de ses scripts PHP par exemple. Afin d'éviter des problèmes de sécurité sur votre serveur, il est nécessaire de régler les permissions comme il le faut.
Permissions
Sur les systèmes UNIX, la gestion des permissions se fait avec la commande chmod
. Celles-ci permet de définir pour un répertoire ou un fichier des permissions spécifiques pour son propriétaire (u
- user), son groupe (g
- group), toute autre personne (o
- other) ou tout le monde (a - all).
Les permissions peuvent être définies par l'utilisateur root
ou le propriétaire du fichier/répertoire.
Les permissions sont définies par une valeur octale :
Lecture (r) | 4 |
---|---|
Écriture (w) | 2 |
Exécution (ou accès à un répertoire) (x) | 1 |
Aucun droit | 0 |
Ces valeurs peuvent s'additionner pour les combiner. Cela donne une valeur comprise entre 0 (aucun droit) et 7 (tous les droits).
Les permissions sont donc représentées avec 3 chiffres :
- un pour le propriétaire (
u
), - un pour le groupe (
g
) - et un pour les autres (
o
).
Cela donne, par exemple :
Permission (ugo) | Signification |
---|---|
777 | Tous les droits pour tout le monde. |
000 | Aucun droit. |
700 | Tous les droits pour l'utilisateur propriétaire. |
750 | Tous les droits pour le propriétaire, les droits de lecture et écriture pour le groupe et aucun droit pour les autres. |
Sur les répertoires
Avec Apache, on règle les permissions sur les répertoires de la façon suivante :
Permissions | |
---|---|
Sans droits d'écriture | 755 |
Avec droits d'écriture | 775 |
find . -type d -exec chmod 0755 {} \;
.
indique le répertoire courant. Cela pourrait tout aussi bien être un chemin vers un répertoire.
Sur les fichiers
Pour les fichiers, on utilise les mêmes permissions que pour les répertoires mais en supprimant le droit d'exécution :
Permissions | |
---|---|
Sans droits d'écriture | 644 |
Avec droits d'écriture | 664 |
find . -type f -exec chmod 0644 {} \;
.
indique le répertoire courant. Cela pourrait tout aussi bien être un chemin vers un répertoire.
UID / GID
Les uid
(UserID) et gid
(GroupID) représentent les permissions d'un utilisateur.
Définit le propriétaire du répertoire www
comme étant <user> et son groupe www-data
.
chown -R <user>:www-data www
Affecte à tous les sous-répertoires de www
le gid
du groupe de www
(donc www-data
). Ainsi tout nouveau répertoire créé dans www
appartiendra au groupe www-data
(et non celui de <user>).
chmod -R g+s www