Vous n'êtes pas connecté - Connexion ou Créer un compte

Classée dans Questions > Questions / Réponses

Régler les permissions sur les répertoires et fichiers pour Apache

Administrateur
Une annonce aurait pu être ici :'(

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 droit0

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 :

  1. un pour le propriétaire (u),
  2. un pour le groupe (g)
  3. et un pour les autres (o).

Cela donne, par exemple :

Permission (ugo)Signification
777Tous les droits pour tout le monde.
000Aucun droit.
700Tous les droits pour l'utilisateur propriétaire.
750Tous 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'écriture755
Avec droits d'écriture775
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'écriture644
Avec droits d'écriture664
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

Il n'est plus possible de répondre à cette question car elle marquée comme résolue.