Bonsoir,
Je vais essayer d’être le plus clair possible, mais aussi le plus exhaustif :
Mon serveur nginx, fonctionne sur Jessie, duquel est accessible mon site perso.
Lorsque je l’ai créé, il y a quelques semaines, je l’ai créé avec un user normal, que l’on nommera “user1”, qui n’a pas de droits particuliers.
Son répertoire home est normal ; et il a pour shell, bash activé.
Le service web est accessible par Internet. J’ai néanmoins SSH actif aussi, normalement non accessible depuis Internet.
La configuration SSH utilise, entre autres, la directive AllowGroup pour donner le droit d’accès à cet “user1”, ainsi qu’à plusieurs groupes particuliers liés à SSH, que j’ai créés, dont un qu’on appelera “sshweb” - même si ce n’est pas le vrai nom.
Ces groupes SSH sont intimement liés à la configuration du service MySecureShell, que j’ai rajouté en sus.
Pas de service FTP - simplement SFTP !
Pour gérer les différents domaines sur mon serveur, j’ai créé des scripts bash, - on en trouve une vieille version sur mon dépôt github - … ces scripts gèrent la création des différents répertoires nécessaires, comptes et droits utilisateurs services, idem système, idem SSH, etc…
Bref, en gros, un domaine, géré par un hôte virtuel, a son propre utilisateur système, ssh, le shell étant celui de MySecureShell et non pas système, son propre sock php-fpm, etc … cet utilisateur est aussi ajouté au groupe web lié à nginx, que l’on nommera 'www-data’
Sa racine a, entres autres, principalement le répertoire ‘www’ pour publication web, tel que /srv/www/domain/www/ - qui est la valeur de la variable “chroot”, de même pour la variable “openbasedir” pour php.
Mon problème n’est pas de gérer les services ni les configurations nginx, ssh, mysecureshell, voire systèmes …
Le domaine principal a pour utilisateur, l’utilisateur de base du serveur nginx.
Je m’y connecte par SFTP sans soucis, avec l’utilisateur ‘user1’, j’arrive à envoyer des fichiers et autres répertoires sans soucis.
Je créé un deuxième domaine, qui a son propre utilisateur système, le shell étant celui de Mysecureshell, que l’on va appeler ‘dev2’, par soucis de simplification.
Je m’y connecte aussi par SFTP, que ce soit avec l’utilisateur lié à ce domaine ‘dev2’, ou avec l’utilisateur ‘user1’.
L’avantage de la connexion par ‘dev2’ est que j’arrive juste à la racine du domaine.
Le problème étrange que je rencontre est, me semble-t-il, lié au niveau système :
=> Si sur /srv/www/domain2/www/, j’ai pour propriétaire ‘dev2’, [strike]au-travers de filezilla, je ne peux pas envoyer de fichiers, ni en recevoir ; néanmoins, avec la partie droite de la fenêtre, je peux créer des fichiers, ou les détruire, ou leur donner des droits particuliers. Étonnant, n’est-ce pas ?
Mais, ce n’est pas tout …[/strike] après avoir relancé le service web, quelque soit le contenu, il est distribué avec un code erreur 404, pourtant ces fichiers ont bien les droits relatifs à ‘dev2’, qui fait bien partie du groupe ‘www-data’.
=> Si sur /srv/www/domain2/www/, j’ai pour propriétaire ‘user1’, je peux me servir de filezilla correctement, et quand je relance le service web, ainsi que php-fpm, cela fonctionne correctement ! -code 200- Ces fichiers ont les droits relatifs à ‘user1’ … il faut bien sûr que je m’y connecte avec cet 'user1’
Et, pourtant l’utilisateur lié au service fpm est et reste bien celui relatif à ‘dev2’.
Ce qui change essentiellement, entre ‘user1’ et ‘dev2’ est le shell système. Ils font tous les deux parties du groupe ‘www-data’ du serveur.
‘user1’ a bash, ‘dev2’ a mysecureshell. Mais, je ne comprends pas en quoi, cela peut générer le problème que je décris.
- Pour filezilla, c’est une histoire de configuration de celui-ci : Menu Gestionnaire de Sites > Onglet Paramètres de transfert : case à cocher limiter le nombre de connexions simultanés à 1 !