este não é um problema de ftp, mas um problema de php, tente usar em seu virtualhost
php_value open_basedir "/dir_of_your_virtualhost
neste você php só pode trabalhar nesse diretório
Estou usando Ubuntu 13.10
com vsftpd
e tentando limitar um usuário de FTP ao respectivo diretório.
Para isso, estou usando o seguinte
Meu 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
Eu configurei pam.d/vsftpd
para criar usuários virtuais para FTP da seguinte forma:
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
A configuração se para executar sites PHP simples, e a configuração acima funciona bem, e quando conectada eu posso ver apenas o meu diretório.
O problema é quando eu tenho um arquivo como:
<?php
exec('cat /var/www/SOME_OTHER_USER_FILE', $output);
print_r($output);
Imprime o conteúdo dos arquivos, que estão fora do diretório do usuário. Como posso evitar isso?
Nota: As permissões do diretório são as seguintes:
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
Como posso evitar que um usuário navegue fora do diretório atribuído? Tentei pesquisar, mas não consigo encontrar nenhuma solução.
este não é um problema de ftp, mas um problema de php, tente usar em seu virtualhost
php_value open_basedir "/dir_of_your_virtualhost
neste você php só pode trabalhar nesse diretório
Tags permissions php ftp