sftp,chroot + chdir 到用户主目录?

sftp,chroot + chdir 到用户主目录?

有一个类似这样的配置

AllowUsers sftpu
Match Group sftpg
    ChrootDirectory /home/sftp
    ForceCommand internal-sftp
    AllowTCPForwarding no
    X11Forwarding no

条目passwd(组 7700 被命名为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,而不是/home/sftp/allu,我的猜测是因为/home/sftp/allu属于guacam而不是sftpu(而sftpg组有权rwx访问allu并可以写入。这是因为多个用户应该共享同一个allu目录)。

除非上面的配置有问题,否则 sshd 子系统中是否有命令可以

  • 强制 chdir(在 chroot 之后)转到用户主目录
  • 放宽一点访问规则
  • ...

同时保持相同的目录树和访问权限?

答案1

sshd 无法将工作目录更改为用户的主目录,因为它不存在。因此它将工作目录设置为/

您为该用户分配了主目录/home/sftp/allu。但随后您将用户 chroot 到/home/sftp。这意味着相对于 chroot ,该目录位于/allu!不是/home/sftp/allu

您需要知道,chroot 会导致登录用户可以访问的根目录更改为文件系统中的某个较低点,并且所有路径都与该点相关。因此,如果用户必须访问/home/sftp/alluchroot 目录内部/home/sftp,那么在实际文件系统外部,目录将是/home/sftp/home/sftp/allu

相关内容