パスワードを要求せずにルートで特定のプログラムをどのように実行できますか?

パスワードを要求せずにルートで特定のプログラムをどのように実行できますか?

パスワードなしでsudoで何かを実行する必要があるので、visudoこれを使用してsudoersファイルに次のものを追加しました。

MYUSERNAME ALL = NOPASSWD: /path/to/my/program

それからこれを試しました。

$ sudo /path/to/my/program
[sudo] password for MYUSERNAME: 

パスワードを尋ねるのはなぜですか?パスワードを要求せずにroot以外のユーザーとしてrootとしてコマンドを実行/使用するにはどうすればよいですか?

ベストアンサー1

sudo に一致する項目が複数ある場合、/etc/sudoers最後の項目が使用されます。したがって、パスワードプロンプトを持つコマンドを実行し、パスワードプロンプトなしで特定のコマンドを実行できるようにするには、最後に例外が必要です。

myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/my/program

を使用すると、(root)プログラムをrootとして実行できますが、他のユーザーとしては実行できません。 (影響を考慮しない限り、必要最小限の権限よりも多くの権限を付与しないでください。)

Ubuntuを実行していない場合、またはデフォルトのsudo設定を変更した読者は注意してください(Ubuntuのsudoはデフォルトでは問題ありません)。: 高い権限でシェルスクリプトを実行するのは危険です。クリーンな環境で起動する必要があります(シェルが起動すると遅すぎます(参照)。シェルスクリプトでsetuid設定を許可する)、したがってこれを処理するにはsudoが必要です。このオプションDefaults env_reset/etc/sudoersコンパイル時のデフォルト値であることを確認してください(sudo sudo -V | grep env含める必要がありますReset the environment to a default set of variables)。

おすすめ記事