Ssh

sftp,chroot + chdir 到使用者首頁?

  • September 25, 2020

有一個看起來像這樣的配置

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/alluchroot 目錄內部/home/sftp,那麼在真實文件系統外部,該目錄將是/home/sftp/home/sftp/allu.

引用自:https://serverfault.com/questions/1035280