寻找 echo 的替代方法将数据写入文件,以便可以通过 sudo 调用

寻找 echo 的替代方法将数据写入文件,以便可以通过 sudo 调用

背景:

在 unix 机器上运行时,Tenable.io (nessus) 将尝试在 /etc/ 中创建一个带有唯一字符串的标记文件。大概是为了在主机名或 IP 发生变化时识别机器。

它通过以下方式实现

"sh -c \"echo 35374e09cc444b058c65267613804fa4 > /etc/tenable_tag && echo OK\""

问题是它需要 root 权限才能执行此操作。允许 tenable 提升权限的标准方法是使用 sudo 并将所需的少量命令添加到 sudoer 文件中。将 sh 列入白名单相当于将我们不想做的事情列入白名单!

因此,我试图找出一种简单的方法将文本转储到不涉及 shell“内置”的文件中

关键是整个命令将使用 sudo 执行,因此将某些内容通过管道传输到 sudo 的操作将不起作用。

在此邮政有人建议

sudo ex +'$put =\"some string\"' -cwq foo.txt

它可以工作,但是会在前面添加一个空行(至少在我的 ubuntu 机器上)

答案1

sudo ex +'put =\"some string\"' -cwq foo.txt

即删除 $,它实际上是一个与缓冲区末尾匹配的正则表达式,这会导致插入空白行。

相关内容