UnixPower on Networking
  http://www.unix-power.net/

 
  Top - Solaris8 - Solaris Sudo



このコマンドは一般ユーザー権限で実行できないコマンドを特定のユーザーだけには許可したいけれども、root 権限を与えたくないような場合に使用します。


OSにコマンドが無い場合はインストールしましょう。まず、 http://www.courtesan.com/sudo/dist/ からsudo.tar.gzをダウンロードします。


# tar zxvf sudo.tar.gz
# cd sudo-1.6.7p5
# ./configure
# make
# make install 


sudo を使うには /etc/sudoers という設定ファイルにエントリーしなくてはいけません。しかし、/etc/sudoers は vi などで直接編集してはいけません。 /etc/sudoers を編集するためのvisudoコマンドを使います。


# /usr/local/sbin/visudo


すると、環境変数EDITORで設定しているエディタが開きます。


# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file. 
# # Host alias specification # User alias specification # Cmnd alias specification # Defaults specification # User privilege specification root ALL=(ALL) ALL # Uncomment to allow people in group wheel to run all commands # %wheel ALL=(ALL) ALL # Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL


sudoers ファイルはこんな感じです。ファイルの中に1行だけコメントアウトされていない行があります。


root ALL=(ALL) ALL


これは「root が全てのホスト上で、 全てのユーザーとして全てのコマンドを実行できる」という意味になっています。では、例えば、ユーザー taro が全てのホストで root 権限で全てのコマンドを使用可能 という設定をしてみます。


taro	ALL=ALL


この一行を書き込んで保存するだけです。(ユーザーを指定しなかった場合は、「root 権限で」ということになります。)保存するときに sudoers は書式が間違っていないか自動的にチェックします。


では、実験してみましょう。まず、root しか見ることのできないディレクトリを作ってユーザー taro で見れるかどうか確認してみます。


taro$ sudo ls -l
Password: 


ここでパスワードの入力を要求されますが、root のパスワードではなくユーザー taro のパスワードを入力します。一度 sudo を使うとそれからデフォルトでは5分間はパスワードを要求されることなく、 sudo を使うことができます。


またsudoers に次の1行を加えることで単独にログをとることができます


Defaults logfile=/var/log/sudolog


■具体的な使用方法


ここでは例を挙げながらもう少し詳しく解説していきます。


●グループ「nsl」に属するユーザーは root 権限で全てのホストで全てのコマンドを実行できる

%nsl	ALL = ALL


●ユーザー hanako は全てのホストでパスワードなしで shutdown を実行することができる

hanako	ALL = NOPASSWD: /sbin/shutdown


●ユーザー taro は全てのホストで hanako として全てのコマンドを実行することができる

taro	ALL = (hanako) ALL

この場合、以下のようにすると hanako の権限で実行したことになります。

taro$ sudo -u hanako コマンド


●ユーザー hanako はホスト mail 以外で全てのコマンドを実行することができる

hanako	!mail = ALL


エイリアス(別名)の設定もすることができます。エイリアスには4種類あります。

  • User_Alias  (ユーザー)
  • Runas_Alias (権限)
  • Host_Alias  (ホスト)
  • Cmnd_Alias  (コマンド)


例えば、sudoers を以下のように編集します。


# User alias specification
User_Alias WEBMASTERS = taro, hanako

# Runas alias specification
Runas_Alias OP = root, operator

# Host alias specification
Host_Alias SERVERS = www, dns, mail

# Cmnd alias specification
Cmnd_Alias REBOOT = /usr/bin/reboot

WEBMASTERS SERVER = (OP) REBOOT 


とすると、「ユーザーWEBMASTERS(taroとhanako)はホストSERVER(www, dns, mail)上で、ユーザーOP(rootとoperator)としてコマンド REBOOT(/usr/bin/reboot)を実行できる」という設定になります。




 

 Copyright(C) 2003-2015 UnixPower on Networking All rights reserved.