Linux

如何使用 visudo 賦予像 root 這樣的使用者能力?

  • August 21, 2017

我將此行添加到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 一樣的能力?

問題的根源在於輸出重定向是由 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"

編輯您的/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'

引用自:https://unix.stackexchange.com/questions/384457