sudo echo 到新文件报错“Permission denied”问题解决

在服务器执行这样一条命令,用了sudo还提示没有权限

sudo echo 10.173.187.111 > /etc/salt/minion_id 
-bash: /etc/salt/minion_id: Permission denied

导致这个问题的原因就是重定向符号“>”也是bash命令,sudo只是让echo命令拥有了sudo权限,但并没有让“>”也拥有sudo权限。

针对这种问题也有好几种解决方案,没有门的时候,那么就爬窗户。
方案一
使用tee命令,从标准输入中读取信息并写入标准输出或者文件中。

echo 10.173.187.111 |sudo tee /etc/salt/minion_id 

也就是说echo不给sudo权限,但是给tee权限

方案二
使用“sh -c”,它可以让bash将一个字符串作为完成的命令来执行。让sudo影响范围扩大到整条命令

sudo sh -c "echo 10.173.187.111 > /etc/salt/minion_id"

方案三
这种方式就是用sudo su 命令提到root权限了,等于所所有的操作都是root在执行。如果要回到普通权限就用sudo su username回去。

笔者使用的就是第一种方案tee。也建议使用这种。

本博客采用 知识共享署名-禁止演绎 4.0 国际许可协议 进行许可

本文标题:sudo echo 到新文件报错“Permission denied”问题解决

本文地址:https://jizhong.plus/post/2018/01/sudo-echo-permission-denied.html