我已经设置了 VSFTPD,因此当用户连接时,它将搜索user_config_dir
该连接的用户并设置 chroot 来宾会话(因为服务器上有多个属于多个用户的 FTP 帐户)。这适用于没有特殊字符的用户名。为了避免用户名冲突,我为每个用户名设置了一个后缀“@domain.tld” - 但是,user_config_dir
当用户名称中有 @ 符号时,自定义规则不会加载。在 VSFTPD 中有没有办法解决这个问题 - 或者需要切换设置?
vsftpd 配置文件
listen=YES
anonymous_enable=NO
local_enable=YES
guest_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
chroot_local_users=YES
pam_service_name=scftp
user_config_dir=/etc/vsftpd/virtual
pam.d/scftp
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
vitrtual/用户名不带特殊字符
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
local_root=/home/marco
chroot_local_user=YES
dirlist_enable=YES
download_enable=YES
guest_username=marco
虚拟的/[电子邮件保护]
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_upload_enable=YES
local_root=/home/marco
chroot_local_user=YES
dirlist_enable=YES
download_enable=YES
guest_username=marco
它实际上似乎无法将 FTP 用户[email protected]
与正确的虚拟文件匹配 - 但usernamewithoutspecialchars
工作正常。
答案1
Linux 文件系统可以非常顺利地管理目录名称中的 @,因此您看到的问题最有可能出在 vsftpd 上。您是否尝试过使用user.domain.tld
in 代替[email protected]
?
答案2
您应该尝试使用 SQL 或 RADIUS 后端进行身份验证登录,并且用户名应作为电子邮件存储在 sql db 中。这可行,我已经测试过了。