Permissions www-data

Bonjour,
j’essaye d’affiner les permissions sur mon serveur web sous Debian 9.9 ayant plusieurs sites; chacun géré par un utilisateur unique nommé “site1”, “site2”, etc…
Actuellement et globalement mes dossiers sont en 755 et mes fichiers en 644 mais j’aimerais retirer toute permission aux “autres” et donc avoir 750 et 640.
Je sais que le user www-data doit accéder au contenu du site. Je l’ai donc ajouter aux groupes “site1”, “site2”, etc…
usermod -aG site1 www-data
Malheureusement j’obtiens une erreur 403 " Forbidden - You don’t have permission to access / on this server."
avec les permissions :

/home/                                       755  drwxr-xr-x  root   root
/home/site1                                  755  drwxr-xr-x  root   site1
/home/site1/public                           750  drwxr-x---  site1  site1
/home/site1/public/index.php                 640  -rw-r-----  site1  site1

Je ne comprends pas car normalement le groupe site1 (et donc www-data) a le droit d’accéder en lecture au site1 ! :fearful:

J’ai sûrement zappé un truc mais quoi ???
Merci d’avance pour votre aide

salut
je te propose cette page :
https://doc.ubuntu-fr.org/apache2#permissions
en particulier il y est dit
Le propriétaire devrait être l’utilisateur qui va maintenir le contenu localement, mais le groupe propriétaire devrait rester www-data :

Merci pour ton aide.
Le problème avec cette méthode est que l’utilisateur (ayant un accès SFTP) ne peut pas mettre le groupe www-data sur les dossiers/fichiers qu’il uploade.
Si www-data appartient au groupe site1… pourquoi ça ne fonctionne pas !?

tu as essayé de mettre site1 dans le groupe de www-data?
ou peut être mettre un sgid au répertoire ```
/home/site1/public


https://tech.feub.net/2014/06/permissions-des-fichiers-et-repertoires-dun-serveur-web/

non… :thinking:
pour moi ce n’est pas logique parce que c’est le user www-data qui accède aux données.
J’essaye !

sauf si c’est lié à une configuration spéciale de apache2 : peut êtr faudrait-il aller voir par là.

ça n’a pas l’air de fonctionner en ajoutant site1 au groupe www-data :

root@debian:~# usermod -aG www-data site1
root@debian:~# cat /etc/group | grep www-data
www-data:x:33:www-data,site1
site1:x:1003:site1,www-data

mais c’est bon dès que je met :

root@debian:~# chmod 755 /home/site1
root@debian:~# chmod 644 /home/site1/index.php

J’ai peut être une piste avec l’utilisation des ACL… y a une notion d’héritage et d’utilisateur/groupe par défaut Je reviens qd j’aurais testé…

Le service apache a bien été redémarré à chaque test ?
Parce qu’il faut que les différents process relisent les appartenance de groupe des différents users utilisés, avant que ça soit effectif.

1 J'aime

bien vu

non je n’ai pas restarté Apache à chaque modif… j’avais l’impression qu’à chaque test il y avait des différences.

Question : faut -il donner les permissions d’exécution sur les dossiers ( x) à www-data pour qu’il traverse tous les dossiers du chemin complet depuis la racine ? (ce n’est pas mon cas)

Après relecture du lien proposé par dindoun je test l’utilisation du SGID…
chmod 2750 /home/site1

Bonne question :grin: à votre avis, est-ce nécessaire ?
Pour le vérifier, vous pourriez tenter les commandes suivantes

sudo su - www-data
stat  /chemin/absolu/vers/un/fichier
exit

en mettant comme argument de stat un chemin existant qui passe par un répertoire sans le drapeau ‘x’ pour les autres, et répertoire dont le groupe propriétaire n’est pas www-data.
Pour comprendre ce qui se passe, travaillez avec deux terminaux, un dans lequel vous faites vos essais à base de

sudo chmod  ........

et l’autre dans lequel vous vous êtes identifié comme www-data et vous lacez

stat ......

Cordialement,
Regards,
Mit freundlichen Grüßen,
مع تحياتي الخالصة


F. Petitjean
Ingénieur civil du Génie Maritime.

« On ne perd pas son temps en aiguisant ses outils. »
Proverbe français

« Moi, lorsque je n’ai rien à dire, je veux qu’on le sache. » (R. Devos)

Salut,
Je n’ai jamais eu ce genre de pb.
Perso, je n’ai qu’une porte d’accès (en php) qui gère les autorisations au cas par cas.
En local tout est accessible, en web c’est php qui autorise ou non (j’ai splitté le site, en ‘bypassant’ apache).
Ça ne répond pas vraiment à la question, mais de mon côté c’est un système qui fonctionne très bien (et hyper sécure, rien d’accessible de l’extérieur sans passer par le code php qui vérifie les autorisations au cas par cas).
Exemple : https://www.sibian.fr/sbot/wrapper.php?scriptname=updateProduct.php&id=12688

[EDIT] chmod +X peut être utile…

Merci pour cette idée de démonstration mais je ne vois pas comment me connecter en tant que www-data sans password :roll_eyes:

root@debian:~# su - www-data
This account is currently not available.

désolé pour cette idée mais je cherche à adopter une solution native, simple et sécurisée.

Je test (tranquillement) l’utilisation du SGID (chmod avec octale 2000)… Ainsi tous fichiers/dossiers créés dans public obtient le groupe www-data.
ça semble prometteur :

chown -R site1:www-data /home/site1/public
chmod -R 2750 /home/site1/public
chmod -R 2770 /home/site1/public/cache
chmod -R 2770 /home/site1/public/tmp

su - www-data -s /bin/bash
(en root ou avec sudo, pour contourner le pb de passwd)

1 J'aime

merci mattotop :wink: