web-dev-qa-db-ja.com

setuidを適切に使用する

Setuidについての警告に私はあまりにも怖がっています。しかし、私はそれを使用する方法を見つけることができません。

実行できるようにしたい:arp -s 198.51.100.1 00:53:00:12:34:56ユーザーとしてstevenですが、arp-sにはrootが必要です。

これはそれを行う正しい方法でしょうか?

Sudo nano example.sh
Sudo chmod u+s example.sh
Sudo chmod og-w example.sh
Sudo chmod o+x example.sh
./example.sh
5
Steven

短編小説:setuidシェルスクリプト(またはanysetuid/setgidスクリプト)を使用しないでください。

長い話: シェルスクリプトでsetuidを許可する

解決策:Sudoを使用してコマンドを呼び出します。

Sudo arp -s 198.51.100.1 00:53:00:12:34:56

ユーザーstevenがパスワードを入力せずにこのコマンドを実行できるようにするには、visudoを実行し、次の行を追加します。

steven ALL = (root) NOPASSWD: arp -s 198.51.100.1 00\:53\:00\:12\:34\:56

stevenの他のSudoエントリがある場合、 NOPASSWD:最後に来る必要があります