![什么时候应该使用“rnano”代替“nano”?](https://linux22.com/image/228272/%E4%BB%80%E4%B9%88%E6%97%B6%E5%80%99%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E2%80%9Crnano%E2%80%9D%E4%BB%A3%E6%9B%BF%E2%80%9Cnano%E2%80%9D%EF%BC%9F.png)
我喜欢nano
并且经常使用它。一个相关的应用程序是rnano
.
从rnano
手册:
DESCRIPTION
rnano runs the nano editor in restricted mode. This allows editing
only the specified file or files, and doesn't allow the user access to
the filesystem nor to a command shell.
In restricted mode, nano will:
• not allow suspending;
• not allow saving the current buffer under a different name;
• not allow inserting another file or opening a new buffer;
• not allow appending or prepending to any file;
• not make backup files nor do spell checking.
我应该什么时候使用rnano
?
答案1
rnano
我怀疑(或)的预期用例nano -R
是提供可在特权场景中或使用不受信任的键盘输入使用的编辑器。例如,如果您想为其他人提供使用您帐户的编辑器 - 他们将无法访问其他文件。同样,限制sudo
访问编辑器的危险也是有用的;但在这种情况下sudoedit
应该使用。
限制模式1.3.3版本添加,于 2004 年 6 月发布。初始补丁从 2004 年 2 月开始,没有给出太多理由:
最近,我需要一个小型文本编辑器,它只能编辑一个或多个特定文件,而不允许用户访问底层文件系统或命令 shell。我选择使用nano,因为它很容易使用。然而,我不得不对它进行一些修补,因为虽然它有类似 chroot 的模式,但这还不够安全。
大卫·劳伦斯·拉姆齐大大扩展了补丁2004 年 4 月合并之前。
其他编辑器有限制模式,对“限制”的定义各不相同;例如,Vim 5 添加了限制模式2002 年(使用-Z
或调用rvim
,与原始rnano
补丁相同),它阻止对外部 shell 的任何访问。
答案2
您可以像这样使用它sudoers
,以允许选定的一组用户编辑特定的配置文件
Cmnd_alias EDITFILE = rnano /path/to/that/file
User_alias FILEEDITORS = user1, user2
User_alias FILEOWNER = otheruser
FILEEDITORS ALL=(FILEOWNER) EDITFILE
该文件应该只能由 写入otheruser
,因此这些用户无法正常编辑它。然后他们将能够使用:
sudo -u otheruser rnano /path/to/that/file
他们将能够编辑该文件,但不能使用该用户的权限执行任何其他操作,因为rnano
禁止访问其他文件或退出 shell。
答案3
您可以使用它让人们编辑选定的文件,而无需授予他们 shell 访问权限。
假设秘书史蒂夫需要能够为员工分配不同的公司电子邮件别名。但是,您不想在公司邮件服务器上为 Steve 提供一个完整的 shell 帐户,因为这将允许他四处查看并执行任意命令。也许有一天史蒂夫感到无聊,在服务器上发现了一个可利用的命令,他们可以用它来阅读首席执行官的私人对话,或者史蒂夫的一次性帐户被某些恶意软件破坏并用于在服务器上部署比特币矿工。当人们拥有他们不需要的特权时,各种不愉快的事情都可能发生。
所以你会怎么做?您在邮件服务器上为 Steve 创建了一个帐户,但您将其配置为仅允许rnano /etc/aliases
而不允许其他任何内容。您可以使用ForceCommand
in 选项sshd_config
或使用command=
in authorized_keys
(在这种情况下,他们甚至不需要自己的帐户)来完成此操作,或者如果他们将使用 SSH 以外的其他方式登录,则可以相应地配置他们的登录 shell。
答案4
它可用于提供编辑器窗口作为其他应用程序的一部分。
一个简单的例子是修复合并冲突(我认为 CVS 工作流程与此类似)或在发送错误反馈消息之前对其进行编辑。
它甚至不需要特权,只是不希望更改文件名。