47 votes

Créer un nouvel utilisateur vsftpd et le verrouiller dans le répertoire de la maison / connexion (spécifier)

Je dois donner périodiquement un accès temporaire et limité à divers répertoires sur un serveur CentOS Linux qui a vsftpd installé.

J'ai créé un utilisateur en utilisant useradd [nom_utilisateur] et je lui ai donné un mot de passe en utilisant passwd [mot_de_passe].

J'ai créé un répertoire dans /var/ftp puis je lie cela au répertoire auquel je souhaite limiter l'accès.

Que dois-je faire de plus pour m'assurer que lorsque cet utilisateur se connecte au FTP, il n'a accès qu'à ce répertoire s'il vous plaît?

63voto

ggutenberg Points 2282

Réponse complète qui a résolu ma question pour tous les autres qui ont besoin d'une explication étape par étape...

Installez vsftpd en suivant ce guide.

  • Créez un utilisateur avec useradd [nom_utilisateur].
  • Créez le mot de passe de l'utilisateur avec passwd [nom_utilisateur]. (Vous serez invité à spécifier le mot de passe).
  • Créez le répertoire FTP dans /var/ftp puis associez-le au répertoire 'home' que vous souhaitez spécifier pour cet utilisateur avec mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Changez le répertoire home de l'utilisateur avec usermod -d /var/ftp/custom_name/ nom_utilisateur

    Dans /etc/vsftpd/vsftpd.conf, assurez-vous que tous les éléments suivants sont définis :-

    • chroot_local_user=YES
    • chroot_list_enable=YES
    • chroot_list_file=/etc/vsftpd.chroot_list

Listez uniquement les utilisateurs dans le fichier vsftpd.chroot_list si vous souhaitez qu'ils aient un accès complet à n'importe quel endroit sur le serveur. En ne les listant pas dans ce fichier, vous dites de restreindre tous les utilisateurs vsftpd à leur répertoire home spécifié.

En d'autres termes (pour référence) :-

  1. signifie que par défaut, TOUS les utilisateurs sont chrootés sauf les utilisateurs du fichier...
    • chroot_local_user=YES
    • chroot_list_enable=YES
  2. signifie que par défaut, SEULS les utilisateurs du fichier sont chrootés...
    • chroot_local_user=NO
    • chroot_list_enable=YES

14voto

mvinayakam Points 101

Pour moi, cela n'a pas fonctionné même après ce qui précède. Il y avait déjà un local_root défini sur un répertoire, et quoi que je fasse, le répertoire de l'utilisateur n'était pas en prison.

chroot_local_user=OUI

Et la procédure suivante

  1. vi /etc/vsftpd.conf
  2. Ajoutez la ligne 'user_config_dir=/etc/vsftpd_user_conf' (sans guillemets)
  3. mkdir /etc/vsftpd_user_conf;
  4. cd /etc/vsftpd_user_conf
  5. vi nom_utilisateur;
  6. Entrez la ligne 'local_root=/srv/ftp/nom_utilisateur'

Juste mes deux cents si quelqu'un d'autre a rencontré le même problème.

-1voto

Nico Vink Points 1

Le chrooting mentionné dans les réponses précédentes n'a pas fonctionné sur mon serveur ubuntu 18.04. J'ai finalement réussi en utilisant cette référence : https://passingcuriosity.com/2014/openssh-restrict-to-sftp-chroot/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X