echo 到具有不同用户权限的文件

echo 到具有不同用户权限的文件

我试图实现由不同用户写入文件,root如下所示。但是文件已创建,但没有写入任何内容。

system("(echo 'ab' | su - root -c "echo 'Logging Enabled' |tee myLog.txt")>/dev/null");

也尝试过>而不是tee

system("(echo 'ab' | su - root -c "echo 'Logging Enabled' > myLog.txt")>/dev/null");

有没有更好的方法来实现这个目标?

谢谢

答案1

从您的问题中不清楚您实际希望在文件中出现哪些文本。

在 shell 中,你可以这样做

echo 'ab' | sudo tee myLog.txt

将“ab”写入myLog.txt并显示在标准输出上。使用的原因tee通常是因为它的副作用,这样你就不必以特权用户身份运行 shell,并且标准输出的输出实际上并不是所需要的;所以你可以添加一个重定向来抑制它。

echo 'ab' | sudo tee myLog.txt >/dev/null

在一个系统(3)在 C 代码中调用,您可以简单地将其放入字符串中:

system("echo 'ab' | sudo tee myLog.txt >/dev/null");

以下基本上是未定义的:

echo 'ab' | echo 'Logging enabled'

但通常会简单地丢弃“ab”,因为第二个echo不会对它执行任何操作,而是产生自己的输出。如果您想组合两段文本,请尝试类似的操作

printf "%s\nLogging enabled\n" "$(echo ab)"

但同样,非常不清楚您想对这两个单独的echo语句做什么以及如果是的话如何处理。

(重申一下显而易见的事实,a | b将标准输出连接到a的标准输入b,并并行运行两个进程,标准输入仍然连接到 的标准输入a和来自 的标准输出b。)

相关内容