替代linux命令'less'的程序/使'less'更加安全

3

我想编写一个交互式程序,就像 Linux 上的 'less' 命令一样。我不能在我的设置中使用 less,因为你可以在 less 提示符中执行 shell 命令 '!cmd',这可能会对任何生产环境造成重大安全风险。

我喜欢使用 C 语言,但如果有人能建议其他类似的程序,那也很好,因为我手头时间比较紧。

我知道一种选项是查看 less 的源代码,但在短时间内可能不太直接。


2
你应该更深入地处理安全问题 - 命令应该在非特权 shell(甚至是 chroot)中运行,这样即使攻击者获得了对 shell 的访问权限,也不会产生安全影响。 - Matteo Italia
1
这个问题的更好标题不应该是“如何使less更安全吗?”这样就不会出现X-Y问题了。 - kojiro
1
即使您可以编写此程序,如果您可以登录系统并运行它,那么您也可以运行其他shell命令,因此我无法理解防止分页程序运行其他命令如何使您的系统更安全... - twalberg
@kojiro 那可能是被采纳的答案更好的标题,但问题希望得到的不是更少;因此,如果要更改问题,除了标题之外还必须编辑问题,以便人们阅读时能够理解它的意义。 - Brōtsyorfuzthrāx
2个回答

12

太棒了,我在less自带的man页面上找到了答案。你可以使用其中一个变量来禁用这些功能。

安全性 当环境变量LESSSECURE设置为1时,less运行在“安全”模式下。这意味着这些功能已被禁用:

          !      the shell command

          |      the pipe command

          :e     the examine command.

          v      the editing command

          s  -o  log files

          -k     use of lesskey files

          -t     use of tags files

                 metacharacters in filenames, such as *

                 filename completion (TAB, ^L)

   Less can also be compiled to be permanently in "secure" mode.

-2
'less' / 'more' 是进程或程序本身。您读取运行的其他命令的输出(可能会使用管道 | 重定向),并像文件一样解析它们,并打印每10行。
这可以通过Python或C轻松完成。但逻辑应该是相同的。

我明确表示我要么需要具有相同功能的替代程序的名称,要么就是该程序本身。 - chandank
我还看到您想要编写一个程序(最好是用C语言),如果已经有程序名称的话,那就太棒了。 - Subramanian K
@chandank 不,你没有这样说,我读了你的问题好几遍,它明确表示你想要自己编写一个程序。我没有看到你想要程序本身。 - Risinek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接