目录
Please enable Javascript to view the contents

sudo echo 重定向报权限拒绝的原因与处理

 ·  ☕ 1 分钟

重要

sudo echo 'xxx' >> /etc/hosts 会报权限拒绝。原因:sudo 只作用于 echo>> 重定向由当前 shell 以普通用户权限打开文件。

1.简介

Kubelet 集群部署时需要修改 /etc/hosts。客户不给 root 密码,只能用 sudosudo echo ... >> /etc/hosts 直接报错。

2.说明

2.1 为什么 sudo echo >> file 报权限拒绝

重定向操作符 >>当前 shell 解析,在命令执行之前打开文件。sudo 只提升 echo 的权限,不提升重定向的权限。

1
2
3
sudo echo "192.168.1.218 reg.paas.org" >> /etc/hosts

  ↑ sudo 作用范围            ↑>> 由当前用户 shell 执行,无写入权限

2.2 处理

1
echo "192.168.1.218 reg.paas.org" | sudo tee -a /etc/hosts

tee 本身以 sudo 权限运行,因此打开 /etc/hosts 时具备 root 权限。

方式效果
sudo echo 'x' >> /etc/hosts报 Permission denied
echo 'x' | sudo tee -a /etc/hosts正常写入
echo 'x' | sudo tee /etc/hosts正常写入(覆盖,非追加)
分享

Hex
作者
Hex
CloudNative Developer