为什么即使使用 sudo,“重定向到文件”也会以用户身份执行?

为什么即使使用 sudo,“重定向到文件”也会以用户身份执行?

我经常遇到这个问题,这让我很困惑为什么会这样。让我们考虑一下这个例子:

[me@localhost:~]$ sudo command > /some/file.log

user据我所知,如果没有写入权限/some/file.log,即使命令被执行为 ,这也不起作用sudo。我在这个网站上找到了一些解决方法,所以这不是问题,但我想知道其背后的原因是什么?为什么命令会以 user 身份执行sudo,而重定向会以 user 身份执行?有什么充分的理由支持这一点吗?

答案1

sudo执行命令时command,输出的重定向/some/file.log是由当前 shell 完成的,该 shell 以普通用户身份运行。

为了获得写入的输出,您可以尝试的root是:

sudo bash -c "command > /some/file.log"

相关内容