我正在运行Amazon Linux AMI(Red Hat衍生产品),并使用OpenSSH创build新的SFTP服务器。 我希望SFTP用户被限制在一个目录下,并且能够写入由他们的SFTP客户端显示的初始目录。
我正在使用ChrootDirectory将用户chroot到/home/customers/srgcompany 。 这意味着这个目录必须由root拥有,只能由root来写。 用户的passwd项目看起来像fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin 。 我已经把用户的公钥放在/home/fflintstone/.ssh/authorized_keys 。 我已经在/home/customers/srgcompany/fileshere创build了一个用户组( srgcompany )具有读/写/执行/ sgid权限的文件夹。 我已经使用Subsystem sftp internal-sftp -u 0007 -l INFOconfiguration了OpenSSH的SFTP。
那么现在,当用户使用SFTP客户端进行连接时,显示(并由pwd命令返回)的目录将无法写入。 用户可以cd到fileshere文件夹,并写在那里。 有没有什么办法让用户的SFTP中的文件夹文件夹作为初始的远程工作目录,就像在下面的例子中一样? 或者,我可以使chrooted文件夹可写吗?
我想要的是:
$ sftp sftpserver.sssprockets.com Connected to sftpserver.sssprockets.com. sftp> pwd Remote working directory: /fileshere
任何帮助深表感谢。
不使用chroot或internal-sftp时,OpenSSH软件包使用名为sftp-server的程序来处理传入的SFTP会话。 sftp-server的文档列出了起始目录的一个命令行选项:
-d start_directory
为用户指定备用起始目录。 path名可以包含以下在运行时展开的标记:%%被replace为字面值'%',%d被replace为被authentication用户的主目录,%u被replace为该用户的用户名。 默认是使用用户的主目录。 此选项与sshd_config(5)ChrootDirectory选项一起使用时很有用。
这个文档也适用于internal-sftp子系统,所以你也可以使用这个选项。 请注意,您应该指定相对于chroot的起始目录,而不是系统的实际根目录:
Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere