LoginSignup
74
78

More than 5 years have passed since last update.

visudoでsudo権限の設定をする際のメモ(sudoersの'ers'って何の略なんですかね?)

Last updated at Posted at 2014-10-14

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

74
78
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
74
78