如何禁用vimrc中的vim命令来保护vim

时间:2012-11-05 10:57:00

标签: command vim

我正在尝试禁用vim中的'r'和'o'命令,因此使用它的人无法从vim中打开其他文件。 我尝试使用cmap r <Nop>cmap o <Nop>,它们起作用但有不良副作用......这些2个字母永远不能在vim命令行中使用,也不能用于搜索某些内容...... 如果您尝试搜索该字词,则会在搜索行显示“word”字样:/wd

那么还有另一种禁用vimrc打开文件的方法吗?

3 个答案:

答案 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}}:

  
      
  1. 临时副本由要编辑的文件组成    将所有者设置为调用用户。

  2.   
  3. 运行策略指定的编辑器以编辑   临时文件。 sudoers政策使用   SUDO_EDITOR,VISUAL和EDITOR环境变量   (以该顺序)。如果没有SUDO_EDITOR,VISUAL或   EDITOR已设置,编辑器中列出的第一个程序   使用了sudoers(5)选项。

  4.   
  5. 如果已修改,则临时文件为   复制回原来的位置和   临时版本已删除。

  6.   

在用户的上下文中启动编辑器更安全,而不是根上下文。 (另外,用户得到的是他的Vim设置,而不是来自root帐户的非维护设置!)只需要使用root权限完成编辑的临时文件的同步;在man 8 sudoedit的帮助下,所有这些都可以在几行shell脚本中实现。