sudoersの【ユーザー名】 ALL = (ALL:ALL) ALLとは一体何表してんのかってことでman sudoersを読んでみた。
(全文読むのは結構時間がかかる上に、知識がないと上の方は恐らく読むことすらできない。わからないけど読みたい方は【Runas_Spec (どのユーザやグループに変身できるか)】あたりから読み始めることをお薦めする。)
【ユーザー名】
ここはユーザー名を指定。
%付きにするとグループ名
最初のALL
ホストに対する許可。
ホストに対するエイリアスを書かない限りALL指定で問題ない。
ホスト指定を書かなくてはならないような人は間違いなく趣味人ではなくプロのネットワーク管理者だと思われ・・・
()内の左のALL
どのユーザーになれるか。
当たり前だがALLだと誰にでもなれる。
ここに個々人のユーザー名を書くとその人と同じ権限を得られる。
(つまるところサブの管理人になりたければ羅列して書いたらいいんじゃないかな。10人をまとめるグループリーダーとしてその誰しもの権限はあげるけど、管理者の権限までは持てない的なユーザー。)
()内の右のALL
上記のグループ版。
(この:(コロン)以降書かなかった場合はグループ権限は自由に変えることはできない。それがALL = (ALL) ALL。グループのみを変更したい場合はALL = (:ALL) ALLってな感じでコロン付きで書く。)
()外のALL
実行できるコマンド。
ちまちまとコマンドを羅列して実行できるコマンドを指定するか、本文には書けないが正規表現っぽい(sudoers内のみで定義されてる)ものを使って指定する。
ALLは当然どんなソフト・スクリプトも実行可能。
因みに全てに言えることだが複数指定したければ「,」で区切る。
例
こんな人たちが使ってるコンピュータがあったとして・・・
| name | group |
|---|---|
| admin | sudo, Admin, TeamA, TeamK |
| subadmin | TeamA, TeamK |
| hoge | TeamA |
| fuga | TeamA |
| foo | TeamK |
| bar | TeamK |
-
%sudo ALL = (ALL:ALL) ALL← sudoersに初めから書いてあることは当然といえば当然 -
subadmin ALL = (hoge, fuga, foo, bar : Admin) ALL← 実行する際はsudo -uでユーザーを指定 -
hoge ALL = (:TeamK) ALL← TeamKのスペースも何やらできる
最後に
てな感じです。
例はいろいろ考えたけど、趣味でサーバーいじってる程度だから正直わかりません。
後は注意事項として、sudoersファイルを編集する際はどんなにトチ狂っても/etc/sudoersを直接編集しないこと!!
chmod +wとか最悪。
変更後rm -rf /を実行するんだったらしてもいいかもしれないけど、必ずvisudoを使って編集すること。
まとめ
who where = (as_whom) what
[誰が どのホストで = (誰に変身して) 何をするか]
だそうです。
上記はmanからの引用。
追記(2015/05/13)
具体例がなかったので追記