为什么 root 可以做到这一点,而 sudo 却不能?

Que*_*ark 2 bash permissions debian sudo not-root-user

sudoer在我的 Debian 机器上设置为 a ,并且我一直使用它来安装软件等......我遇到了这个有趣的情况,我正在挠头:

我尝试使用以下命令在 apt 中启用精美的进度条:

sudo echo 'Dpkg::Progress-Fancy "1";' > /etc/apt/apt.conf.d/99progressbar
Run Code Online (Sandbox Code Playgroud)

我有权限问题:

/etc/apt/apt.conf.d/99progressbar: Permission denied
Run Code Online (Sandbox Code Playgroud)

但是,如果 I su,则运行该命令,一切正常。

为什么会这样?

Hen*_*ity 9

因为

 sudo cmd > file
Run Code Online (Sandbox Code Playgroud)

被解释为

(sudo cmd) > file
Run Code Online (Sandbox Code Playgroud)

通过你的外壳。即重定向是作为您自己的用户完成的。

我绕过的方式是使用

cmd | sudo tee file
Run Code Online (Sandbox Code Playgroud)

另外:这也将cmd在您的控制台上显示输出,如果您不希望您必须重定向它。