次に設定するのは実行権限の指定セクションで、この部分は“who where = (whoelse) what”という構文により「whoという者(ユーザ、グループ、ユーザエイリアス)はwhereというホスト上にてwhatというコマンドをwhoelseというユーザの有す権限で実行できる」という指定を行っていけばいい(この説明だけでは分かりにくいかもしれないので設定ファイルのサンプルを用意した)。ここでは、例えばsudoをパスワードなしで実行可能にするNOPASSWDなど、いくつかのオプション指定をすることも可能だが、詳細はマニュアルを参照して頂きたい。
なお本稿で掲載したサンプルは、設定ファイルおよび各種オプションがどのような形式で記述されるかの概要を示すためのもので、使用可能なすべての設定を網羅したものとはなっていない(実際にどのような設定が可能であるかは「man sudoers」にて確認のこと)。
# # ディズニーのキャラクタ名を拝借したサンプル/etc/sudoersファイル # # ユーザエイリアス # 1行目では特定の3ユーザを一括して参照するエイリアスを設定 # 2行目ではdonaldを除いたducksユーザグループのエイリアスを設定 # 3行目では単一ユーザのみのエイリアスを設定しているが、これは将来の便を図っての措置 # User_Alias NEPHEWS = huey, dewey, louie User_Alias ALL_DUCKS_BUT_DONALD = %ducks, !donald User_Alias MICKEY = mickey_mouse # コマンドエイリアス Cmnd_Alias HALT_OR_REBOOT = /sbin/halt Cmnd_Alias KILL = /usr/bin/killall Cmnd_Alias SHUTDOWN = /sbin/shutdown Cmnd_Alias SU = /bin/su # 権利設定:誰が何を実行できるか # 標準の設定ルール:rootおよびwheelグループユーザにはフルアクセスを許可 root ALL = (ALL) ALL %wheel ALL = (ALL) ALL # ここではmickeyがシステム管理者であるとして、全権限をパスワード不要で与える MICKEY ALL = NOPASSWD: ALL # NEPHEWSにはコンピュータの停止系コマンドを許可 NEPHEWS HALT_OR_REBOOT, SHUTDOWN
設定ファイルの末尾には追加設定の指定行を記述しておくことも可能で、具体的には次のような指定が行える。
- 間違ったパスワード入力やsudoの不正使用が試みられた場合に電子メールで通知するか
- ログイン失敗時の強制終了を猶予する上限回数
- sudoの使用に伴うリスクの説明をユーザに提示するか
- sudoを介して使用された全コマンドを記録させる専用のログファイル
エディタの終了時にはvisudoによって設定内容のエラーがチェックされるようになっているので、問題点を指摘された場合は該当箇所を設定し直せばいいが、あるいはすべての変更を取り消して編集前の状態に設定ファイルを復帰させることもできる。なお、エラー部分を残したままファイルを保存しておくという第三の選択肢も取れなくはないが、その場合は問題箇所が訂正されるまで全ユーザがsudoコマンドを使用不可能な状態に置かれるので、可能な限り避けるべきである。
