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
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
A voir également:
- Site web multi-utilisateur
- Site de telechargement - Guide
- Site inaccessible - Guide
- Traduire une page web - Guide
- Instagram web - Guide
- Site de vente entre particulier - Guide
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
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
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
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
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
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
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
ç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
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
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
24 oct. 2016 à 00:09
De rien, je te souhaite une bonne continuation :-)