
在 Debian Wheezy 64 位元上,我為客戶建立一個新使用者以將檔案放入目錄中。建立使用者後,我透過替換/bin/bash
為/bin/false
in來取消他的互動式登入/etc/passwd
。然後我將他加入/etc/ftpchroot
,以便他的會話將被 chroot 到他的主目錄。
但是,一旦我將用戶添加到/etc/ftpchroot
,當用戶登入時,他就看不到任何文件。用戶被chrooted,無法向上遍歷。他可以上傳文件,這些文件儲存在正確的目錄中,並具有 640 權限和 thatuser:thatusersgroup 所有權。
到目前為止我的想法:
/etc/ftpchroot
顯然是在做某事,並且在做,應該做的事情。- 在該電腦上建立的任何使用者都有此問題(與其他新使用者嘗試了兩次)
- 它不依賴目錄。改變他的主目錄並chroot到那裡顯示了同樣的問題。
這對我來說很奇怪,因為我以前做過很多次,但從未遇到過這種情況。遺憾的是,由於問題描述有問題,因此很難透過谷歌搜尋找到答案。
編輯1:我現在看到的東西。在 ftpchroot 下登入時,登入成功完成後不會顯示任何訊息。但/etc/motd
完成身份驗證後,顯示「login without ftpchroot」 。
編輯2:我透過安裝inetutils-ftpd
.它帶來了 PAM 身份驗證,配置後,它可以登入同一用戶而不會出現上述問題,並且他可以毫無問題地上傳和查看他的文件。
答案1
當您使用 chroot 時,您想要在 chroot 中使用的任何二進位檔案都必須存在於該 chroot 中。對於 ftpchroot,這通常意味著 ftpd 需要ls
在其自己的二進位檔案中具有功能,而不是依賴/bin/ls
系統的功能,否則每個使用者都必須擁有自己的$HOME/bin/ls
.
因此,解決方案是使用內建的 ftp 守護程式ls
(或使用 --ls-included 重新編譯它,或任何適合此特定 ftp 守護程式的選項)。