web-dev-qa-db-fra.com

Limitez l'accès FTP uniquement à / var / www avec vsftpd

J'utilise vsftpd comme serveur ftp sur mon linux (rasbian), je me connecte à la machine en tant qu'utilisateur root.

Je voudrais être toujours verrouillé à utiliser uniquement/var/www, comment puis-je configurer vsftpd conf pour y parvenir?

41
Badr Hari

Méthode 1: modification du répertoire de base de l'utilisateur

Assurez-vous que la ligne suivante existe

chroot_local_user=YES

Définissez le répertoire HOME de l'utilisateur sur /var/www/, si vous souhaitez modifier pour un utilisateur existant, vous pouvez utiliser:

usermod --home /var/www/ username

puis définissez l'autorisation requise sur /var/www/

Méthode 2: utilisez user_sub_token

Si vous ne souhaitez pas modifier le répertoire personnel de l'utilisateur, vous pouvez utiliser:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

À propos user_sub_token:

Générez automatiquement un répertoire personnel pour chaque utilisateur virtuel, sur la base d'un modèle. Par exemple, si le répertoire personnel de l'utilisateur réel spécifié via guest_username est/ftphome/$ USER et que user_sub_token est défini sur $ USER, alors lorsque le test de l'utilisateur virtuel se connecte, il se retrouve (généralement chroot () 'ed) dans le répertoire/ftphome/test. Cette option prend également effet si local_root contient user_sub_token.

Créez un répertoire et configurez les autorisations:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Une fois redémarré vsftpd et testez votre configuration.

Exemple de résultat de réussite:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.
65
Rahul Patil

Tu peux le faire:

usermod --home /var/www/ username
4
Zeev Cohen

J'ai utilisé la suggestion de Rahul Patil ci-dessus:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Mais je ne comprenais pas pourquoi je ne pouvais me connecter qu'avec un seul utilisateur. Ensuite, j'ai constaté que nous ne pouvions pas chrooter vers un répertoire racine (dans ce cas, /home/$USER/www-data) disposant d'un accès en écriture. Je supprime donc l'accès en écriture avec:

# chmod a-w /home/$USER/www-data

REMARQUE: changer $USER avec votre utilisateur.

2
Rizal Rahman

Vérifiez les options chroot dans vsftpd.conf et créez un utilisateur distinct pour lui dont homedir est défini sur /var/www.

1
jirib