在沒有 chroot 的情況下實現 ProFTPd 伺服器
我可以在不使用
chroot
監獄的情況下使用 ProFTPd(從而防止訪問 FTP 根目錄之外的任何內容)嗎?我需要在我的 FTP 源中包含指向我的 FTP 服務根目錄之外的位置的符號連結。我在 ProFTPd 上閱讀的所有文件和討論都討論瞭如何使用 chroot 功能(甚至在 StackExchange 中),但我想知道是否可以繞過使用它並使用不同的方法來服務我的 FTP 根。由於符號連結必須保留為符號連結,因此掛載目錄以繞過 chroot 限制(解決問題的聰明“解決方案”)不起作用。
ProFTPD 具有用於此目的的mod_vroot模組。您可以自己將此模組編譯到 ProFTPD 中,或者如果您的儲存庫有它(
apt-get install proftpd-mod-vroot
對於某些 Debian 儲存庫)則安裝它。mod_vroot允許使用者配置“虛擬 chroot”,設置DefaultRoot指令(會話的初始/根目錄;ProFTPD 會在沒有mod_vroot的情況下 chroot 到該目錄),但允許符號連結指向DefaultRoot路徑之外。mod_vroot 還支持VRootServerRoot指令,ProFTPD 將對其執行真正的 chroot,這意味著符號連結可以指向DefaultRoot之外,但必須指向 VRootServerRoot路徑內的位置。
範例配置:
<IfModule mod_vroot.c> VRootEngine on VRootServerRoot /usr/share/ # Symlinks can only point to location within /usr/share/ VRootOptions allowSymlinks DefaultRoot /usr/share/ftproot/ </IfModule>
問題是 FTP 是在網際網路最早的史前時期定義的,因此沒有任何安全規定(純文字密碼,……)。這就是為什麼 FTP 伺服器通常只用於匿名登錄的原因,因為它對 Internet 是開放的並且具有豐富的命令集(以及許多非常令人驚訝的功能,這是為了在具有非常奇怪的架構的機器之間傳輸文件而創建的,不同字元表示和奇怪的作業系統)。出於理智,一個人執行這些野獸被箝制。
是否可以選擇使用 scp(1) 之類的東西?改用網路伺服器(甚至應該更有效)?
為什麼符號連結必須是符號連結?