我有一个名为“ftp3”的用户,属于组“ftpusers-temp”。
该用户的家是 home/FTP-shared/temp
在 proftpd.conf 中我有以下两个指令:
DefaultRoot /home/FTP-shared
DefaultRoot ~ ftpusers-temp
我原本期望用户 ftp3 只能看到“temp”目录;但实际情况是,登录时默认选择“temp”目录,但用户可以返回并访问 ftp 服务器的根目录。
用户“ftp3”是否应该被关在“/home/FTP-shared/temp”中,并且无法访问“/home/FTP-shared”?
答案1
该DefaultRoot
行需要位于配置文件的末尾。
答案2
我认为问题可能是您指定了多个 DefaultRoot。正如 ProFTPd 文档所述解释:
如果两个 DefaultRoot 指令适用于同一个用户,ProFTPD 将任意选择一个(基于配置文件的解析方式)
您可以尝试注释掉第一个 DefaultRoot 指令,看看是否有助于解决问题。
答案3
我认为,对于你的情况,最好的选择是将用户囚禁在他们的目录中。你可以使用鲜为人知的%u
变量。文档海域:
在处理 FTP 会话期间,它将被登录用户的名称替换。
答案4
编辑
这是将用户囚禁在其自己的主目录中的一种方法。
- 这是 ProFTPd 中的标准功能
- 打开 /etc/proftpd/proftpd.conf
- 取消注释#DefaultRoot~
- 用 DefaultRoot /home/someuser someuser 替换
(让我们快速解释一下上面这一行。DefaultRoot 是 proftpd 用来启用 jail 功能的参数。someuser 是被 chroot 的所有用户的主要组(默认情况下,这与用户名相同)。/home/someuser 是用户将被监禁的目录。)
- 然后执行“/etc/init.d/proftpd restart”