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