Proftpd 针对特定 ldap 组使用不同的 chroot

Proftpd 针对特定 ldap 组使用不同的 chroot

我正在使用 LDAP 服务器对 ProFTPD (使用mod_sftp) 实例进行身份验证。我想要进行以下设置:

将所有用户的 chroot 设置为/home/ftp。(这有效)。

现在我想将特定的 LDAP 组 chroot 到 下的其他文件夹/home/ftp。例如,LDAP 组“external”中的用户只能看到 ,/home/ftp/external而不在该组中的用户应该看到/home/ftp

所有上传的文件应该属于同一个 Linux 用户。

ldap.conf的是

<IfModule mod_ldap.c>
LDAPServer ldap://localhost:389/??sub

LDAPDefaultUID 2004
LDAPDefaultGID 2004
LDAPForceDefaultGID on
LDAPForceDefaultUID on

LDAPGenerateHomedir on
LDAPGenerateHomedirPrefix /home/ftp
LDAPGenerateHomedirPrefixNoUsername on

CreateHome off

LDAPBindDN "cn=admin,dc=example,dc=com" password
LDAPUsers ou=Users,DC=example,DC=com (uid=%u)
</IfModule>

在我的proftpd.conf使用中:

DefaultRoot         /home/ftp

我实际上不知道如何在这里进行或如何构建它...我可能能够稍微改变设置,也许创建少量的Linux用户或Linux组,但我不能更改LDAP服务器(它是一个我无法访问的Active Directory),所以最好一切都可以在ProFTPD中配置。

但是,如果可以在 AD 中设置目录结构(也许使用主目录?),那就更好了,这样我就不必为每个“特殊”组更改 ProFTPD 配置。

如有任何建议我将不胜感激:)

谢谢!

答案1

ProFTPDDefaultRoot指令可以采用可选的群体表达,表示是否将应用于DefaultRoot该用户(基于其组成员身份)。

例如,您可以使用:

DefaultRoot /home/ftp/external external
DefaultRoot /home/ftp

第一条DefaultRoot命令是将用户 chroot 到/home/ftp/external 如果他们是“external”组的成员。否则,不执行任何操作。第二条/最后一条DefaultRoot是“catch all”规则,用于将所有用户 chroot 到/home/ftp。按照配置文件中定义的顺序,找到的第一个匹配DefaultRoot指令获胜。

请注意,要让用户的组成员身份也由提供mod_ldap,您可能还需要使用LDAPGroups您的配置中的指令。

希望这可以帮助!

相关内容