我希望虚拟用户使用已定义的本地用户。此本地用户是 apache 组的成员(对于 debian 用户,我在这里使用 www-datacentos7)和 ftp
useradd ftpuser -d /var/www -g apache -G ftp
usermod -s /sbin/nologin ftpuser
我从文件中更改/etc/vsftpd/vsftpd.conf
- guest_用户名=ftp
到
- guest_username=ftpuser
由于虚拟用户密码检查通过但本地用户密码检查未通过:
Mar 31 23:11:29 vps263033 vsftpd: pam_unix(vsftpd:auth): check pass; user unknown
Mar 31 23:11:29 vps263033 vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=xxx rhost=localhost
Mar 31 23:11:29 vps263033 vsftpd: pam_userdb(vsftpd:auth): user 'xxx' granted access
Mar 31 23:11:29 vps263033 vsftpd: pam_unix(vsftpd:account): could not identify user (from getpwnam(xxx))
为什么 pam_unix 会失败?
感谢您的帮助
============= 附加信息 ===============
/etc/pam.d/vsftpd 的完整内容
#%PAM-1.0
auth sufficient pam_unix.so
account sufficient pam_unix.so
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
session required pam_loginuid.so
/etc/vsftpd/vsftpd.conf 的完整内容
listen_port=21
ftpd_banner=Bienvenue !
pam_service_name=vsftpd
listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
userlist_file=/etc/vsftpd/user_list
userlist_enable=YES
userlist_deny=YES
write_enable=YES
anon_upload_enable=NO
anon_world_readable_only=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
guest_enable=YES
guest_username=ftpuser
chroot_local_user=YES
max_clients=50
max_per_ip=4
user_config_dir=/etc/vsftpd/vsftpd_user_conf
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
答案1
我终于找到了问题
我更改了 /etc/pam.d/vsftpd 的内容
#%PAM-1.0
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/login
我运行以下 2 个 selinux 命令:
setsebool -P ftp_home_dir=on
setsebool -P ftpd_full_access=on