我有一个将通过 SSH 执行的脚本。我的 SSH 服务器配置为始终触发此脚本,因此用户无法访问实际机器。
此脚本的功能之一是编辑文件,我想知道是否有办法调用 VIM(或其他基于控制台的编辑器),而不允许它编辑其他文件或执行命令。我希望强制 VIM 仅编辑打开的文件。
答案1
我认为不可能按照你想要的方式限制 Vim 本身。
但是您可以将用户的所有权限限制在一个特定的文件/目录中。这样,他就永远无法读取或写入任何其他文件/目录。请注意,您的用户仍然应该能够执行位于其他地方的程序(/usr/bin/vim
例如)。
快速谷歌一下可能会返回几十个教程。此工具可能会有帮助:它允许您在服务器上设置一种沙箱。
答案2
你可以建造vim 的副本对于特定用户,并限制用户只能访问其需要访问的文件系统部分 - 因此只能对该文件具有读/写权限,并且不已将其他组添加到他的帐户。这应该可以有效地限制他只能访问这些文件。
另一个可能的做法是,在完成上述操作后将用户限制在 chroot jail 中 - 这样他就只能看到 vim 和该文件。
答案3
由于没有使用 Vim,我只能建议(未经测试):
- 使用 -Z 参数调用 Vim
- 将 W 命令映射到将保存当前文件并忽略参数的函数
- 禁用 E 命令
这里还有一些信息可以指引方向:
Vim 中的映射键 - 教程
Vim:remap、noremap、nnoremap 和 vnoremap 之间有什么区别
Vim 文档:地图
答案4
不完全是你想要的,但是 rvim 确实如此一些你想要什么。也许可以用 chroot 做一些小技巧。我不知道。
将无法启动 shell 命令,或者暂停 Vim。