我创建的用户每个都有自己的主目录,正常。
目前我创建用户如下:
adduser -d / home / ftp / myUser myUser
我的用户需要连接到SFTP(打开我的vps上安装的ssh),并且我需要当我的用户在SFTP中连接时,我需要将主目录视为他的根文件夹
为什么 ?另一个应用程序正在连接到此 SFTP,并且如果不在其根目录中考虑该应用程序,则该应用程序无法发送或读取文件。
我怎样才能做到这一点?
答案1
添加或更改/etc/ssh/sshd_config
以包含以下行
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h
ForceCommand internal-sftp
然后将所有受限用户集添加到该sftpusers
组中。
最后,将目标目录的所有权更改为root,并删除组/其他写入权限,然后重新启动服务器ssh
。这是 chroot 生效所必需的。缺点是用户无法将任何文件写入其主目录。 (您必须创建子目录供它们写入。)
从用户的角度来看,这不是一个理想的情况,您可能会发现最好在文件系统中的其他位置创建一个目录供 SFTP 使用(例如,/home/sftp/$USER
可以使用 )独立于其真实主目录进行锁定ChrootDirectory /home/sftp/%u
。
当您遇到问题时(您可能会在几次尝试解决问题的过程中遇到第一个问题),请记住阅读/var/log/auth.log
以了解出了什么问题。