Linux

將多個目錄共享給 ftp 使用者

  • July 20, 2011

我有多個目錄分佈在多個 Ubuntu 10.04 伺服器的文件系統上。

要求是允許少數人通過 ftp 訪問其中一些目錄。

例如 joe 需要將文件 ftp 到 /apps/app1。alice 需要能夠 ftp 到 /apps/app2 和 /mnt/apps/app4(nfs 共享到另一台伺服器)

我真的很想保留 vsftpd chroot 以便這些使用者只能看到主目錄。

所有這些使用者都是 ldap 使用者。它們的主目錄是從中央伺服器自動掛載的。

因此,理想情況下,當 joe ftp 進入時,他應該會看到一個名為“app1”的目錄。當 alice ftps 進入時,她應該看到名為“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,它非常接近一個可行的解決方案。

為什麼 OPTION3 失敗:我能夠很好地掛載本地目錄。但是當我嘗試mount --bind <some mapped drive> /apps/app1ftp 並瀏覽目錄時,我看到一個500 Failed to change directory.

有人對這個問題有一個優雅的解決方案嗎?也許還有另一個支持“虛擬目錄”的 ftp 伺服器?

您在使用符號連結時遇到了什麼問題?我已經做過很多次了。

  1. 使用 ACL 授予他們權限(最好是基於組的權限)
  2. 在主目錄中創建 Sym 連結

您需要編寫一些腳本才能自動為人們創建符號連結,但這應該不會太難。

引用自:https://serverfault.com/questions/291917