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.
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
.
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.
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 :
Ajouter un nouvel utilisateur: adduser newusername
Définir le mot de passe: passwd newusername
Modifiez le répertoire de base de l'utilisateur par défaut dans un nouveau dossier:
usermod -d /target/directory username
Modifier le fichier shells
: vi /etc/shells
et ajouter /dev/null
à la fin
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
Éditer /etc/proftpd/proftpd.conf
fichier et décommenter la ligne DefaultRoot ~