やったもん勝ち

主にプログラミングのこと。生産性向上の某とかも。

sudoers.dファイルでコマンドのオプションはどこまで制限できるのか

sudoers.dで指定する、許可されるコマンドは、どこまで寛容なのか。 一字一句そのコマンドじゃなきゃいけないのか。 それとも、オプションだとかパスはよしなに指定させてくれるのか。 検証する。

# rootになっておく  
$ sudo su -
# まずは、現在のユーザー一覧を確認
$ ll /home/
合計 2
drwx------. 5 vagrant   vagrant   4096  1月 12 10:52 vagrant

# userを追加
$ useradd test-user

# ユーザー追加されたのを確認
$ ll /home

# パスワードを設定
$ passwd test-user

# test-userにログイン
$ su test-user

# sudoが必要なコマンドを実行してみます
$ yum install -y git
Loaded plugins: fastestmirror
You need to be root to perform this command.

# rootに戻ります
$ exit

# sudoers権限をいじります
$ visudo

# 下記を追加
# test-userに root権限でのyumの使用を許可します。
# /bin/yumじゃなくていいのかな?
# yumのオプションは何でも使えるのかな?
test-user   ALL=(root)     yum


編集を抜けると
visudo: >>> /etc/sudoers: syntax error near line 121 <<<
What now?
Options are:
  (e)dit sudoers file again
  e(x)it without saving changes to sudoers file
  (Q)uit and save changes to sudoers file (DANGER!)

What now? e
と、
Qをやってしまったが最後、二度とsudoを使えなくなってしまいました。
rootにログインすることも叶わなかった。。。
VM立ち上げ直した。。。


$ visudo 
# 以下のように追加
test-user    ALL=(root)      NOPASSWD: /bin/yum
:wqでちゃんと抜けられました。

# test-userにログイン
$ su test-user

# 権限を確かめる
$ sudo yum install -y tig
->OK! yumのコマンドなら全部使えるっぽい。
権限をもう少し絞ってみます。

# rootになる
$ exit

$ visudo
# 以下の設定に変更
test-user    ALL=(root)      NOPASSWD: /bin/yum install -y tig

# test-userになる
$ su test-usre


# 確かめる
$ sudo yum install -y tig
出来ました。

# 他のコマンドは使えない?
$ sudo yum install -y tree
ダメでした。

# どこまで使えるのか
$ visudo
# 次のように設定
test-user    ALL=(root)      NOPASSWD: /bin/yum install
#これでyum installなら何でも使えるかな?

# 試してみます
$ su test-user
$ sudo yum install -y tree
↓
なんかパスワード求められた。。。
なんかダメみたいだ。
なので、方法としては、
完全に決め打ちのコマンドを一つずつ書くか、
オプションは指定しないで、実行ファイルのパスだけを書くか。
のどちらかっぽい。
コマンドの処理の仕方とかもっと深く知れば「はいはい、そりゃそうだ」って言えるようになる気がする。