15.4. sudo

特定のユーザや特定のグループに所属するユーザが、スーパーユーザ権限(あるいはそれ以外の特定ユーザの権限)でいくつかのコマンド操作を行うことを許可する sudo というプログラムがあります。

sudo は、あらかじめ、userAというユーザに対してスーパーユーザ権限で実行できるコマンドの一覧を作成しておき、実行する際には、userAというユーザであるかどうかを認証するという形になります。

sugksuexec などでは、root のパスワードが必要でしたが、sudo では、認められたユーザ本人であるかを確認するので、root のパスワードは不要になります。

また、コマンドを制限できるので、誤操作の危険性を減らすことができます。

利用頻度の高いコマンドなどを登録しておくと便利です。

15.4.1. visudo での設定

root権限で visudo コマンドを実行し、ユーザ名、ホスト名[4]、許可するコマンドなどを設定します。

visudo コマンドについては、jman visudo で、また、書式については、jman sudoers で確認してください。

visudo コマンドを実行すると、vi というエディタが設定ファイル(/etc/sudoers)を開いた状態で起動します。

visudo では vi 以外のテキストエディタも使えます。

GNOMEテキスト・エディタ(gedit) で編集するには VISUAL=gedit visudo のように、また、Emacs で編集するには VISUAL=emacs visudo のように、

# VISUAL=エディタのコマンド visudo

という形で指定します。

visudo コマンドでは、エディタ起動時、エディタ終了時に、文法のチェックなどが行われるようになっているので、他のエディタを用いる場合でも、visudo コマンドを用いてください。

15.4.1.1. ユーザごとの設定

次のように記述すると userA は localhost というホストにおいて、sudo を利用して root権限で /usr/bin/apt-get update というコマンドを実行出来るようになります。

userA  localhost = /usr/bin/apt-get update

例15.1 visudo でのユーザごとの設定例

18〜19行のところに、ユーザーごとの設定の部分があるので、その次の行あたりに書いておくとよいでしょう。

# User privilege specification
root    ALL=(ALL) ALL

# for user : userA
userA  localhost = /usr/bin/apt-get update

行頭に # をつけることでその行を無効にできるのでコメントを書いておきます。ひらがなや漢字など日本語は用いないほうがよいでしょう。


この場合、update という部分も書いているので、/usr/bin/apt-get upgrade/usr/bin/apt-get install/usr/bin/apt-get remove など、update 以外は実行できません。

install や upgrade や remove なども認めるのであれば、

userA  localhost = /usr/bin/apt-get upgrade
userA  localhost = /usr/bin/apt-get install
userA  localhost = /usr/bin/apt-get remove

のようにそれぞれ指定するか、

userA  localhost = /usr/bin/apt-get

のように apt-get 以降は指定しない形で書きます。

15.4.1.2. グループごとの設定

ユーザ一人一人についてではなく、グループ単位での設定も可能です。

補助グループなどを利用すると便利です。グループについては、ユーザ登録 を参照してください。

power というグループに所属するユーザが /sbin/shutdown コマンドを実行出来るようにするには次のように記述します。

%power  localhost = /sbin/shutdown

先頭のユーザ名だったところを %グループ名 に変えるだけで、あとの書式は同じです。

例15.2 visudo でのグループごとの設定例

21〜22行のところに、グループごとの設定の例の部分があるので、その次の行あたりに書いておくとよいでしょう。

# Uncomment to allow people in group wheel to run all commands
# %wheel        ALL=(ALL)       ALL

# for group : power
%power  localhost = /sbin/shutdown

パスワードを用いた認証を省略するように設定することもできます。jman sudoers で "NOPASSWD と PASSWD" の部分などを読んでください。

vi について

vi は、一般的なエディタとは操作方法が異なりますが、Unix,Linux では、Emacs と並んで人気のある有名なエディタの一つです。

Vine Linux では vi を改良した VIM(VIsual editor iMproved) があり、vim という名前のパッケージになっています。

慣れるまでには多少時間がかかるかもしれませんが、チュートリアルを体験してみるとよいでしょう。

$ vimtutor ja

とすると日本語でのチュートリアルが起動します。

$ vimtutor en

とすると英語でのチュートリアルが起動します。

15.4.2. sudo -l での確認

一般ユーザは sudo -l とすると自分がどんなコマンドを実行できるか確認できます。

userA で確認してみると次のようになります。

$ sudo -l
Password:

root のパスワードではなく、userA 自身のパスワードを入力します。

User userA may run the following commands on this host:
    (root) /usr/bin/apt-get update
		

二行目以降で、root権限で実行できるコマンドが表示されます。

sudo でのコマンドの実行が認められていない場合には、パスワード入力のあとに

Sorry, user test may not run sudo on localhost.

のようなメッセージが表示されます。

15.4.3. sudo でのコマンドの実行

実際に実行するには次のようにします。

$ sudo /usr/bin/apt-get update
Password:
		

root のパスワードではなく、userA 自身のパスワードを入力します。



[4] 現在利用しているホストの名前は hostname コマンドで確認出来ます。