Permissions
為 SFTP 使用者配置 Chroot
我正在嘗試為一些自動備份配置 SFTP 伺服器。我配置了一個 Ubuntu 14.04 伺服器並取得了部分成功。我想做的想法是這樣的:
- 將為每個要備份的特定係統創建一個使用者。僅限 SFTP。
- 使用者將被 Chroot,並且無法在其主目錄之外讀取或寫入。
- 登錄後,使用者的家將成為“根”。
- 使用者將能夠將文件上傳到根目錄。(這就是我卡住的地方。)
我使用以下程式碼片段在 sshd_config 中創建 Chroot,如下所示:
Match Group sftpbackup ChrootDirectory /srv/sftpbackup/%u X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
然後我根據要求設置 /srv/sftpbackup 的權限。
# ls -l total 4 drwxr-x--- 3 root sftpbackup 4096 Jan 5 15:29 user1 #
現在,使用者可以登錄但不能上傳文件(權限被拒絕)。如果我將目錄所有權更改為如下所示:
# ls -l total 4 drwxrwx--- 3 user1 sftpbackup 4096 Jan 5 15:29 user1 #
然後使用者無法登錄,從 auth.log:
sshd[14835]: fatal: bad ownership or modes for chroot directory "/srv/sftpbackup/user1"
看起來,如果使用者的主目錄是 SFTP chroot,則 root 必須擁有該目錄,因此必須創建一個子目錄以便使用者可以寫入它。
無論如何使根可寫?查看各種網站,似乎沒有辦法實現我想要的。我不太明白讓使用者可寫 chroot 目錄和讓子目錄可寫之間有什麼區別。見解將不勝感激。
注意:我的目標是創建一個可以由各種設備儲存備份的伺服器。這些設備將由第三方供應商配置,因此我試圖讓事情變得簡單(每個設備一個使用者名,一旦登錄,所有文件都會轉到“root”)和安全(創建的使用者將擁有最少伺服器的權利)盡可能。如果我的慾望有點僵硬,請道歉。
internal-sftp 要求 chrooted 使用者主目錄駐留在 root 擁有的目錄中:
/some/path/root-owned/user-dir1 /user-dir2
根擁有的目錄應具有 555 權限,使用者目錄應由根創建並由特定使用者擁有。在 subdirs 內使用者可以做任何事情,但他不能刪除或重命名 user-dir
$$ 12 $$. 這是 internal-sftp 限制。