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 procédé comme 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 un accès UNIQUEMENT à l'utilisateur /var/www/mydomain.com
. J'ai constaté que l'utilisateur se connectait correctement dans le bon dossier, mais l'utilisateur pouvait ensuite revenir en arrière à d'autres répertoires. Je veux que l'utilisateur reste dans le dossier spécifique et ne puisse pas "parcourir" .
Des idées?
J'ai trouvé différents articles sur le chrootage, mais je n'ai tout simplement pas imaginé l'utiliser dans les étapes décrites ci-dessus.
Réponses:
C'est assez simple.
Vous devez ajouter l'option suivante sur le fichier vsftpd.conf
La documentation à l'intérieur du fichier de configuration est explicite:
Cela signifie que l’utilisateur aura simplement accès au dossier que vous avez configuré en tant que HOME de l’utilisateur. En bas, j’ai un exemple d’entrée de mot de passe utilisateur:
Définissez le répertoire de base de l'utilisateur avec la commande suivante
Remarque: Dans mon exemple, cet utilisateur est également un utilisateur valide pour certaines tâches planifiées sous Linux. Si vous ne possédez pas ce besoin, s'il vous plaît changer le shell de l'utilisateur à la
/sbin/nologin
place debash
.la source
/etc/passwd
fichier, qui représente un utilisateur appelé upload_ftp, 1001: 1001 est son ID utilisateur et son identifiant de groupe, / var / www / sites est le répertoire de base de l’utilisateur (et le paramètre à partir duquel vsftpd lit) et / bin / bash, le shell. Probablement ce qui manque sur votre cas est un répertoire à l'utilisateur, et il pourrait être résolu avec la commande suivante:usermod -d /var/www/mydomain.com <username>
. Cheers :)Après avoir changé votre configuration pour inclure
chroot_local_user=YES
Vous pouvez modifier le shell de l'utilisateur
/usr/sbin/nologin
afin que, si le mot de passe fuit, vous réduisez certains risques (définissez également le répertoire de base). Le shell doit également figurer dans la liste/etc/shells
sinon l’authentification échouera.https://security.appspot.com/vsftpd/FAQ.txt
la source
Voici les étapes à suivre pour configurer un utilisateur et lui permettre d’accéder uniquement via FTP (c’est-à-dire sans SSH) et de limiter également l’accès à un répertoire spécifique (répertoire 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
Editer le
shells
fichier:vi /etc/shells
et ajouter/dev/null
à la finModifier l'
newusername
entrée dans lepasswd
fichier:vi /etc/passwd
à ajouter/./
avant lenewusername
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:
Editer le
/etc/proftpd/proftpd.conf
fichier et décommenter la ligneDefaultRoot ~
la source
Définissez les autorisations du dossier racine sur 711 avec votre compte root.
la source
Exécutez cette commande:
la source