sudo echo" something" >> / etc / privilegedFile不起作用...是否有替代方法?

时间:2020-03-05 18:59:16  来源:igfitidea点击:

关于Linux中的sudo权限,这是一个非常简单的问题,至少看起来应该是这样。

很多时候,我只想将某些内容添加到/ etc / hosts或者类似文件中,但最终却无法执行,因为即使使用root也不允许同时使用>和`>>。

是否有某种方法可以使此工作而不必将" su"或者" sudo su"插入根目录?

解决方案

回答

sudo sh -c "echo 127.0.0.1 localhost >> /etc/hosts"

回答

问题在于外壳程序确实输出重定向,而不是sudo或者echo,因此这是以常规用户的身份完成的。

尝试以下代码片段:

sudo sh -c "echo 'something' >> /etc/privilegedfile"

回答

问题在于处理重定向的是外壳;它尝试使用权限而不是我们在sudo下运行的进程的权限打开文件。

使用这样的东西,也许:

sudo sh -c "echo 'something' >> /etc/privilegedFile"

回答

正在做

sudo sh -c "echo >> somefile"

应该管用。问题在于>和>>是由shell处理的,而不是由" sudoed"命令处理的,因此权限是权限,而不是我们" sudoing"到的用户的权限。

回答

使用tee --append或者tee -a

echo 'deb blah ... blah' | sudo tee --append /etc/apt/sources.list

确保避免在引号内使用引号。

为避免将数据打印回控制台,请将输出重定向到/ dev / null。

echo 'deb blah ... blah' | sudo tee --append /etc/apt/sources.list > /dev/null