1 votes

Restreindre l'utilisateur virtuel VSFTPD au répertoire correspondant

J'utilise Ubuntu 13.10 mit vsftpd et en essayant de limiter un utilisateur FTP à son répertoire respectif.

Pour cela, j'utilise ce qui suit

Mon fichier vsftpd.conf :

local_enable=YES
write_enable=YES
local_umask=022
secure_chroot_dir=/var/run/vsftpd/empty
nopriv_user=vsftpd
virtual_use_local_privs=YES
user_sub_token=$USER
local_root=/var/www/sites/$USER
chroot_local_user=YES
hide_ids=YES
seccomp_sandbox=NO
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH

J'ai configuré pam.d/vsftpd Créez des utilisateurs virtuels pour FTP comme suit :

htpasswd -cd /etc/vsftpd/ftpd.passwd USERNAME
useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd

mkdir /var/www/sites/USERNAME
chmod -w /var/www/sites/USERNAME
mkdir /var/www/sites/USERNAME/www
chmod -R 755 /var/www/sites/USERNAME/www
chown -R vsftpd:nogroup /var/www/sites/USERNAME

L'installation est destinée à faire fonctionner des sites web PHP simples, et la configuration ci-dessus fonctionne bien, et lorsque je suis connecté, je ne peux voir que mon répertoire.

Le problème est que lorsque j'ai un fichier comme :

<?php
exec('cat /var/www/SOME_OTHER_USER_FILE', $output);
print_r($output);

Il affiche le contenu des fichiers qui se trouvent en dehors du répertoire de l'utilisateur. Comment éviter cela ?

Note : Les permissions du répertoire sont les suivantes :

drwxr-xr-x 2 vsftpd nogroup 4096 Apr  5 04:55 .
dr-xr-xr-x 3 root   root    4096 Mar 23 10:00 ..
-rw-r--r-- 1 vsftpd nogroup  113 Apr  5 04:44 index.php

Comment éviter qu'un utilisateur ne navigue en dehors du répertoire qui lui a été attribué ? J'ai essayé de chercher, mais je n'ai pas trouvé de solution.

1voto

c4f4t0r Points 5014

Ce n'est pas un problème ftp, mais un problème php, essayez d'utiliser dans votre virtualhost

php_value open_basedir "/dir_of_your_virtualhost

dans ce cas, php ne peut fonctionner que dans ce répertoire

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X