我尝试通过 pam.d 使用 MySQL 数据库为登录用户设置 vsftpd
我有这个配置/etc/pam.d/vsftpd
:
# Standard behaviour for ftpd(8).
auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed
# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.
# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth required pam_shells.so
auth required pam_mysql.so user=vsftpd passwd=ftpdpass-X43544 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=vsftpd passwd=ftpdpass-X43544 host=localhost db=vsftpd table=accounts usercolumn=username passwdcolumn=pass crypt=2
我尝试使用query
参数设置自定义 SQL 查询,并查看 MySQL 日志中发生了什么,但我什么也没看到。好像 SQL 查询没有运行。
我crypt=0
也尝试了选项并将密码以纯文本形式保存在数据库中,但没有任何变化。
vsftpd 说:
pam_unix(vsftpd:auth): check pass; user unknown
pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=myuser rhost=myipaddress
虽然 MySQL 改变了PASSWORD()
内置函数的行为,但我无法为我的用户创建有效的密码。但我完全不明白为什么登录时没有记录任何 SQL 查询。
知道我错过了什么吗?