将输出重定向为其他用户

Pav*_*vel 4 linux sudo pipe redirectstandardoutput

我需要sudo作为一个不同的使用,以执行某个命令.我正在尝试使用strace并将其输出重定向到文件中以供进一步分析.棘手的部分是,作为sudo'ed用户,我没有权限写入我要保存文件的位置.(并且没有sudo'ing我没有权限执行该命令开始) .

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

Zag*_*rax 9

试试:

sudo sh -c "command > output.txt"

通过这种方式,您应该能够运行任何命令并在任何地方写入.

如果您真的需要,由于某种原因我不明白,以用户A执行命令并写为用户B,您可以执行以下操作:

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

A和B是您想要的用户.> /dev/null仅当不希望在stdout上重定向命令输出时才需要该部分.


fil*_*mor 5

你可以用tee它.程序读取stdin输入到一个或多个文件以及stdout:

sudo funny_command | sudo tee output_file > /dev/null
Run Code Online (Sandbox Code Playgroud)

/编辑:虽然你已经接受了另一个(在我看来不如此)的答案,但我只会完成这个:

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

sudo command | sudo tee output.txt > /dev/null
sudo -u A command | sudo -u B tee output.txt > /dev/null
Run Code Online (Sandbox Code Playgroud)

当然,您不必使用重定向/dev/null.