sudoの設定方法

sudoコマンドについて

sudoとは

sudoは、UNIX系OSにおいてユーザが別のユーザの権限レベル(デフォルトではroot権限)でプログラムを実行するためのコマンドです。
あるコマンドの実行時に、別ユーザ(rootを含む)のパスワードを教えることなく、実行権限を適用させることを可能になります。

suコマンドの代わりに使われることが多く、完全なroot権限は不要だが運用上で一部必要になる場合に利用します。


sudoコマンド形式


sudo [オプション] [コマンド]
 : オプション
   -l  そのユーザーに対して許可されたコマンドを表示する
   -u  root以外のユーザーで実行するときに指定
   -s  環境変数 SHELLで指定されたシェルを実行する

sudoの読み方

sudoコマンドの呼び方は「エスユードゥ」や「すどぅー」など様々あります。

suコマンドを「エスユー」と呼ぶ人は「エスユードゥ」と呼ぶ傾向にあります。

なお、suコマンドは「substitute user」の略です。「super user」や「switch user」と覚えてしまう人が多くいます。


sudoの設定

sudoersの編集

sudoコマンドの設定ファイルは「/etc/sudoers」です。

設定ファイルを編集するために「visudo」という専用のコマンドが用意されています。

エディタなどで直接「/etc/sudoers」ファイルを編集した場合、設定ミスによって大きなトラブルが起こる可能性があります。


# visudo

※visudoコマンドではviエディターでファイル編集操作を行います。


sudoのユーザ権限を設定する

sudoでユーザが実行可能なコマンドを下記の形式で定義します。


ユーザ ホスト=(権限) コマンド

各項目の意味は下記の通りです。

項目 意味
ユーザ sudo可能なユーザの設定。グループを設定する場合は「%」を先頭につけます。
ホスト ホストに対する許可設定です。(通常は ALL でよい)
(権限) sudoされるユーザ名です。ALLならば、全てのユーザ権限(root権限)を使うことができます。
コマンド 利用できるコマンド名を指定します。ALLならば、権限で設定したユーザが実行可能な全てのコマンドを利用できます。

例えば下記のような設定であれば、user01は「すべての接続元(ALL)」から「全ユーザ権限(ALL)」で「全コマンド(ALL)を実行可能」という意味になります。

user01はsudoコマンドを用いて、システム上の全ての操作を行えるようになります。


root    ALL=(ALL) ALL
user01  ALL=(ALL) ALL

パスワードなしでsudoを実行可能にする。

sudoコマンド実行時にパスワードを求めないようにするには次のように記述します。


user01  ALL=(ALL) NOPASSWD: ALL

sudoで毎回パスワード尋ねる。

sudo コマンドを実行する時に毎回パスワードを求めるようにするには次のように記述します。


Defaults timestamp_timeout = 0

timestamp_timeoutのデフォルト値は「5」であり、パスワードを入力すると「5分間」は入力を求められません。

値を「0」にすることで毎回パスワードを求められるようになります。


rootパスワードでsudoを実行する。

sudoコマンド実行時に、対象となるユーザのパスワードではなく、rootのパスワードを尋ねるように設定するにはDefaultsに「rootpw」を記述します。


Defaults timestamp_timeout=0,rootpw

特定コマンドのみ許可する

sudoで特定のコマンドのみ実行を許可すること場合、次のように記述します。


user01   ALL=(root)   /sbin/reboot,/sbin/shutdown

コマンドに引数を使用させたくない場合は「""」を記述します。


user01 ALL = (root) /sbin/reboot ""

エイリアス機能

「ユーザ ホスト=(権限) コマンド」のそれぞれの項目にはエイリアス機能を利用できます。

エリアスを利用することにより、複雑な設定をした場合でも可読性を保てます。

エイリアス定義方法は以下の通りです。なお、エイリアス名は必ず大文字で定義します。


ユーザーエリアス


User_Alias ADMIN = user01, user02, user03

接続元エリアス


Host_Alias ADMINNET = 192.168.24.5, 192.168.24.10

権限エリアス


Runas_Alias USER= root ,tomcat

コマンドエリアス


Cmd_Alias ADMINCMD = /etc/init.d/httpd
Cmd_Alias SHOUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt

上記エリアスを利用した設定は以下の通りです。


ADMIN ADMINNET = (root) ALL
ADMIN ALL = (USER) ADMINCMD

関連ページ