Debain FTP 服务器软件,哪一个支持我的设置?

Debain FTP 服务器软件,哪一个支持我的设置?

我正在寻找一些适用于 Debain 6.0 Squeeze 的 FTP 服务器软件,可以支持以下功能:

  • 来自 MySQL 的用户名/密码。
  • 将每个用户登录分离到其自己的目录中。
  • 在用户目录中,我需要能够设置特定的子目录,用户可以对这些子目录拥有以下任意权限组合:
    • 列出文件
    • 读取文件
    • 写入文件
    • 删除/覆盖文件
  • 此外,当用户上传文件时,我需要能够设置文件的 Linux 权限标志/所有权
  • 最好在安全(SFTP)和非安全模式下运行

有人能推荐一些可以完成大部分(如果不是全部)功能的软件吗?

答案1

大部分内容都非常简单。pure-ftpd-mysqlvsftpd+libpam-mysql都可以使用(经过足够的配置)MySQL 表来表示“虚拟”用户,将其 chroot 到自己的小目录中,并配置传入文件的umask位。 两者都可以使用 SSL(FTPS),并且可以强制客户端使用 SSL 或允许不安全和安全的登录。

权限需要花费一些功夫。显而易见的解决方案是使用 unix 文件系统权限:

  • 目录上的“x”位允许用户“进入”目录
  • 目录上的“r”位允许用户列出目录
  • 目录上的“w”位允许用户创建或删除文件和子目录。
  • ....除非设置了粘性“t”位,在这种情况下他们不能删除别人拥有的文件。
  • 文件的“r”位允许用户读取文件
  • 文件的“w”位允许用户写入文件

根据您的要求,存在两个潜在问题。

较小的问题是“写入”和“覆盖”之间的区别。对文件具有写权限的人可以删除文件中的所有数据(截断它)并用完全不同的数据填充文件。我不确定 FTP 协议是否允许这样做(也许从 0 的偏移量恢复?)。对文件没有写权限但对目录有写权限的人可以删除该文件并创建具有相同文件名的新文件。

更大的问题是创建和删除文件是一个单一的标志。如果您需要将用户无法删除的文件与他们可以删除的文件放在同一个目录中,最简单的解决方法是创建两个用户:一个ftpuser用户,您的所有虚拟用户都将映射到该用户,另一个ftpnodel用户将拥有您不希望他们删除但无人以该用户身份登录的所有文件。然后,您将所有目录(chown不可删除的文件)的粘性位设置为ftpnodel

使用此解决方案,您可以使用“用户”rwx 位来控制对文件和目录的正常访问,并使用“世界”(又名“其他”)rwx 位来控制对 ftpnodel 文件的访问。

相关内容