对于属于 sudoers 组的用户,我通常可以通过执行以下操作来运行任何命令sudo <command>
但以下命令失败并提示“权限被拒绝”
sudo echo "myhostname" > /etc/hostname
它甚至不问我密码。如何更改主机名?
答案1
在您的情况下,正确的命令将是echo "newhostname" | sudo tee /etc/hostname
,因为正如 nssnd 所解释的那样,sudo
仅适用于单个命令,并且重定向的优先级低于sudo
。另一种选择是使用bash
命令:
sudo bash -c "echo newhostname > /etc/hostname"
答案2
sudo
仅适用于您的第一个命令,因此“>”操作是由您的用户完成的。
要运行您的命令:
- 通过执行获取 root shell
sudo -i
- 执行你的命令:
echo "myhostname" > /etc/hostname
- 退出 root shell
exit