Linux

禁用終端訪問但保留 FTP

  • March 30, 2021

我正在使用樹莓派 pi3 和 VSFTPD 通過 FTP 共享目錄,這允許相機連接到它並傳輸照片。

我還創建了一個簡單的使用者和密碼並對目錄進行了 chroot,因此如果使用 FileZilla 或任何其他工具,則在專用文件夾之外沒有文件瀏覽。

問題是,如果我通過終端(顯示器、鍵盤等,沒有 ssh)登錄,使用該使用者,我可以自由地去任何我想去的地方,有沒有辦法防止這種情況發生?
我已經嘗試過:

usermod –expiredate 1
passwd -l
usermod -s /sbin/nologin

但這會使該帳戶無法使用。

如果我搜尋 jail/chroot 終端使用者,則只有“ssh”結果。

任何幫助將不勝感激。

編輯

通過帳戶不可用,我的意思是,它禁用通過終端登錄(這是我想要的),但它也阻止通過 FTP 連接。

編輯 2

關鍵是禁用除 FTP 文件夾之外的 1 個使用者的所有內容,我不需要,也不希望該使用者做任何事情。

只有 FTP,沒有其他協議,我需要針對所有/大多數 wi-fi 攝影機,而 FTP 是要走的路。

SFTP 和 SSH 被禁用。

如果您想禁用特定使用者的SSH(包括scp& )登錄,您可以簡單地添加並重新啟動守護程序。sftp``DenyUsers <name of the ftp-only user>``/etc/ssh/sshd_config``sshd

它將保留使用僅 FTP 帳戶在本地登錄的可能性,但如果系統位於安全位置,這實際上可能有助於解決 FTP 傳輸故障。


創建僅限 FTP 的使用者帳戶的傳統方法是將使用者的 shell 設置為/sbin/nologin/bin/false或任何不允許輸入和立即退出的類似程序,但還要將該程序列在/etc/shells.

密碼檢查後由 FTP 守護程序完成的經典檢查是“此使用者是否有一個列在 ? 中的 shell /etc/shells?”。在現代系統上,這可以通過 PAM 配置而不是 FTP 守護程序本身來實現。

通過為使用者配置一個有效的“do-nothing”shell(= 列在 中/etc/shells),該帳戶對於 FTP 使用是有效的,但是任何需要執行 shell 的使用都將失敗,因為“do-nothing”程序是執行而不是任何真正的 shell,它只會退出而不接受使用者的任何輸入。

注意:如果系統有任何其他網路服務正在使用系統密碼數據庫,並且不是基於執行 shell(例如 IMAP 或 POP3 郵件伺服器),那麼您可能必須將這些服務配置為也明確拒絕“僅 FTP”使用者。

引用自:https://unix.stackexchange.com/questions/642603