我正在使用 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
您的配置中的指令。
希望这可以帮助!