我已使用“text_userdb_names=YES”选项配置了 vsftpd,该选项应将用户名和组名放入列表中。服务器配置了 nscd 和 ldap。用户被 chroot 到“一般根”目录中,但这不会影响结果(不 chroot 仍然失败)。
问题:明显超时和无法成功解析“组名”。'ls' 输出包含正确的用户名,但显示的不是组名,而是一个数字。
答案1
新的 vsftpd 使用带有 CLONE_NEWNET 参数的 clone() 而不是 fork()。这会将访问文件的进程置于无法访问任何网络的单独网络环境中。nscd unix 套接字和 ldap 服务器均无法访问。如果您跟踪该进程,您将只会看到尝试访问服务器时出现错误:
解决方案:在 vsftpd.conf 中设置以下未记录的参数:
隔离网络=否
这将恢复 vsftpd 以使用 fork() 并且一切都正常运行。
附加说明:在 chroot 环境中,应使用 nscd(必须将 --bind /var/run/nscd 挂载到 /chroot/var/run/nscd 中)。这没有帮助。