如何在没有 shell 的情况下运行 emacs?

如何在没有 shell 的情况下运行 emacs?

我正在管理一个 Arch Linux 服务器。

如何安全地将 emacs 添加到我的/etc/sudoers编辑器变量中?目前我有“emacs”,但这允许M-x shell.基本上,我想要类似rvim, 但对于 emacs 的东西。

答案1

你可能做不到。

Emacs 是一个 Lisp 解释器,它运行一个编辑器(用 emacs lisp 编写),因此每次使用 emacs 时,您都可以访问 Lisp 解释器本身。

该解释器可以执行各种操作:创建/删除文件或目录、更改访问权限等...基本上,一旦您进入 emacs,您不需要访问 shell 即可造成相当大的损害 - emacs 本身就是足够强大。

你最好的选择可能是找到一个小的 emacs 克隆(例如这里:http://www.emacswiki.org/emacs/EmacsImplementations)支持受限编辑。

答案2

不幸的是,Emacs 太强大了(即使 shell 被禁用)你可以做很多事情。

也许正确的解决方案是构建一个包装器来复制 sudoers 文件,并给予适当的权限,然后以仅具有写入该文件权限的特殊用户身份运行 Emacs,最后在验证后复制回该文件。

然而,从安全角度来看:显然,任何 sudoers 编辑器都可以分配任何权限,所以我想知道您实际上想解决什么问题。

尽管如此,我还是做了一个实验:如果你设置SHELL/bin/false,那么 Emacs 的shell命令在尝试执行时会立即退出并出现错误$SHELL

相关内容