Linux UNIXの自分のアカウントでsudoが使えるかどうかは、
[oreore@marina ~]$ sudo : あなたはシステム管理者から通常の講習を受けたはずです。 これは通常、以下の3点に要約されます: #1) 他人のプライバシーを尊重すること。 #2) タイプする前に考えること。 #3) 大いなる力には大いなる責任が伴うこと。 [sudo] oreore のパスワード: [oreore@marina ~]$ echo $? 124
このように、 /etc/sudoers の Defaults timestamp_timeout の値(分)を超えるまで待つか、何かしらのコマンドを実行して返り値を求めればよいです。が、自動実行しているスクリプトでこれをやろうとすると、
- bashの内部コマンドなどで返り値がうまく取れない
- sudoのパスワード待ち(対話コマンド)で待たされる
という問題を解決したくなるのが人情ってなもの。プログラムの中で自身のアカウントがNOPASSWDでsudoできるかどうかのチェックロジックを入れたいときに、このようなちょい面倒なハードルを超えなければならないのです。大きく面倒というわけじゃないですけど。
/etc/sudoers を短く編集するという手もあるじゃないかという声も聞こえてきますけど、それだと手オペでsudoするときの利便性が損なわれてしまいかねないので、システム全体の利便性を損ねずにプログラムの中だけで解決したいですよね?
[amazonjs asin="4904807537" locale="JP" title="シェルスクリプトマガジン vol.56"]