Permissions Linux

François Raynaud 2020/06/08 15:52

Mise en production d'openAssociation

La procédure est valable pour toutes les applications openMairie

source : réglage des droits apache

La sécurisation de /var/www/html/openassociation_1.0.1

L'utilisateur Apache (et donc PHP) est « www-data ».

Seul le propriétaire (u=root) peut modifier les fichiers ou écrire dans /var/www, et le groupe (g=www- data) peut uniquement les lire. Les autres (o) ne peuvent rien faire.

chown -R root:www-data /var/www/html/openassociation_1.0.1
find /var/www/html/openassociation_1.0.1 -type f -print0 | xargs -0 chmod -t,a-rwxs,u+rw,g+r
find /var/www/html/openassociation_1.0.1 -type d -print0 | xargs -0 chmod -t,a-rwxs,u+rwx,g+rx

chmod sur wikipedia

  • option -t de chmod :
  • option a-rwxs : efface les droits à tous (a)
  • option a-rwxs : “s” est le sticky bit qui permet de supprimer un dossier ou un fichier seulement si on en est propriétaire
  • option u+rw : donne les droits lecture et écriture à u
  • option g+r : donne les droits de lecture à g
  • option -print0 de find : les noms de fichiers avec espaces et caractère particulier seront traités
  • xarg : permet de récupérer les arguments en sortie de la commande précédente et de les traiter à travers un pipe.
On peut alternativement utiliser la méthode octale qui se présente comme ceci :
  • r (4) : autorisation de lecture
  • w (2) : autorisation d'écriture
  • x (1) : autorisation d'exécution
chown -R root:www-data /var/www/html/openassociation_1.0.1
find /var/www/html/openassociation_1.0.1 -type f -print0 | xargs -0 chmod 640
find /var/www/html/openassociation_1.0.1 -type d -print0 | xargs -0 chmod 750

Mettre les droits d'écriture d'apache /var/www/html/openassociation_1.0.1/var

Il faut que www-data puisse écrire dans le répertoire var pour écrire les logs et les fichiers.

Le -R (récursif) dans le cas d’un dossier, car openAssociation a besoin d’écrire dans le dossier mais elle a aussi besoin de pouvoir écrire dans les sous-dossiers et les fichiers.
chmod -R g+w /var/www/html/openassociation_1.0.1/var
Si il n'existe pas il faut créer le dossier /var/www/html/openassociation_1.0.1/var

avec la méthode octale, cas ou les fichiers sont stockés en var/www/html/files

chown -R root:www-data files/
find /var/www/html/files -type f -print0 | xargs -0 chmod 660
find /var/www/html/files -type d -print0 | xargs -0 chmod 770
Note de JPA du 11 mai 2020 Il faut effectuer les actions dans cet ordre :
mkdir /var/www/html/files
touch /var/www/html/files/test
chown -R root:www-data files/
find /var/www/html/files -type f -print0 | xargs -0 chmod 660
find /var/www/html/files -type d -print0 | xargs -0 chmod 770

Procédures sous gitlab