將多個目錄共享給 ftp 使用者
我有多個目錄分佈在多個 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/app1
ftp 並瀏覽目錄時,我看到一個500 Failed to change directory
.有人對這個問題有一個優雅的解決方案嗎?也許還有另一個支持“虛擬目錄”的 ftp 伺服器?
您在使用符號連結時遇到了什麼問題?我已經做過很多次了。
- 使用 ACL 授予他們權限(最好是基於組的權限)
- 在主目錄中創建 Sym 連結
您需要編寫一些腳本才能自動為人們創建符號連結,但這應該不會太難。