如何将 ftp 用户“囚禁”在其主目录内(proftpd)?

如何将 ftp 用户“囚禁”在其主目录内(proftpd)?

我有一个名为“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”

相关内容