我真的需要一些幫助,我一直在嘗試使用ubuntu
.
注意事項:
james
是使用者sshusers
是團體/home/james/upload/
是我想要鎖定使用者的目錄
sshd_配置:
AllowGroups sshusers
Match Group sshusers
ChrootDirectory /home/%u/upload/
ForceCommand internal-sftp
我遵循了一個答案在askubuntu上,這是我的命令
sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload
問題:
我收到這個錯誤
Error: Network error: Software caused connection abort
Error: Could not connect to server
我調查了日誌,發現了這一點:
致命:chroot 目錄元件「/home/james/upload/」的所有權或模式錯誤
但是如果我運行以下命令
sudo chown root /home/james/upload
sudo chmod go-w /home/james/upload
它工作完美,用戶可以連接,資料夾已鎖定但無法刪除文件在目錄中
Status: Listing directory /
Status: Directory listing successful
Status: Starting upload of C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm
Command: put "C:\Users\Program\AppData\Local\Temp\fz3temp-1\empty_file_yq744zm" "test"
Error: /test: open for write: permission denied
Error: File transfer failed
請建議,我在谷歌上搜索了很多,現在所有連結都是紫色的(訪問過:P
)
我正在使用 filezilla 客戶端來測試SFTP
.
答案1
該ChrootDirectory
指令期望 chroot 目錄由 擁有root
,其他任何人都不可寫入。那麼你不能將使用者監禁到某個目錄並允許該使用者寫入該目錄。你可以:
chroot 到 home,上傳到upload/
您嘗試的第一組命令對此是正確的:
sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload
然而,選項sshd_config
是:
Match Group sshusers
ChrootDirectory %h
ForceCommand internal-sftp
(%h
替換為正在驗證的使用者的主目錄,相當於/home/%u
大多數情況。)此外,要限制 中資料夾的可見性並限制其中的寫入權限,請在 的第一個命令中/home/james
使用 和 的遞歸選項,chown
以及刪除權限。修改後的集合如下所示:chmod
/home/james
read
sudo chown root /home/james -R
sudo chmod go-rwx /home/james -R # Disallow traversing any directory in home
sudo chmod go+x /home/james # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload
現在用戶應該只能訪問/home/james/upload
, 或/upload
。
chroot上傳,上傳到upload/some_directory
與上面幾乎相同,替換/home/james/
為/home/james/upload
和。沒有特別的收穫。/home/james/upload
/home/james/upload/some_directory
將主目錄更改james
為/upload
ChrootDirectory 的常見行為是:“在 chroot 之後,sshd(8) 將工作目錄更改為用戶的主目錄。”所以我們改變james
的主目錄:
usermod -d /upload user
然後將ChrootDirectory
設為/home/%u
。在第一個選項中使用相同的限制。
答案2
OpenSSH 中內建的 sftp chroot 機制要求 chroot 目錄由 root 擁有(且使用者不可寫入)。例如,如果目錄是 SMB/CIFS 共用,則這可能會很麻煩,您必須在其中進行綁定安裝。
其中一個更靈活的解決方案是使用 MySecureShell (http://mysecureshell.readthedocs.io/en/latest/)
apt install mysecureshell
它無需對預設 OpenSSH 設定進行任何修改即可運行。您所需要做的就是讓您的 SFTP 使用者登入 shell 到 mysecureshell,它將為您處理 ACL/虛擬 chroot。詳細資訊請參閱文檔,
例如,一旦安裝了 MySecureShell,您就可以新增 SFTP 使用者(僅限於其主目錄),如下所示:
sudo useradd -m -d /home/sftpuser01 --shell /usr/bin/mysecureshell sftpuser01
從上面可以看出,使用者「sftpuser01」將在 SFTP 會話中虛擬 chroot 到「/home/sftpuser01」。
它還提供了許多靈活的選項來透過配置“/etc/ssh/sftp-config”來控制 ACL、群組等。請參閱http://mysecureshell.readthedocs.io/en/latest/configuration.html了解詳情。