Ubuntu 14 - 无法使用 sudo echo 覆盖文件

Pro*_*ter 0 security bash

对于 ubuntu 12.04 bash 脚本,我曾经能够运行如下示例的命令来覆盖文件:

sudo echo 'line1   
line2
line3' > /etc/some/config/file.conf
Run Code Online (Sandbox Code Playgroud)

从 Ubuntu 14.04 开始,我现在必须将其分解以获得与这样的相同行为:

sudo echo 'line1
line2
line3' | sudo tee /etc/some/config/file.conf
Run Code Online (Sandbox Code Playgroud)

我猜这是一个额外的安全措施?有没有办法回到旧的行为?


更新

正如一些人正确指出的那样,这种行为在 Ubuntu 12.04 和 Ubuntu 14.04 中是一致的。我相信我很困惑,但是因为如果在用 sudo 调用的 bash 脚本中运行命令,那么它执行得很好,但是,将命令粘贴到 CLI 中,会导致权限被拒绝。我在比较苹果和橙子。

job*_*bin 5

不能直接使用 >sudo你正在做的方式,原因是重定向被shell通过sudo的执行,而不是,因此命令将无法写入该文件,因为权限。

有关此问题的适当解决方案,请参阅此问题:

更新:

如果您复制:

sudo echo 'line1   
line2
line3' > /etc/some/config/file.conf
Run Code Online (Sandbox Code Playgroud)

到一个文件,说scrip.sh,然后执行脚本

sudo bash script.sh
Run Code Online (Sandbox Code Playgroud)

您不会收到错误并且脚本将成功执行,因为在这种情况下,您通过为 shell 提供适当的权限 ( sudo bash)来运行脚本。