sudo の 使い方

あるユーザが別ユーザのコマンドを所有者の権限で実行するときのsudo設定例です。

具体的には、test1ユーザがtest2ユーザ所有の/home/test2/hello.sh を実行する例を記述しています。

環境

  • CentOS 5.3(Linux)
  • sudo 1.6.9p17-3.el5_3.1

test2ユーザのコマンド作成

テスト用シェルの作成。シェルはtest2ユーザのみ読み/書き/実行ができるように権限設定します。

[test2@linuxserver ]$ vi /home/test2/hello.sh
[test2@linuxserver ]$ cat /home/test2/hello.sh
#!/bin/sh
echo Hello
id
[test2@linuxserver ]$ chmod u+rwx,go-rwx /home/test2/hello.sh
[test2@linuxserver ]$ ls -al /home/test2/hello.sh
-rwx------ 1 test2 test2 24  4月 21 17:04 /home/test2/hello.sh
[test2@linuxserver ]$ /home/test2/hello.sh
Hello
uid=10011(test2) gid=10012(test2) 所属グループ=10012(test2)
[test2@linuxserver ]$

sudoの設定

rootユーザで、sudoの設定をします。
test1ユーザが、test2ユーザの権限でパスワードなしで/home/test2/hello.shを実行する設定をします。

# visudo
~~~~~~ 以下のように追記  ~~~~~~
test1 ALL=(test2) NOPASSWD: /home/test2/hello.sh
# 

sudoの確認

設定したsudoが反映されているかtest1ユーザで確認します。

[test1@linuxserver ]$ sudo -l
User test1 may run the following commands on this host:
    (test2) NOPASSWD: /home/test2/hello.sh
[test1@linuxserver ]$

テストシェルの不可視確認。

test1ユーザからシェルが見えないことを確認します。

[test1@linuxserver ]$ ls -al /home/test2/hello.sh
ls: /home/test2/hello.sh: 許可がありません
[test1@linuxserver ]$

sudo実行確認

sudoで、test2ユーザ所有の/home/test2/hello.shが実行できることを確認します。

[test1@linuxserver ]$ sudo -u test2 /home/test2/hello.sh
Hello
uid=10011(test2) gid=10012(test2) 所属グループ=10012(test2)
[test1@linuxserver ]$

おまけ1

visudoの結果は、/etc/sudoers に記録されます。
ただし、このファイルはviコマンド等で編集は不可です。viコマンド等で編集してしまうとロックがかからないので破壊される危険があります。必ず、visudoコマンドで編集しましょう。

おまけ2

sudoの記録は、/var/log/secure に以下のように記録されます。

sudo:    test1 : TTY=pts/0 ; PWD=/home/test1 ; USER=test2 ; COMMAND=/home/test2/hello.sh

-以上-


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-04-21 (火) 17:32:13 (3374d)