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

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

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

sudo echo 'line1   
line2
line3' > /etc/some/config/file.conf

自从 Ubuntu 14.04 以来,我现在必须将其分解才能获得相同的行为,如下所示:

sudo echo 'line1
line2
line3' | sudo tee /etc/some/config/file.conf

我猜这是额外的安全措施?有没有什么方法可以恢复到以前的行为?


更新

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

答案1

您不能直接使用>sudo正在执行的方式,原因是重定向是由 shell 执行的而不是由 sudo 执行的,因此该命令将由于权限问题而无法写入文件。

请参阅此问题以获得适当的解决方案:

更新:

如果你复制:

sudo echo 'line1   
line2
line3' > /etc/some/config/file.conf

保存到一个文件中scrip.sh,然后执行脚本

sudo bash script.sh

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

相关内容