重要
sudo echo 'xxx' >> /etc/hosts 会报权限拒绝。原因:sudo 只作用于 echo,>> 重定向由当前 shell 以普通用户权限打开文件。
1.简介
Kubelet 集群部署时需要修改 /etc/hosts。客户不给 root 密码,只能用 sudo,sudo echo ... >> /etc/hosts 直接报错。
2.说明
2.1 为什么 sudo echo >> file 报权限拒绝
重定向操作符 >> 由 当前 shell 解析,在命令执行之前打开文件。sudo 只提升 echo 的权限,不提升重定向的权限。
| |
2.2 处理
| |
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 | 正常写入(覆盖,非追加) |