zou*_*oul 15 shell security root sudo io-redirection
我正在编写一个常规编译的应用程序,它需要创建一个特殊的文件并向其中写入一个魔法 cookie。我无法直接从应用程序写入文件,系统安全模型要求我启动一个具有提升权限的帮助工具来完成此操作。我可以为辅助工具提供任意数量的参数。现在我想选择一些非常简单的系统命令作为辅助工具并为我创建文件。像这样的东西:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
Simpletouch不会削减它,因为我需要将 cookie 写入文件,echo没有 shell 包装器的 simple不起作用,因为它需要重定向来写入文件。我不喜欢用 root 权限调用 shell 来完成这样一个微不足道的任务。是否有一些非常简单的、受约束的系统命令可以调用来为我编写文件?
str*_*ika 11
这个怎么样:
echo -n 'magic' | sudo tee /some/where/file > /dev/null
Run Code Online (Sandbox Code Playgroud)
当然有重定向,但只有 tee 以 root 身份运行,而不是 shell。工程与dd of=...太。
小智 11
没有输出重定向,没有管道,但有“这里的字符串”:
dd of=/some/where/file <<<'magic'
Run Code Online (Sandbox Code Playgroud)
还有另一个考虑,即您不想将魔法 cookie 的值放在命令行上,因为其他用户可以观察到。即使程序是短暂的(包括如果程序将命令行字符串清零),也有被攻击的机会。所以,一个理论:
writestringtofile 'magic' /some/where/file
Run Code Online (Sandbox Code Playgroud)
是一种危险的做法。因此,我赞同@stribika 的建议:将值写入临时文件并将其复制到位。确保使用安全函数来创建临时文件 ( mkstemp()),这样那里也不会出现竞争条件。
| 归档时间: |
|
| 查看次数: |
18550 次 |
| 最近记录: |