我知道DefaultRoot ~
您可以使用该设置将用户限制在他们的主目录中,但我需要对其进行自定义。
ldap
当使用 proftpd 进行身份验证时,我通过获取用户的主目录auth-pam
。我无法控制主目录路径,但我需要它们位于我的glusterfs
fusemount上/mnt/glusterfs
。
我希望的是,如果我得到一个用户的家,/some/directory
proftpd 会把他们关进/mnt/glusterfs/some/directory
所以基本上我想要类似的东西DefaultRoot /base/path/~
如果你们(或女士)能想到任何解决方案,无论是修改代码还是任何创造性的解决方案,我都会很高兴听到。
提前致谢
答案1
如果你的用户的正常主目录包含用户名,例如用户“foo”的“/home/foo”,那么你可能可以使用这样的东西:
DefaultRoot /mnt/glusterfs/home/%u
该%u
变量将被解析为经过验证的用户名。
另一种更复杂的方法是使用mod_rewrite
模块和RewriteHome
指令;RewriteHome
指令文档包含正则表达式/替换可能是什么样子的示例。并且RewriteHome
功能适用不管主目录的来源,无论是 LDAP、系统功能,ETC。
希望这可以帮助!
答案2
您可以使用以下指令为所有 ftp 用户创建基本路径。这将限制用户只能访问此路径
LDAPGenerateHomedir on
LDAPForceGeneratedHomedir on
LDAPGenerateHomedirPrefix /mnt/glusterfs/some/directory/