sudoで特定のコマンドだけ許可する方法
wheelグループでroot権限のすべてを許可することはできないけど、一部のコマンドに限って許可したい。
個人ではなく、組織でサーバ管理をしていると、そんなニーズって結構ありますよね。今日はそんなTipsをご紹介します。
sudoersの基本構文
sudoersの編集には、「visudo」コマンドを使います。
ここで見てみると、結構サンプルの記述が書いてあります。
これはwheelグループにすべての操作を許可するもの。
## Allows people in group wheel to run all commands %wheel ALL=(ALL) ALL |
これはusersというユーザーに、この端末内でのシャットダウン権限を与えるもの。
## Allows members of the users group to shutdown this system # %users localhost=/sbin/shutdown -h now |
基本構文は、次のようになっています。
[ユーザー名orグループ名] 許可対象=(誰のロールで)コマンド (誰が・どこで・誰の代わりに・何を) |
Apacheの再起動を許可する例
さてでは例として、
「ユーザーhogeが、サーバdaceloでApacheの再起動だけできる」
という状態を実現してみましょう。
この場合は
hoge dacelo=/etc/rc.d/init.d/httpd restart |
と書けばOK。例文にあるようなlocalhost=では動きませんでした。
実際にやってみると…
[hoge@dacelo ~]$ sudo /etc/rc.d/init.d/httpd restart httpd を停止中: [ OK ] httpd を起動中: [ OK ]
はい、うまくいきました。
例ではホスト名を指定しましたが、LDAP連携とかしていないローカルアカウントでしたら、
hoge ALL=/etc/rc.d/init.d/httpd restart |
でも代わりません。
複数コマンドの許可
この例だと、restartしかできないので、他の引数は許可されません。
広告
[hoge@dacelo ~]$ sudo /etc/rc.d/init.d/httpd status ユーザー hoge は'/etc/rc.d/init.d/httpd status' を root として dacelo 上で実行することは許可されていません。すみません
断られてしまいました…。
statusの確認もできるようにしてあげましょう。
$ sudo visudo
hoge ALL=/etc/rc.d/init.d/httpd restart,/etc/rc.d/init.d/httpd status |
複数コマンドを許可したい場合は、カンマで区切って設定します。
[hoge@dacelo ~]$ sudo /etc/rc.d/init.d/httpd status httpd (pid 29837) を実行中...
はい、実行できるようになりました。
ちなみに今回は、引数まで含めて限定したコマンドとして許可しましたが、
$ sudo visudo
hoge ALL=/etc/rc.d/init.d/httpd |
として登録すると、httpdの引数指定すべてを許可できます。ケース・バイ・ケースですね。
複数ユーザーの許可
グループ名を指定することで複数ユーザーへの許可ができますが、もっと細かくユーザー単位で設定したい場合もあります。そんな場合は、コマンドと同様に、ユーザー名もカンマで区切ればOk。
$ sudo visudo
hoge,fuga ALL=/etc/rc.d/init.d/httpd restart,/etc/rc.d/init.d/httpd status |
これで、ユーザーhogeもユーザーfugaもhttpd restartができるようになりました。
Comments are closed.