J'ai consulté de nombreux sites Web et forums sur la manière de configurer un utilisateur SFTP qui est emprisonné dans un répertoire donné à l'aide de CHROOT. Voici les étapes que j'ai suivies mais je n'arrive pas à obtenir les autorisations d'écriture pour fonctionner.
Configuration
sshd_config
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Match group webmaster
X11Forwarding no
ChrootDirectory %h
AllowTcpForwarding no
ForceCommand internal-sftp
Créer un dossier
mkdir /var/www/sites
Créer un utilisateur et un groupe
useradd uploader
passwd uploader
usermod -d /var/www/sites uploader
groupadd webmaster uploader
groupadd www-data uploader
Autorisations et propriété
chown root:root /var/www
chmod 755 /var/www/sites
Maintenant, avec ces paramètres, le programme de téléchargement utilisateur est capable de SFTP dans le répertoire de base, mais il est impossible d’écrire dans le répertoire.
Il y a 2 erreurs typiques qui se produisent, je ne peux pas me connecter ou je n'ai pas de permission en écriture.
Erreur de connexion
Error: Network error: Software caused connection abort
Error: Could not connect to server
Changing permissions of /var/www/sites to 775 or 777 causes login error.
chown /var/www/sites to uploader:root causes login error.
chwon root:webmaster or root:www-data I have no write permissions
J'arrive mal à essayer de comprendre cela et si quelqu'un pouvait me diriger dans la bonne direction, je l'apprécierais grandement.
Je vous remercie.
Découvrez la solution. L'utilisateur est emprisonné à /var/www/sites
. J'ai ensuite créé un autre dossier /var/www/sites/site1
.
J'utilise:
chown root:webmaster /var/www/sites/site1
chmod 775 /var/www/sites/site1
Cela permettait au répertoire de base de disposer des autorisations appropriées pour se connecter et pouvoir ensuite écrire dans le dossier suivant.
Si l'utilisateur a besoin d'un accès en écriture à /var/www/sites
, vous devez emprisonner l'utilisateur à /var/www
qui a la propriété root:root
et des autorisations de 755. Vous devez ensuite attribuer à /var/www/sites
la propriété de root: (votre groupe) et des autorisations de 775.
Peut-être que la meilleure solution est:
mkdir /var/www/sites/myfirstuser/hisownsite
mkdir /var/www/sites/myseconduser/hisownsite
...
chown root:root /var/www/sites /var/www/sites/{myfirstuser,myseconduser} && chmod 755 /var/www/sites/{myfirstuser,myseconduser}
chmod 775 /var/www/sites/myfirstuser/hisownsite
chmod 775 /var/www/sites/myseconduser/hisownsite
chgrp www-data /www/sites/myfirstuser/hisownsite /var/www/sites/myseconduser/hisownsite
Ajouter les utilisateurs:
useradd -d /var/www/sites/myfirstuser -s /bin/false -g www-data dev1
useradd -d /var/www/sites/myseconduser -s /bin/false -g www-data dev2
passwd dev1
passwd dev2
Ensuite, pour chaque utilisateur que vous avez créé, ajoutez une balise ssh comme ceci: (vous pouvez également utiliser la directive "Match Group" comme dans votre exemple au lieu de "Match User")
Match User dev1
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Match user dev2
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Vous pouvez ainsi gérer tous les utilisateurs dont vous avez besoin dans un environnement chrooté.
H, Fabrizio