将输出重定向为不同的用户

15 浏览
0 Comments

将输出重定向为不同的用户

这个问题已经在这里有了答案:如何使用sudo将输出重定向到我没有写入权限的位置?[已关闭]

我需要以不同的用户sudo才能执行某个命令。我试图在其中使用strace并将其输出重定向到文件以进行进一步分析。复杂的是,作为sudo的用户,我没有权限写入我想要保存文件的位置。(并且如果不sudo,我无法获得执行该命令的权限)。

那么我如何以用户A的身份执行我的命令,并将其输出重定向为用户B的身份?

admin 更改状态以发布 2023年5月22日
0
0 Comments

你可以使用tee来实现这个功能。该程序会读取stdin并将输入写入一个或多个文件以及标准输出:

sudo funny_command | sudo tee output_file > /dev/null

/EDIT: 尽管你已经接受了其他(在我的眼中较差的)答案,我仍然会完善这个答案:

可以像下面这样完成上面的用例:

sudo command | sudo tee output.txt > /dev/null
sudo -u A command | sudo -u B tee output.txt > /dev/null

当然你不必使用重定向到/dev/null

0
0 Comments

尝试以下命令:

sudo sh -c "command > output.txt"

这样你就可以运行任何命令并将其写入任何地方了。

如果你真的需要以用户A的身份运行命令并以用户B的身份编写命令,出于某种我不理解的原因,你可以执行以下操作:

sudo -u A command | sudo -u B tee /somewhere > /dev/null

其中A和B是你想要的用户。如果不想将命令输出重定向到stdout,则仅需要> /dev/null部分。

0