背景:
在 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
即删除 $,它实际上是一个与缓冲区末尾匹配的正则表达式,这会导致插入空白行。