Restringir usuário virtual VSFTPD ao respectivo diretório

1

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.

    
por 0_0 05.04.2014 / 12:02

1 resposta

1

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

    
por 05.04.2014 / 22:48