我在 Ubuntu 14.04 (LTS) 服务器上使用 chroot 正确设置 VSFTPD 时遇到问题。无论我怎么尝试,我都可以自由浏览服务器。
这是我的/etc/vsftpd.conf
文件(删除了注释部分)
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
# CHROOT'ING
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
ssl_enable=Yes
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
该文件/etc/vsftpd.chroot_list
仅包含用户ftpuser
,目的是允许他浏览整个服务器。
为了测试目的,我创建了用户“user1”。当我
sftp user1@ftp-server
我登录到它的 /home/user1。但是,我仍然可以浏览整个服务器而不会受到任何限制。
我究竟做错了什么?
编辑 vsftpd 版本:3.0.2
更新
问题似乎与 chroot 完全无关。实际上,它在 FTP 协议下工作得很好。假设 SSH 服务器拦截端口 22 上的传入连接,因此不会将其分派到 vsftpd。这只是猜测。
答案1
除 chroot 指令外,还可以尝试以下选项:
user_sub_token=$USER
local_root=/home/$USER