将 VSFTPD 虚拟用户限制到相应的目录

将 VSFTPD 虚拟用户限制到相应的目录

我正在使用Ubuntu 13.10vsftpd并尝试将 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 只能在该目录中工作

相关内容