我正在使用Ubuntu 13.10
,vsftpd
并尝试将 FTP 用户限制在其各自的目录中。
为此,我使用以下
我的 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
我pam.d/vsftpd
为 FTP 配置了虚拟用户,如下所示:
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
该设置用于运行简单的 PHP 网站,且上述设置运行良好,连接后我只能查看我的目录。
问题是当我有如下文件时:
<?php
exec('cat /var/www/SOME_OTHER_USER_FILE', $output);
print_r($output);
它会打印用户目录之外的文件内容。我该如何避免这种情况?
注意:该目录的权限如下:
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
如何避免用户浏览指定目录之外的内容?我尝试过寻找,但似乎找不到任何解决方案。
答案1
这不是 ftp 问题,而是 php 问题,请尝试在虚拟主机中使用
php_value open_basedir "/dir_of_your_virtualhost
在此你 php 只能在该目录中工作