是否可以设置 vsftpd 来根据每个虚拟用户配置任意 chroot

是否可以设置 vsftpd 来根据每个虚拟用户配置任意 chroot

理想情况下,我希望 proftpds 能够做到这一点

DefaultRoot /var/www/whatever/userone/ user1
DefaultRoot /home/directory/whatever/ user2

对于虚拟用户来说,这一点很重要。

答案1

是的,这是可能的,请参阅我的帖子:

vsftpd-local_root=/var/www/sites/$USER 未被解释?

您需要使用每个用户的配置文件来为它们指定唯一的 chroot 位置。在您的例子中,每个用户的配置“local_root”将根据需要在 /var/www/sites/ 之外改变值。

答案2

使用 PAM 可以非常轻松地完成此操作。

如果您的 disto 没有附带 PAM,那么您需要获取一份副本,因为 vsftpd 使用 PAM 来对虚拟用户进行身份验证。

已经有 pam_pwdfile 的 debian 包可用,或者,如果你的 Linux 副本没有附带它,请下载并编译它:

apt-get install libpam-pwdfile

首先,为第一个用户创建密码文件:

htpasswd -c /etc/vsftpd/passwd user1

进而:

htpasswd /etc/vsftpd/passwd user2

接下来需要编辑 vsftpd 配置文件 /etc/vsftpd.conf

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
user_sub_token=$USER
local_root=/var/www/sites/$USER
chroot_local_user=YES
hide_ids=YES

最后,您需要配置 PAM 以使用密码文件,因此编辑 /etc/pam.d/vsftpd

# Customized login using htpasswd file
auth    required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so

不要忘记重新启动 vsftpd,就这样!

相关内容