向 ftp 用户共享多个目录

向 ftp 用户共享多个目录

我有多个目录分布在多个 Ubuntu 10.04 服务器的文件系统中。

要求是允许少数人通过 ftp 访问其中一些目录。

例如 joe 需要通过 ftp 将文件传输到 /apps/app1。alice 需要通过 ftp 将文件传输到 /apps/app2 和 /mnt/apps/app4(nfs 共享到另一台服务器)

我确实想保持 vsftpd chroot 以便这些用户除了主目录之外看不到任何东西。

所有这些用户都是 ldap 用户。他们的主目录由中央服务器自动挂载。

因此,理想情况下,当 joe ftp 登录时,他应该看到一个名为“app1”的目录。当 alice ftp 登录时,她应该看到名为“app2”和“app4”的目录。最终,我需要添加更多“虚拟”目录。例如,alice 可能需要在几周内访问 /apps/app5。我希望能够添加它,以便当她 ftp 登录时,她可以看到“app2”、“app4”和“app5”。

这看起来应该很容易,但我一直在思考如何让它发挥作用。

选项1

我尝试使用 fstab 和/或 autofs 在用户主目录下使用 --bind 挂载东西。这种方法还算管用。令人烦恼的是,当您使用 autofs 时,除非有人最近访问过这些目录,否则无法通过 ftp 看到它们。

选项 1 失败的原因:

原因与选项 3 相同

选项 2

我尝试过使用软链接,但同样,这似乎不起作用。我在 /mnt/apps/app1 创建了一个 nfs 挂载驱动器(使用 autofs)。然后我创建一个链接,如下所示 ln -s /mnt/apps/app1 /home/ldap/joe/app1。

选项2失败的原因:

当我以 joe 身份登录 ftp 时,我可以看到“app1”目录,但如果我尝试打开它,我会得到:550 无法打开文件。错误:严重文件传输错误。请注意,/home/ldap/joe 是一个自动安装的驱动器,它物理上位于 /apps/exports/home/joe 下的不同服务器上。我读过其他地方的文章,一旦用户被 chroot,他们就无法跟踪主目录之外的符号链接。

选项3

配置所有用户,使他们拥有相同的主目录,然后在公共主目录下挂载共享目录。如果您使用 autofs,则目录名称不会显示。如果我使用 fstab,它非常接近可行的解决方案。

选项 3 失败的原因:我能够正常挂载本地目录。但是当我尝试时mount --bind <some mapped drive> /apps/app1,当我通过 ftp 浏览目录时,我看到一个500 Failed to change directory

有人能为这个问题提供一个优雅的解决方案吗?也许有另一个支持“虚拟目录”的 ftp 服务器?

答案1

您在使用符号链接时遇到了什么问题?我遇到过很多次这个问题。

  1. 使用 ACL 授予他们权限(最好是基于组的权限)
  2. 在主目录中创建符号链接

您需要编写一些脚本才能自动为人们创建符号链接,但这并不太难。

相关内容