Chroot SFTP - 允許使用者寫入目前(chroot)目錄
我目前有一個 WORKING SFTP 登錄,使用私鑰登錄,並且使用者被 chroot 到他們的主目錄。
目標:保留使用者 chroot,但允許對相對 chroot 目錄進行 WRITE 訪問,而無需在任何地方指定任何路徑或 cd。
換句話說,當 sftp 使用者登錄時,我不希望他們必須 cd 到另一個路徑才能上傳文件。
由於 chroot 目錄需要完全的 root 所有權(由於 chroot 設計),我不確定這是否可能。
在 /etc/passwd 中:
sftpuser:x:1006:1006:,,,:/home/sftpuser:/bin/false
使用者登錄公鑰位於:
/home/sftpuser/.ssh/authorized_keys
sshd_confg 中的 Chroot 規則:
Match User sftpuser ChrootDirectory /home/sftpuser ForceCommand internal-sftp AllowTCPForwarding no X11Forwarding no
主目錄權限:
# ls -l /home/ |grep sftpuser drwxr-xr-x 5 root root 4096 May 4 11:24 sftpuser # ls -l /home/sftpuser/ total 4 drwxrw-r-x 3 sftpuser sftpuser 4096 May 4 11:23 sftp_share
目前工作流程範例:
Connected to sftp.example.com. sftp> ls sftp_share sftp> put testfile.txt Uploading testfile.txt to /testfile.txt remote open("/testfile.txt"): Permission denied sftp> cd sftp_share sftp> put testfile.txt Uploading testfile.txt to /sftp_share/testfile.txt testfile.txt
所需的工作流程:
Connected to sftp.example.com. sftp> put testfile.txt Uploading testfile.txt to /testfile.txt testfile.txt
有沒有辦法允許上傳(放置)到預設目錄,而不必先 chdir?
我確實可以靈活地移動這些目錄。例如,sftp chroot 目錄不必在使用者主目錄中,我什至可以更改使用者主目錄(但使用者仍然必須能夠使用 authorized_keys 登錄)。
**請注意:**我確實了解許多 SFTP 客戶端,命令行 SFTP 客戶端允許在登錄時定義相對路徑。這超出了這個問題的範圍,我希望這個配置在伺服器端完成,客戶端只需要登錄。
嘿@emmdee 我花了很長時間才意識到有一個簡單而不錯的技巧。您只需將 root 設置為您想要 sFTP 的父文件夾的所有者,然後使用 force 命令告訴特定使用者在 CHROOT 目錄中載入特定 DIR。
在您的情況下,如果您想
/home/sftpuser
成為可寫目錄,您必須讓root成為目錄的所有者,/home
然後繼續並強制命令他/sftpuser
作為該使用者或組的登錄目錄。您的
/etc/ssh/sshd_conf
遺囑如下所示:Match User sftpuser ChrootDirectory /home ForceCommand internal-sftp -d /sftpuser AllowTCPForwarding no X11Forwarding no
完成後,您必須如前所述授予正確的權限,root 應該擁有 parent(chroot) 目錄
/home
,而使用者應該擁有 final(-d) 目錄/sftpuser
。如果沒有,我將假設您有一個名為sftpusers的 sFTP 使用者組;只需從下一個命令中省略該組或將其替換為使用者(第一個是root ,第二個是**sftpusers)。由於我們在命令行中使用 -R 進行繼承,因此您必須在使用者所有權之前從 root 所有權開始,如下所示:sudo chown -R root:sftpusers /home
然後對於使用者,您可以執行:
sudo chown -R sftpuser:sftpusers /home/sftpuser
我不確定這是否需要,但您始終可以重新啟動 sshd 服務以確保再次重新載入所有設置:
sudo systemctl restart sshd.service
希望這應該像一個魅力一樣起作用,我遇到了類似的問題,並且解決方案大部分時間都在看著我。
乾杯!