Pav*_*vel 4 linux sudo pipe redirectstandardoutput
我需要sudo作为一个不同的使用,以执行某个命令.我正在尝试使用strace并将其输出重定向到文件中以供进一步分析.棘手的部分是,作为sudo'ed用户,我没有权限写入我要保存文件的位置.(并且没有sudo'ing我没有权限执行该命令开始) .
那么如何以用户A的身份执行命令,并将其输出重定向为用户B?
试试:
sudo sh -c "command > output.txt"
通过这种方式,您应该能够运行任何命令并在任何地方写入.
如果您真的需要,由于某种原因我不明白,以用户A执行命令并写为用户B,您可以执行以下操作:
sudo -u A command | sudo -u B tee /somewhere > /dev/null
A和B是您想要的用户.> /dev/null
仅当不希望在stdout上重定向命令输出时才需要该部分.
你可以用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
.