轻松设置 vsftpd
如果我运行此配置:
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
然后我收到一条错误消息:
500 OOPS:vsftpd:拒绝在 chroot() 内以可写 root 身份运行
allow_writeable_chroot=YES
但是,如果我按照建议添加这里,那么就无法连接:
连接尝试失败,显示“ECONNREFUSED - 服务器拒绝连接”
但是,如果我删除刚刚添加的那行并
sudo chmod a-w
在用户主目录上执行,他们现在可以连接,但该服务毫无意义,因为他们无法上传任何内容。
有没有办法限制用户只能访问他们的主目录,同时又能连接并写入他们的主目录?关闭chroot_local_user
是不可能的,因为他们可以浏览所有其他用户的目录。
答案1
您正在寻找allow_writeable_chroot
配置选项,但该选项在 12.04 版的 vsftpd 中不存在。请参阅错误 1065714进行类似的询问以及为什么我们不能在 12.04 中进行此操作的详细信息。
关闭 chroot_local_user 不是一个选择,因为他们可以浏览所有其他用户的目录。
您是否考虑过默认切换到私有用户目录?如果您不希望用户浏览其他用户的目录,那么实现此目的的更安全方法是使用系统内置的权限机制,而不是通过每个单独的服务。请参阅服务器指南的用户管理部分了解具体操作方法。关闭chroot_local_user
此选项对您来说可行吗?
答案2
详情请参阅以下内容关联。
您可以选择以下三种方式之一:1. 在配置文件中定义选项 local_root=。必须通过 /home 或其他路径指向包含用户文件夹的目录。这样 vsftpd 就可以 chroot 到 /home 目录。
在配置文件中定义选项 passwd_chroot_enable=yes,并将 /etc/passwd 文件中的用户主目录从“/home/user”更改为“/home/./user”(不带引号)。这样,vsftpd chroot 到 /home 目录。
下载 vsftpd-ext 源,编译并覆盖现有的 vsftpd 二进制文件或从存储库中获取并添加到配置文件选项 allow_writeable_root=yes。