我将此行添加到visudo
,以便向 yael 用户授予完全权限:
yael ALL=(ALL) NOPASSWD: ALL
但是当我想更新文件时/etc/hosts
,我的权限被拒绝:
su – yael
echo "10.10.10.10 yael_host">>/etc/hosts
-bash: /etc/hosts: Permission denied
sudo echo "10.10.10.10 yael_host">>/etc/hosts
-bash: /etc/hosts: Permission denied
ls -ltr /etc/hosts
-rw-r--r--. 1 root root 185 Aug 7 09:29 /etc/hosts
我怎样才能给用户yael像root一样的能力?
答案1
问题的根源在于输出重定向是由 shell(用户 yael)完成的,而不是由sudo echo
.
为了强制写入由用户而不是用户/etc/hosts
完成- 您可以使用以下格式:root
yael
echo "10.10.10.10 yael_host" | sudo tee --append /etc/hosts
或者
sudo sh -c "echo '10.10.10.10 yael_host'>>/etc/hosts"
答案2
按如下方式编辑您的/etc/sudoers
( visudo
):
# User privilege specification
root ALL=(ALL:ALL) ALL
yael ALL=(ALL:ALL) ALL
然后运行:
sudo -- sh -c 'echo "10.10.10.10 yael_host">> /etc/hosts'
或者
sudo sh -c 'echo "10.10.10.10 yael_host">> /etc/hosts'