除非存在子文件夹,否则 ChrootDirectory 不起作用

除非存在子文件夹,否则 ChrootDirectory 不起作用

我正在尝试仅允许与特定文件夹建立 sFTP 连接

/etc/ssh/sshd_config

PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem       sftp    /usr/lib/openssh/sftp-server
Match Group demouser
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /home/demouser/ftp/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

然后我运行以下命令来创建帐户/文件夹

groupadd demouser
useradd -g demouser -s /sbin/nologin demouser
chown root:root /home/demouser
chmod 755 /home/demouser/
cd /home/demouser/
mkdir ftp
chown demouser:demouser ftp

我面临的问题是,当设置了 ChrootDirectory 时我无法连接,/home/demouser/ftp/但当我设置它时它可以正常工作,因为/home/demouser除非那是在指定的 ChrootDirectory 中已经创建的子文件夹,否则它似乎不起作用。

答案1

ChrootDirectory需要属于root用户,并且root组也需要具有特定的权限

chown 根:rootChroot目录

chmod 755Chroot目录

相关内容