08 May 2012

/etc/sudoers の書き方を調べてみた。

一部コマンドを管理ユーザー以外にも開放したい場合があったので。 たとえば、 Ramdisk をいじるときに mountumount が必要だったり。

基本的な書式は

ユーザー名  ホスト名=(誰として) コマンド名

という風になっている。

例えば、

hoge fugahost=(piyo) /bin/cp

というのは

ユーザー hoge が、ホスト名 fugahost 上で、ユーザー piyo として cp コマンドを実行することを許す、 という意味になる。

ホスト名の部分は具体的にホスト名を指定する使い道はあまりなさそうなので ALL にしておけばいいでしょう。

(誰として)の部分も、普通は root になりたいはず。

上記の例のように hoge さんが

sudo -u piyo cp file1 file2

とできてもうれしくないし。。

なので、 (root) と具体的に指定してもいいけど、ここも (ALL) にしとけばいいでしょう。

ユーザー名 の部分はグループ指定もできるようだ。グループ指定は、頭に % をつける。

複数指定したいときはコンマをつかって並べる。

だから、実質的にやりたいことは

%hogegroup ALL=(ALL) /bin/mount, /bin/umount

みたいな書き方になる。 hogegroup に所属するユーザーが mountumount を実行できる。

さらに man sudoers を読んでいるとエイリアス指定を使って書くこともできるみたい。 以下のような感じ。

# User alias specification
User_Alias      HOGEPIYO_GRP = hoge, piyo
# Cmnd alias specification
Cmnd_Alias      ALLOWED_CMD = /bin/mount, /bin/umount

HOGEPIYO_GRP ALL=(ALL) ALLOWED_CMD

ついでに NOPASSWD: タグをつけるとパスワード入力を省ける。

HOGEPIYO_GRP ALL=(ALL) NOPASSWD: ALLOWED_CMD

ちなみに /etc/sudoers の編集は直接エディタでやらずに visudo コマンドで。 文法チェックをしてくれます。



blog comments powered by Disqus