2
0

sudoできるコマンドの制限を行う

Posted at

概要

sudoコマンドにより、コマンドの実行単位でroot権限を与えることができます。
しかし、誰でもsudoでコマンドを実行できてしまうとセキュリティ上のリスクなどがあります。
本記事では/etc/sudoers.d/を編集することで特定コマンドのみsudoが利用できるようにする方法を記載します。

手順

確認用のユーザを二人作成します。inu はどのコマンドに対してもsudoできるようにしますが、neko には一部のコマンドのみsudoできるようにします。

$ sudo useradd neko
$ sudo useradd inu
$ cat /etc/passwd

neko:x:1005:1006::/home/neko:/bin/bash
inu:x:1006:1007::/home/inu:/bin/bash

passwordを設定します。

sudo passwd inu
sudo passwd neko

inuユーザに切り替えます。

sudo su - inu

/etc/shadowというroot以外は見れないファイルを表示しようとするとエラーになります。

cat /etc/shadow
cat: /etc/shadow: Permission denied

sudoで実行しようとすると、inuユーザはそのままではsudoが使用できないためエラーとなります。

$ sudo cat /etc/shadow

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for inu: 
inu is not in the sudoers file.  This incident will be reported.

そこでinuwheelグループに追加します。wheelグループは管理者用のグループで
所属していれば、sudoが使えます。

$ sudo usermod -aG wheel inu
$ id inu
uid=1006(inu) gid=1007(inu) groups=1007(inu),10(wheel)

再度実行すると表示できます。inu はsudoできるようになりました。

$ sudo cat /etc/shadow
[sudo] password for inu: 
neko:$6$JgG4FEzR$qS5shTmSRELEOouzpKxU8OnekhYQt0x9Lk57m5GK8o7fYpIT/Hq652cjK6Lh5IN4dKWWOqK4Gp6WGxBX59ghc/:19806:0:99999:7:::
inu:$6$6G50Hray$nTLrHZ2XCqI7NDcPHyKPkG33Bf3P3SuZes4GvUj0sYXjIEkei4Lvjpj8UavlQvd5YzSdfKuty.BcB0L4O6wGi0:19806:0:99999:7:::

では次にnekoに特定のコマンドのみsudo実行ようにします。
/etc/sudoers.d以下にファイルを作成します。visudosudoersを編集するためのコマンドです。

$ sudo visudo -f /etc/sudoers.d/allow_command

viが開いたら、以下のように記載します。
ここではcat /etc/shadowのみ実行できるようにします。

/etc/sudoers.d/allow_command
Cmnd_Alias ALLOW_SUDO = /bin/cat /etc/shadow
neko ALL=ALLOW_SUDO

nekoに切り替えてから、sudo cat /etc/shadowを実行すると
エラーなく実行できます。

$ sudo su - neko
$ sudo cat /etc/shadow
neko:$6$JgG4FEzR$qS5shTmSRELEOouzpKxU8OnekhYQt0x9Lk57m5GK8o7fYpIT/Hq652cjK6Lh5IN4dKWWOqK4Gp6WGxBX59ghc/:19806:0:99999:7:::
inu:$6$6G50Hray$nTLrHZ2XCqI7NDcPHyKPkG33Bf3P3SuZes4GvUj0sYXjIEkei4Lvjpj8UavlQvd5YzSdfKuty.BcB0L4O6wGi0:19806:0:99999:7:::

ですが、allow_command以外のコマンドでsudoしようとするとエラーになります。
nekosudoできるコマンドに制限が出来ました。

$ sudo useradd taro
Sorry, user neko is not allowed to execute '/sbin/useradd taro' as root

参考資料

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0