为了使文件服务器的访问受到限制,我设置了以下配置:
在文件服务器上(Debian Wheezy)
data-reader
在名为 的组中创建一个没有 home、没有 shell 的用户data
。- 创建一个 root 拥有的目录,以及一个可由 group 访问的
/somewhere/share/
子目录。/somewhere/share/data/
data
- 添加以下配置
/etc/sshd_config
:Match group data ChrootDirectory /somewhere/share ForcedCommand internal-sftp X11Forwarding no AllowTcpForwarding no
这样,data-reader
只能使用SFTP读取目录中的文件/somewhere/share/data
。好的。
在客户端(另一个 Debian)
用于sftp data-reader@<server_ip>
连接到服务器。从 SFTP 控制台,我可以使用或/somewhere/share/data
等 SFTP 命令进行只读访问,但我看不到其他路径。好的 !这就是我想要的。ls
get
但列出了这个很好的命令help
:
! Escape to local shell
如果我跑
!ls /
/
我实际上可以看到服务器上的所有文件!我可以看到任何文件的内容。但我不希望这样,我希望用户无法退出他的目录。
有没有办法限制这个“转义”命令的访问?
感谢您的帮助。
答案1
转义到本地 shell 意味着——用户现在在客户端上有一个 shell,不是在服务器上。触摸两个系统上 /tmp 中的文件(名称不同!)以查看差异。