我正在尝试禁用vim中的'r'和'o'命令,因此使用它的人无法从vim中打开其他文件。
我尝试使用cmap r <Nop>
和cmap o <Nop>
,它们起作用但有不良副作用......这些2个字母永远不能在vim命令行中使用,也不能用于搜索某些内容......
如果您尝试搜索该字词,则会在搜索行显示“word”字样:/wd
。
那么还有另一种禁用vimrc打开文件的方法吗?
答案 0 :(得分:3)
您可以使用标志启动Vim:
$ vim -R (readonly)
$ vim -Z (restricted)
$ vim -m (no writing)
$ vim -M (no text modification)
但这些都不会阻挡:e
或:r
或任何类似的命令。并且...... ~/.vimrc
可能会使用nano
编辑,或者无论如何都可以删除任何最终命令。
完全沙盒化Vim或其用户怎么样?
如何解释为什么会这样?
答案 1 :(得分:3)
如果确实想要保护Vim(而不只是提供某些不允许的功能的表面外观),您必须从源代码中删除这些功能并编译(并测试!)一个有限的Vim的版本。 (或者你可以使用操作系统包装器来对Vim进程进行沙盒处理并过滤某些系统调用,但我不知道这样的事情。)
任何Vimscript障碍都可以被规避:您的重新映射可以通过:cunmap
撤消,Vimscript中的任何更精细的保护可以通过在合适的时间按<C-c>
来停止。
答案 2 :(得分:0)
如果您想允许使用root权限编辑特定文件,而不允许命令或编辑其他文件(正如您现在在单独的注释中指出的那样),为什么不按照{{{{{{{{{ 1}}:
临时副本由要编辑的文件组成 将所有者设置为调用用户。
运行策略指定的编辑器以编辑 临时文件。 sudoers政策使用 SUDO_EDITOR,VISUAL和EDITOR环境变量 (以该顺序)。如果没有SUDO_EDITOR,VISUAL或 EDITOR已设置,编辑器中列出的第一个程序 使用了sudoers(5)选项。
- 醇>
如果已修改,则临时文件为 复制回原来的位置和 临时版本已删除。
在用户的上下文中启动编辑器更安全,而不是根上下文。 (另外,用户得到的是他的Vim设置,而不是来自root帐户的非维护设置!)只需要使用root权限完成编辑的临时文件的同步;在man 8 sudoedit
的帮助下,所有这些都可以在几行shell脚本中实现。