sudoersファイル
Linuxでは
- /etc/sudoers
FreeBSDでは
- /usr/local/etc/sudoers
に存在する設定ファイル。
この設定ファイルを変更して、sudoできるユーザや特定のコマンドを設定できる。
sudoersに文法ミスなどで誤った設定を記述した場合、sudoできなくなる可能性がある。
このファイルは直接編集すると危険なのでvisudoコマンドを通して編集する。
$ visudo
visudoではviが起動されてsudoersを編集するが、
コマンドの終了時にファイルの文法をチェックして問題があれば警告を出して
再度の変更を促し、誤った変更を破棄する。
sudoersの書式
基本的に下記のような形で設定する。
# who where = (as_whom) what
user1 ALL = (root) /sbin/service httpd start
この記述で
ユーザwhoが、ホストwhereで、権限as_whomで、コマンドwhatを実行できる。
who
ユーザ名またはグループ名を記述する。
カンマを使ってユーザ名のリストにすることもできるが、1行に1つのユーザを追記する人が多い気がする。
グループ名を指定する場合は、グループ名の前に'%'をつける。
%wheel ALL = (ALL) ALL
where
ホスト名またはIP アドレス、またはネットワークアドレス、またはネットグループ名をコンマ区切りにしたリスト。
sudoersを複数のマシンで簡単に共有して使いたい場合は、'ALL'を記述する。
user01 work1,work2 = (ALL) ALL
%admin ALL = (root) ALL
as_whom
誰の権限で実行が可能かを記述する。
ALLで全員の権限での実行を可能にする。
指定がない場合はデフォルトで'root'が指定されたことになる。
例えば
user01 ALL = (postgres) psql
と記述した場合、user01はpostgresの権限でpsqlコマンドを実行できる。
user01$ sudo -u postgres psql
what
絶対パスで指定したコマンドを、カンマ区切りのリスト形式で記述する。
引数を指定した場合、指定された引数以外の引数でコマンドを実行することは出来なくなり、
引数を指定しない場合、任意の引数で実行できる。
## /sbin/service/httpd stop は実行できない
user01 ALL = (ALL) /sbin/service httpd start
## /sbin/service/httpd start
## /sbin/service/httpd stop
## 両方とも実行できる
user01 ALL = (ALL) /sbin/service httpd
参考資料
より詳細を調べたい場合は適宜man sudoersで。
Man page of SUDOERS
http://linuxjm.sourceforge.jp/html/sudo/man5/sudoers.5.html