0

sudoersファイルについて。

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 https 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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です