Chroot
帶有 chroot_local_user 的 vsftpd 需要客戶端證書
在設置我的 FTPS 伺服器時,我想啟用 chroot_local_user。禁用時一切正常。但是,如果我啟用此功能,WinSCP 將無法連接並聲稱我需要客戶端證書才能連接。Filezilla 徹底失敗。
如果我將 require_cert 顯式設置為 NO(即使它是預設設置),此問題仍然存在。
我該如何解決這個問題?
將使用者限制在其主文件夾中的替代解決方案也是可以接受的。
謝謝
WinSCP 錯誤消息可能是錯誤的(或僅僅是推測)。當我不久前嘗試設置 vsftpd 時,
chroot_local_user
我發現如果使用者在 chroot 目錄中具有寫入權限,vsftpd 將拒絕登錄(出於安全原因)。這在vsftpd 常見問題解答中有點隱藏:問)幫助!我收到錯誤消息“拒絕使用可寫根執行”。
A) vsftpd 可以防止危險的配置。此消息的原因通常是 ftp 主目錄的不可靠所有權。主目錄不應歸 ftp 使用者自己所有。它也不應該被 ftp 使用者寫入。解決此問題的一種方法是:
chown root ~ftp; chmod -w ~ftp
另一個原因可能是在未正確設置目錄所有權的情況下嘗試使用 chroot_local_user。
要對此進行調試,請添加
log_die=YES
到您的 vsftpd.conf。然後日誌將顯示如下內容:Nov 29 16:08:55 yourhost vsftpd[2866]: pam_userdb(vsftpd:auth): user 'testuser' granted access Nov 29 16:08:55 yourhost vsftpd[2872]: ERROR: vsftpd: refusing to run with writable root inside chroot()
這不是只讀訪問的問題,但如果您的使用者應該能夠上傳文件,您必須在相應使用者擁有的 chroot 目錄中創建一個文件夾。如果您想提供對使用者主目錄的 ftps 訪問,它會變得有點麻煩。您可能必須插入一個額外的層次結構級別,即
/home/someuser
變為/home/someuser/someuser
.為了快速測試,我發現 curl 非常方便,例如測試上傳:
curl -T /tmp/blub -u testuser:testpass ftps://yourserver.example.com/in/