我正在编写一个常规编译的应用程序,它需要创建一个特殊的文件并将一个神奇的cookie写入其中。我不能直接从应用程序编写文件,系统安全模型要求我启动一个权限提升的辅助工具来完成这个任务。我可以向助手工具提供任意数量的参数。现在,我想选择一些非常简单的系统命令作为帮助工具,并为我创建文件。就像这样:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
由于我需要将cookie写到文件中,所以简单的touch不会剪切它,没有外壳包装器的简单echo无法工作,因为它需要重定向才能写入文件。我不愿意用根权限调用shell来完成这样一项琐碎的任务。是否有一些简单的、受限的系统命令,我可以调用这些命令来为我编写文件?
发布于 2011-02-22 15:56:06
这个怎么样:
echo -n 'magic' | sudo tee /some/where/file > /dev/null当然,这里有重定向,但只有tee作为根运行,而不是shell。也与dd of=...一起工作。
发布于 2016-03-29 13:43:21
没有输出重定向,没有管道,但有“这里字符串”:
dd of=/some/where/file <<<'magic'发布于 2011-02-22 18:37:46
还有一个考虑因素,就是您不希望将神奇cookie的值放在命令行中,因为其他用户可以观察到这一点。即使该程序使用时间很短(包括该程序将命令行字符串归零),也存在攻击的机会。所以,理论上:
writestringtofile 'magic' /some/where/file是一种危险的方法。因此,我赞同@stribika的建议:将值写入临时文件并将其复制到位。确保使用一个安全函数来创建临时文件(mkstemp()),以便那里也没有竞争条件。
https://unix.stackexchange.com/questions/7850
复制相似问题