![visudoを使ってユーザーにrootのような機能を提供する方法は? [コピー]](https://linux33.com/image/115689/visudo%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%ABroot%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E6%A9%9F%E8%83%BD%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
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
問題の根本的な原因は、出力リダイレクトが.dllではなくシェル(ユーザー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'