Réponses:
Les systèmes Unix fournissent la chroot
commande qui vous permet de réinitialiser l' /
utilisateur dans un répertoire de la hiérarchie du système de fichiers, où il ne peut pas accéder aux fichiers et répertoires "supérieurs".
Cependant, dans votre cas, il serait approprié de fournir un chroot virtuel implémenté par le service shell distant. sftp peut être facilement configuré pour restreindre un utilisateur local à un sous-ensemble spécifique du système de fichiers.
par conséquent, dans votre cas, vous voulez chroot
, disons, utilisateur foo
utilisateur dans le /var/www/vhosts/
répertoire.
Vous pouvez définir un répertoire chroot pour votre utilisateur pour les confiner dans le sous-répertoire /var/www/vhosts/
comme dans /etc/ssh/sshd_config
;
Créer un utilisateur foo
avec mot de passe
sudo useradd foo
sudo passwd foo
Créer pour le groupe SFTP uniquement
$ sudo groupadd sftp_users
Ajouter à un utilisateur foo
pour le groupe SFTP uniquement
$ sudo usermod -G sftp_users foo
Changer de propriétaire, car autorisation de lecture / écriture
sudo chown root.root /var/www/vhosts/
Ajouter une autorisation
sudo chmod 755 /var/www/vhosts/
Éditer /etc/ssh/sshd_config
sudo vi /etc/ssh/sshd_config
Commentez et ajoutez une ligne comme ci-dessous
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
Ajouter à la fin
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www/vhosts/
ForceCommand internal-sftp
(REMARQUE: les Match
blocs doivent se trouver à la FIN du sshd_config
fichier.)
Redémarrez le ssh
service
sudo service ssh restart
Avec cette configuration, vous pouvez ssh dans un dossier ubuntu
et obtenir des fichiers. Impossible put
oudelete
Pour sftp dans le dossier de droite, éditez /etc/passwd
. Modifier la ligne pour que l'utilisateur foo
ressemble à ceci
$ sudo vi /etc/passwd
..
foo:x:1001:1001::/var/www/vhosts/:
..
Cela changera le foo
dossier de départ de l' utilisateur en dossier de votre serveur sftp.
Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftp
mais il y a une erreur quand je veux redémarrer ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Match.....
section à la FIN du fichier. Mettez ce code à la fin du fichier et redémarrez-le.
Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no
In sshd_config et créé l'utilisateur et le groupe comme vous l'avez fait, mais l'utilisateurfoo
a les droits sur tous les dossiers :(