web-dev-qa-db-fra.com

Comment créer un utilisateur FTP avec un accès / dir / spécifique uniquement sur une installation Centos / linux

Je suis donc sur une installation VPS - CentOS Linux. J'ai vsFTPd sur le serveur. J'ai actuellement un accès SFTP au serveur via mon utilisateur root, mais j'essaie maintenant de créer un nouvel utilisateur avec un accès FTP à un répertoire spécifique uniquement sur le serveur, j'ai fait ce qui suit:

1. mkdir /var/www/mydomain.com
2. mkdir /var/www/mydomain.com/html
3. useradd <-username>
4. passwd <-username>
5. chown –R <-username> /var/www/mydomain.com
5. groupadd <-groupname>
6. gpasswd -a <-username> <-groupname>
7. chgrp -R <-groupname> /var/www/mydomain.com
8. chmod -R g+rw /var/www/mydomain.com

Ce que j'ai du mal à faire, c'est de créer l'utilisateur auquel avoir accès UNIQUEMENT/var/www/mydomain.com - J'ai observé que l'utilisateur se connecte correctement dans le bon dossier, mais l'utilisateur peut ensuite parcourir "en arrière" vers d'autres répertoires. Je veux que l'utilisateur reste dans le dossier spécifique et ne puisse pas "parcourir" en arrière.

Des idées?

J'ai trouvé différents articles sur le chrootage, mais je ne l'ai tout simplement pas compris pour l'utiliser dans les étapes ci-dessus.

45
user1231561

C'est assez simple.

Vous devez ajouter l'option suivante sur le fichier vsftpd.conf

chroot_local_user=YES

La documentation à l'intérieur du fichier de configuration est explicite:

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().

Cela signifie que l'utilisateur n'aura accès qu'au dossier que vous avez configuré comme ACCUEIL de l'utilisateur. Ci-dessous, j'ai un exemple d'entrée de mot de passe utilisateur:

upload_ftp:x:1001:1001::/var/www/sites/:/bin/bash

Définissez le répertoire personnel de l'utilisateur avec la commande suivante

usermod -d /var/www/my.domain.example/ exampleuser

Remarque: Dans mon exemple, cet utilisateur est également un utilisateur valide pour certaines tâches planifiées sous Linux. Si vous n'avez pas ce besoin, veuillez changer le Shell de l'utilisateur en /sbin/nologin au lieu de bash.

39
user34720

Après avoir modifié votre configuration pour inclure chroot_local_user=YES

Vous pouvez changer le shell de l'utilisateur en /usr/sbin/nologin de sorte que si le mot de passe fuit, vous aurez atténué certains risques (définissez également le répertoire personnel). Le shell doit être répertorié dans /etc/shells également ou l'authentification échouera.

usermod -d /var/www/my.domain.example -s/usr/sbin/nologin exampleuser

-d, --home HOME_DIR Le nouveau répertoire de connexion de l'utilisateur. Si l'option -m est donnée, le contenu du répertoire personnel actuel sera déplacé vers le nouveau répertoire personnel, qui est créé s'il n'existe pas déjà.

-s, --Shell SHELL Nom du nouveau shell de connexion de l'utilisateur. Si ce champ est vide, le système sélectionne le shell de connexion par défaut.

https://security.appspot.com/vsftpd/FAQ.txt

6
Shapeshifter

Voici les étapes pour configurer un utilisateur et autoriser l'accès à l'utilisateur uniquement via FTP (c'est-à-dire sans SSH) et également limiter l'accès à un répertoire spécifique (home de l'utilisateur) sur proftpd :

  1. Ajouter un nouvel utilisateur: adduser newusername

  2. Définir le mot de passe: passwd newusername

  3. Modifiez le répertoire de base de l'utilisateur par défaut dans un nouveau dossier:

    usermod -d /target/directory username

  4. Modifier le fichier shells: vi /etc/shells et ajouter /dev/null à la fin

  5. Modifier l'entrée newusername dans le fichier passwd: vi /etc/passwd ajouter /./ avant le newusername pour que l'entrée ressemble à ceci:

    newusername:x:502:502::/home/ftp/./newusernamehomedirectory/:/dev/null

    Détails pour les étapes 4 et 5 ici:

  6. Éditer /etc/proftpd/proftpd.conf fichier et décommenter la ligne DefaultRoot ~

4
pTeJa