visudoを使ってユーザーにrootのような機能を提供する方法は? [コピー]

visudoを使ってユーザーにrootのような機能を提供する方法は? [コピー]

visudoyaelユーザーに完全な権限を付与するために、次の行を追加しました。

  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

問題の根本的な原因は、出力リダイレクトが.dllではなくシェル(ユーザー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/sudoersvisudo)を次のように編集します。

# 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'

関連情報