sudoの設定ファイルについて
sudoersで出てくる設定
root ALL=(ALL) ALL
sudoコマンド利用時にでくわすこいつが気になったので調べてみました。
ユーザ設定の基本構造は、
who where = (as_whom) what
[誰が どのホストで = (誰に変身して) 何を]
とのことです。
(man sudoers(5)デフォルトの sudo 用セキュリティ・ポリシー・モジュールより)
who
これは権限を与える対象のユーザーやグループを指します。
例えば、あるユーザーに対して何らかの設定を行いたい場合は
hoge ALL = (ALL) ALL
グループの場合は
%hoge_group ALL = (ALL) ALL
となります。
where
コマンドを実行するホストを設定することができます。
as_whom
変身の対象となるユーザー・グループを指定することが出来ます。
ユーザー:グループ
のように記述し、カンマで区切ることで複数のプロパティを設定可能です。
hoge ALL = (root, bin : operator, system) ALL
例えばこのように指定することで
[hoge]$ sudo -u bin -g operator /bin/kill
のようにoperatorグループに所属したbinユーザーとして/bin/killコマンドを実行することが可能となります。
what
実行を許可するコマンドのパスを指定する。
デフォルトではsudoコマンドを実行する際、現在のユーザーのパスワードを求められるがNOPASSWDオプションにより省略できます。
例えば、パスワードを指定していないhogeユーザーに権限を与える際、
# パスワードを求められるので実行出来ない
ALL = (ALL) ALL
# パスワードを求められないので実行可能
ALL = (ALL) NOPASSWD: ALL
となる。
例)パスワードを指定せずに作成したユーザーにadduserを実行する権限を与えてみる
ユーザーの追加
# adduser hoge
sudoersへの設定の追加(visudoコマンドで編集)
.
.
hoge ALL=(ALL) NOPASSWD: /usr/sbin/adduser
.
adduserコマンドがsudoで使用可能になる
[hoge]$ sudo adduser genki
終わりに
$ sudo <command>
でとにかくスーパーユーザーとして実行するものだと思っていましたが、sudoの本来の目的はあくまで現在のユーザーを他のユーザーやグループに変身してコマンドを実行するのが目的であると理解しました。
Discussion