Site web multi-utilisateur

Résolu/Fermé
FredM - 21 oct. 2016 à 00:31
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 24 oct. 2016 à 00:09
Bonjour,
Je souhaite héberger plusieurs sites indépendants sur mon serveur sous debian jessie, accessibles via des accès FTP distincts.
Les accès FTP via ces 2 utilisateurs "site1" et "site2" ne permettent pas d'ajouter/modifier les fichiers vu qu'ils sont en www-data www-data.
Si je donne par exemple les droits utilisateur/groupe "site1" et "site2" aux répertoires et fichiers respectifs, je peux ajouter/modifier les fichiers via FTP mais wordpress qui n'apprécie pas car il ne peut plus modifier les fichiers php puisqu'il lui faut les droits www-data.

Que me conseillez-vous de faire ? J'ai trouvé sur le net ces différentes pistes mais je ne sais pas laquelle conviendrait le mieux côté sécurité et rapidité :
- Suexec-Suphp mais les packages ne sont plus dispo sous Debian 8.
- FastCGI-PhP-FPM
- apache2-mpm-itk
- userdir
- autre ?

Merci
Fred


A voir également:

4 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié par mamiemando le 21/10/2016 à 08:31
Bonjour,

Je pense que tu mélanges serveur ftp (par exemple proftpd) et serveur web (par exemple apache2). Ce sont deux problématiques différentes et qui se gèrent complètement indépendamment puisqu'il s'agit en pratique de deux démons différents.
https://www.mistra.fr/tutoriel-linux-serveur-web-apache2.html
https://doc.ubuntu-fr.org/proftpd

Pour héberger plusieurs sites web avec apache, il faut créer des virtualhosts (cf lien précédent). Apache les redirige vers le bon
DocumentRoot
(e.g.
/var/www/mon-site1
) par rapport au FQDN utilisé dans le navigateur (par exemple http://site1), conformément au nom de site que tu as défini pour chaque vhost.

Pour gérer plusieurs utilisateurs au sens ftp, il suffit de configurer ton serveur ftp en tant que tel. La solution que je trouve personnellement la plus simple c'est d'utiliser proftpd et par défaut, chaque utilisateur linux de la machine peut se connecter à son home avec son login et mot de passe linux. Le truc c'est qu'en général il sera "emprisonné" dans son home (il ne pas remonté plus haut que /home/toto et donc ne pourra pas accéder à /var/www, même au travers d'un lien symbolique). Une manière de contourner cela serait de faire des mount bind (voir forum, j'ai déjà expliqué plein de fois comment faire). Personnellement je trouve ça un peu compliqué comme approche.

Je te conseille plutôt de tout faire avec ssh (les gens sous windows utiliseront winscp au lieu de filezilla par exemple) ce sera beaucoup plus pratique et simple à mettre en place. Si tu pars sur cette solution, je te recommande de sécuriser ton serveur ssh et de n'autoriser que des authentifications par clé ssh.
http://prendreuncafe.com/blog/post/2005/08/29/262-installer-sa-cle-ssh-sur-un-serveur-distant
https://www.hostgator.com/help/article/how-to-disable-password-authentication-for-ssh

Dans les deux cas, il faut ensuite définir des droits pour ne permettre qu'aux bons utilisateurs de modifier les bons fichiers. Dans ton cas, le mieux serait (concernant
/var/www
) de définir des droits acl pour avoir un contrôle fin de qui peut faire quoi :
https://doc.ubuntu-fr.org/acl

Attention à t'assurer que tu n'empêche pas www-data (l'utilisateur "apache2") d'accéder aux fichiers avec les mêmes droits que sans acl.

Bonne chance
2
Merci à toi.
Je ne confond pas serveur web et FTP, pas de pb ;)
J'ai bien deux adresses http://site1 et http://site2 sur mon serveur, avec un accès FTP (via proftpd surveillé par fail2ban) pour chaque utilisateur.
Le problème c'est que www-data n'a pas les droits d'écriture sur les fichiers et répertoires appartenant aux utilisateurs site1 et site2.
La solution ACL que je ne connaissais pas semble effectivement convenir.
J'ai jeté un oeil à :
https://doc.ubuntu-fr.org/acl
http://sorrodje.alter-it.org/index.php?article39/partage-de-dossiers-avec-les-acl
et https://openclassrooms.com/courses/les-acl-access-control-lists-sous-linux

A priori si je donne à www-data les droits rw sur les fichiers/répertoires de l'utilisateur site1 via cette ACL, ça doit fonctionner :
setfacl -Rm d:u:www-data:rwx,d:u:site1:rwx,u:www-data:rwx,u:site1:rwx /home/site1

J'ai bon ?
Fred
0
ça marche du feu de dieu !
Merci à toi, ça fait un moment que je cherche une solution. Et parmi celles que j'avais collectées la tienne est bien la plus simple et rapide !
Merci
Fred
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
24 oct. 2016 à 00:09
De rien, je te souhaite une bonne continuation :-)
0