如何使用 visudo 赋予用户类似 root 的能力?

如何使用 visudo 赋予用户类似 root 的能力?

我将此行添加到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完成- 您可以使用以下格式:rootyael

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'

相关内容