我正在尝试在一台没有 root 访问权限的机器上设置几个 vsftpd 实例。身份验证应通过带有 pam_listfile 的 PAM 进行,如下所示:
pam_listfile.so item=group sense=allow file=/path/filename onerr=fail
我可以要求管理员为我设置一个 PAM 服务并包含该行,但他不愿意为我的 6 个 vsftpd 实例创建 6 个 PAM 服务,而我确实需要为每个 vsftpd 服务器设置不同的 /path/filename。
有办法解决这个问题吗?我可以不使用绝对路径作为参数吗?
(我知道正确的解决方案是使用一个 vsftpd 实例并正确设置虚拟用户。但不幸的是,我必须使用我已有的资源,并且用户已经存在于 Active Directory 中,并使用另一个 PAM 服务对系统进行身份验证。)
答案1
嗯,不幸的是,答案是无法使用 vsftpd 来完成。
答案2
更好的答案可能是从 vsftpd 迁移到 proftpd,它可以支持虚拟用户的需求而无需 PAM 集成。在您的 /etc/proftpd.conf 中,您可以包含以下行:
AuthPAMAuthoritative off
AuthPam off
AuthUserFile /opt/etc/passwd.ftp
AuthGroupFile /opt/etc/group.ftp
group.ftp 文件只是“ftp”和“nobody”的标准组设置,而您的 passwd 文件将为所有条目分配相同的用户:组。您只需指定用户名、密码和登录目录(对于 shell 使用 /sbin/nologin)。如果您的管理员为您做好基础工作,并允许您拥有/编辑密码文件,则只需 5 分钟即可完成设置。
答案3
与使用文件相比,在 PAM 文件中指定组是否有帮助?这样,您可能不需要许多平面文件。(取决于您的意图。)