我正在尝试使用虚拟用户配置 ProFTPd 以满足客户要求。目前,我正在本地进行测试,虚拟用户文件中只列出了我自己的测试用户(我拒绝考虑系统用户):
nicole:[secret redacted]:10001:10001::/srv/ftp/nicole:/bin/false
当尝试使用相同的用户名和密码连接时,我得到530 Login Incorrect
。生成的日志proftpd -nd10
不具参考价值:
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): mod_auth_file/1.0: using passwd file '...'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): retrieved UID 10001 for user 'nicole'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): no supplemental groups found for user 'nicole'
2024-01-15 19:02:12,618 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): ROOT PRIVS at mod_auth_pam.c:348
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): RELINQUISH PRIVS at mod_auth_pam.c:582
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): USER nicole (Login failed): Incorrect password
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_exec
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_shaper
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_wrap2
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_radius
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD_ERR command 'PASS (hidden)' to mod_delay
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_log
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_delay
2024-01-15 19:02:14,265 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD_ERR command 'PASS (hidden)' to mod_auth
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_exec
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_rewrite
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching PRE_CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching CMD command 'SYST' to mod_core
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching POST_CMD command 'SYST' to mod_exec
2024-01-15 19:02:14,266 108c14613dd6 proftpd[7] 108c14613dd6 (172.17.0.1[172.17.0.1]): dispatching LOG_CMD command 'SYST' to mod_log
RequireValidShell
已禁用,PAM 配置中的 shell 检查也是如此。这是在 Docker 容器中运行的,所以我没有任何 PAM 日志(如果我不使用系统用户,我不应该需要它们,对吗?文档和搜索结果对此不清楚)。
还有其他错误信息来源吗?我不认为Login Incorrect
我的真的错误,并且出现了其他问题,但是我大约十年没有认真使用过 FTP 守护进程了,而且我已经忘记了大多数故障排除步骤。
(我知道,在任何意义上配置像 FTP 这样全球弃用的协议都是一个坏主意™,我应该使用其他任何东西来代替,但我距离可以进行此类更改的任何位置至少有两度之隔,因此必须使用 FTP。)
答案1
问题仍然出在PAM上。
文档沉重假设您肯定希望在服务器中使用系统用户(无论您是否有虚拟用户),并坚持要求您启用 PAM,这让我相信这是身份验证的必要条件。问题是,PAM 身份验证是“全有或全无”的;这意味着如果您启用了它,您的虚拟用户将被忽略,如果他们不在系统用户数据库中,您将被拒绝访问,即使一切都符合要求。
如果您希望拒绝系统用户访问您的 FTP 服务器并拥有纯虚拟用户数据库,则必须将您的 AuthOrder 设置为如下:
AuthOrder mod_auth_file.c