Ssh
sftp,chroot + chdir 到使用者首頁?
有一個看起來像這樣的配置
AllowUsers sftpu Match Group sftpg ChrootDirectory /home/sftp ForceCommand internal-sftp AllowTCPForwarding no X11Forwarding no
條目(組 7700被
passwd
命名sftpg
)sftpu:x:7700:7700::/home/sftp/allu:/bin/false
和
allu
目錄drwxrwxr-x 4 guacam sftpg 4096 Sep 16 2019 /home/sftp/allu/
這幾乎行得通。chroot有效,但與男人所說的不同
在 chroot 之後,sshd(8) 將工作目錄更改為使用者的主目錄
登錄後使用者的工作目錄是
/home/sftp
, not/home/sftp/allu
,我的猜測是因為/home/sftp/allu
屬於guacam
而不是sftpu
(雖然該sftpg
組可以rwx
訪問allu
並且可以寫入。那是因為幾個使用者應該共享同一個allu
目錄)。除非上面的配置有缺陷,否則 sshd 子系統中是否有命令
- 強制 chdir(在 chroot 之後)去使用者家
- 放寬一點訪問規則
- …
同時保持相同的目錄樹和訪問?
sshd 無法將工作目錄更改為使用者的主目錄,因為它不存在。因此,它將工作目錄設置為
/
.您為該使用者分配了主目錄
/home/sftp/allu
。但隨後您將使用者 chroot 到/home/sftp
. 這意味著相對於 chroot,該目錄位於/allu
! 不是/home/sftp/allu
。您需要知道 chroot 導致登錄使用者可以訪問的根目錄將更改為文件系統中的某個較低點,並且所有路徑都是相對於該目錄的。因此,如果使用者必須訪問
/home/sftp/allu
chroot 目錄內部/home/sftp
,那麼在真實文件系統外部,該目錄將是/home/sftp/home/sftp/allu
.