vsftpd:pam_userdb 权限被拒绝

vsftpd:pam_userdb 权限被拒绝

我一直在尝试在 Centos 6.6 上设置 VSFTPD 以允许虚拟用户。下面是我的vsftpd.conf,它被配置为仅允许虚拟用户进入/etc/vsftpd/vsftpd-virtual-user.db

listen=YES
local_umask=002
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd_virtual
guest_enable=YES
local_root=/var/sites
chroot_local_user=YES
hide_ids=YES
connect_from_port_20=YES
pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=10.175.9.23
pasv_min_port=1024
pasv_max_port=65535

我还设置了 vsftpd_virtual 模块,其中/etc/pam.d/vsftpd_virtual包含以下内容:

#%PAM-1.0
auth    required        pam_userdb.so   db=/etc/vsftpd/vsftpd-virtual-user
account required        pam_userdb.so   db=/etc/vsftpd/vsftpd-virtual-user
session required        pam_loginuid.so

当尝试登录到 localhost 上的 FTP 时,我收到来自 FTP 的 530 错误以及以下行/var/log/secure

vsftpd: pam_userdb(vsftpd_virtual:auth): user_lookup: could not open database `/etc/vsftpd/vsftpd-virtual-user': Permission denied

数据库文件的文件权限看起来不错,但我可能是错的:

Access: (0777/-rwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)

答案1

根据您的指示,配置未指向数据库文件:(/etc/vsftpd/vsftpd-virtual-user.db 您正在使用“ /etc/vsftpd/vsftpd-virtual-user

答案2

看来您的问题在于虚拟用户到真实用户的映射。在 vsftp 中,虚拟用户在某种程度上被视为访客用户 - 这就是您guest_enable=YES在配置中需要的原因。

一个建议是为此映射创建一个用户。就像是:

useradd -d /home/ftp virtual

echo guest_username=virtual >> /etc/vsftpd/vsftpd.conf

这会将虚拟用户映射到名为 virtual 的真实用户,并且它们将被 chroot 到 /home/ftp 目录。

作为旁注,/etc/vsftpd/vsftpd-virtual-user需要由 root 用户读取( chmod 600 )。

答案3

这似乎已经在评论中得到了回答塔列津

您可能会遇到 SELinux 阻止访问的情况。通过运行以下命令确认 SELinux 已参与:

ls -Z vsftpd-virtual-user.db 

要解决该问题,请运行:

restorecon -v vsftpd-virtual-user.db

相关内容