![在 sshd_config 文件中 sftp chroot 显示 sftp/%u?](https://linux22.com/image/872623/%E5%9C%A8%20sshd_config%20%E6%96%87%E4%BB%B6%E4%B8%AD%20sftp%20chroot%20%E6%98%BE%E7%A4%BA%20sftp%2F%25u%3F.png)
请帮助理解此配置
# override default of no subsystems
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
答案1
子系统
Subsystem sftp internal-sftp
配置外部子系统(例如文件传输守护程序)。参数应为子系统名称和在子系统请求时执行的命令(带有可选参数)。
命令 sftp-server(8) 实现“sftp”文件传输子系统。
匹配
Match Group sftpusers
引入条件块。如果 Match 行上的所有条件都得到满足,则后续行上的关键字将覆盖配置文件全局部分中设置的关键字,直到出现另一个 Match 行或文件末尾。如果关键字出现在多个满足条件的 Match 块中,则仅应用该关键字的第一个实例。
Match 的参数是一个或多个条件模式对,或匹配所有条件的单个标记 All。可用的条件是 User、Group、Host、LocalAddress、LocalPort 和 Address。匹配模式可以由单个条目或逗号分隔的列表组成,并且可以使用 ssh_config(5) 的 PATTERNS 部分中描述的通配符和否定运算符。
Chroot目录
ChrootDirectory /sftp/%u
指定在认证后 chroot(2) 到的目录的路径名。路径名的所有组件都必须是 root 拥有的目录,且任何其他用户或组都无法写入。chroot 后,sshd(8) 将工作目录更改为用户的主目录。
部队指挥
ForceCommand internal-sftp
强制执行 ForceCommand 指定的命令,忽略客户端提供的任何命令(
~/.ssh/rc
如果存在)。使用带有-c
选项的用户登录 shell 调用该命令。这适用于 shell、命令或子系统执行。它在 Match 块内最有用。客户端最初提供的命令在 SSH_ORIGINAL_COMMAND 环境变量中可用。指定“internal-sftp”命令将强制使用进程内 sftp 服务器,当与 ChrootDirectory 一起使用时,该服务器不需要支持文件。
更多信息这里