Créer un nouvel utilisateur vsftpd et verrouiller (spécifier) ​​le répertoire home / login

31

J'ai besoin de donner périodiquement un accès temporaire et limité à divers répertoires sur un serveur Linux CentOS sur lequel vsftp est installé.

J'ai créé un utilisateur à l'aide de useradd [user_name]et leur ai donné un mot de passe à l'aide passwd [password].

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

Que dois-je faire d'autre spécifiquement 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?

zigojacko
la source
Désolé mais avez-vous déjà envisagé de vérifier vsftpd.conf?
jirib
Oui. J'ai. Il ne me dit pas comment demander à un utilisateur spécifique de se connecter à un répertoire spécifique ...?
zigojacko
1
Sûr? Option chroot_list_enable ... Ou vous voulez remplacer un répertoire différent de $ HOME?
jirib
1
Je veux savoir comment déclarer un répertoire personnel spécifique pour un utilisateur spécifique. J'ai activé chroot_list_enableet créé /etc/vsftpd/chroot_list. Je ne savais simplement pas quoi faire ensuite.
zigojacko
Ensuite, modifiez le homedir de l'utilisateur.
jirib

Réponses:

44

Réponse complète qui a résolu ma question pour toutes les autres qui recherchent une procédure pas à pas ...

Installez en vsftpdutilisant ceci comme guide .

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

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

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

Répertoriez uniquement les utilisateurs dans le vsftpd.chroot_listfichier si vous souhaitez qu'ils aient un accès complet à n'importe où sur le serveur. En ne les répertoriant pas dans ce fichier, vous dites restreindre tous les vsftpdutilisateurs à leur répertoire personnel 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 = OUI
    • chroot_list_enable = OUI
  2. signifie que par défaut, seuls les utilisateurs du fichier sont chrootés ...
    • chroot_local_user = NO
    • chroot_list_enable = OUI
zigojacko
la source
Pourquoi ne pas définir directement le répertoire personnel de cet utilisateur /var/www/vhosts/domain.com/? Y a-t-il un problème avec cela (comme tout risque potentiel)?
leemes
2
Je viens de découvrir que vsftp semble interdire d'accorder à un utilisateur ftp des autorisations d'écriture au niveau supérieur du chroot pour des raisons de sécurité (mais je ne suis pas sûr à 100%). Donc, cela pourrait être une raison pour avoir cette "indirection" afin d'accorder à l'utilisateur ftp un accès en écriture à un dossier spécifique tout en ne permettant pas d'afficher un dossier frère (ce qui serait le cas si vous définissez simplement son domicile d'un niveau, ce qui évite le problème mentionné). (voir ubuntuforums.org/… )
leemes
2
@zigojacko, votre utilisateur ne voit-il que son répertoire personnel attribué? Pour moi, cela définit l'utilisateur par défaut dans le répertoire attribué, mais ils peuvent toujours voir d'autres dossiers et peuvent fouiner jusqu'à la racine, bien qu'avec un accès en lecture uniquement.
GraehamF
1
Cette réponse, en combinaison avec unix.stackexchange.com/questions/208960/… était la réponse complète pour moi. J'ai fini par créer un utilisateur dans un groupe et j'ai limité l'accès du groupe au répertoire souhaité.
GraehamF
10

Pour moi, cela n'a pas fonctionné même après ce qui précède. Il y avait un local_root déjà défini dans un répertoire, et quoi que je fasse, le répertoire de l'utilisateur n'a pas été emprisonné. Enfin, il est travaillé après seulement changé

chroot_local_user = OUI

Et suivant la procédure

  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 'racine_locale = / srv / ftp / nom_utilisateur'

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

gnaanaa
la source
J'ai suivi cette procédure pour changer le répertoire racine de vsftpd, y compris les étapes supplémentaires de gnaanaa. Malheureusement, cela ne fonctionne pas encore. Filezilla rapporte 530 Login incorrect. L'utilisateur et le mot de passe sont conformes à la procédure ci-dessus (nom_utilisateur). J'ai créé un utilisateur de test ftp2 et défini son mot de passe. L'ouverture de session normale Filezilla utilise ce nom d'utilisateur et ce mot de passe. J'ai également défini le répertoire racine en lecture seule et créé un répertoire de niveau inférieur avec des autorisations d'écriture en fonction de ce message. J'utilise Ubuntu 16.04 si cela fait une différence.
tim11g
J'utilise Ubuntu 16.04 si cela fait une différence, @gnaanaa. J'ai aussi pensé qu'il était étrange qu'il n'y ait pas de répertoire ftp dans / var. J'ai donc dû créer / var / ftp, puis / var / ftp / nom_utilisateur. code<br/> Réponse: 220 (vsFTPd 3.0.3) <br/> Commande: USER ftp2 <br/> Réponse: 331 Veuillez spécifier le mot de passe. <br/> Commande: PASS ***** <br/> Réponse : 530 Connexion incorrecte. <br/> Erreur: Erreur critique: impossible de se connecter au serveur <br/>code
tim11g
Tout d'abord, regardez pourquoi vous ne pouvez pas vous connecter au serveur. Vous pouvez déboguer le problème avec l'emprisonnement uniquement après une connexion réussie. À votre santé.
gnaanaa
Vsftp utilise-t-il un utilisateur / mot de passe différent de celui des comptes sur la machine? J'ai découvert que les mots de passe smb devaient être définis séparément avec smbpasswd -a. Vsftpd fonctionne-t-il de la même manière?
tim11g
Non, c'est le compte utilisateur système. vérifiez cette réponse: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa