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