我正在编写一个常规的已编译应用程序,该应用程序需要创建一个特殊文件并向其中写入魔术cookie。我无法直接从应用程序写入文件,系统安全模型要求我启动具有提升权限的帮助程序工具来完成此操作。我可以为助手工具提供任意数量的参数。现在,我想选择一些非常简单的系统命令作为辅助工具,并为我创建文件。像这样:
/bin/sh -c "/bin/echo -n 'magic' > /some/where/file"
touch
因为我需要将cookie写入文件,所以Simple 不能将其剪切,echo
没有shell包装器的Simple 不能正常工作,因为它需要重定向才能写入文件。我不愿意以root权限调用shell来完成这样的琐碎任务。我可以调用一些真正简单,受约束的系统命令来为我编写文件吗?
该shell示例可以工作,但是我不想以root特权调用该shell,只是为了创建一个简单的文件。该库确实接受了一个通信管道参数(它是AuthorizationExecuteWithPrivileges),该参数可用于使用编写Cookie
—
zoul 2011年
tee
。谢谢!
/bin/sh -c 'echo magic > /path/to/magic/file'
不起作用吗?那将是一个可执行文件和两个参数。您将需要将最后一个参数构建为字符串(使用sprintf或等效参数)。是否有理由对您不起作用?从您的问题听起来,doCommandAsRoot()不会接受输入以流式传输到命令,对吗?否则,您可以将最后一个参数替换为'cat > /path/to/magic/file'
并传递数据,而不是构造一个字符串。