sudoを利用すると、そのユーザーはroot権限でコマンドを実行する事ができます。
また、sudo を利用すると一般ユーザーが su で root になるよりも、以下のメリットがあります。
1.root のパスワードを一般ユーザーに公開しなくてもいい
2.sudo を利用した場合、ログにコマンドが記録される
sudoの設定
sudo の設定ファイルは /etc/sudoers ですが、直接編集することはせず、編集用のコマンド visudo を利用します。このコマンドで編集することにより書式のチェックも行われます。
visudo
sudoの基本設定
sudo で最も一般的なユーザーやグループを指定し、全権限でコマンドを実行できるようにします。
sudo の書式は、[ユーザーorグロープ] [接続元] = [権限] [コマンド] です。
指定ユーザーに すべての権限でコマンドを実行可能にする
UserName ALL=(ALL) ALL
指定グループにすべての権限でコマンドを実行可能にする
%GroupName ALL=(ALL) ALL
すべての権限だと、他ユーザーの権限でコマンドを実行できます。root 権限のみでコマンドを実行可能にするには以下のようにします。
UserName ALL=(root) ALL
sudo の利用方法
sudo が設定されていれば、一般ユーザーは以下のように root などの権限でコマンドを発行できます。
sudo コマンド発行後には自身のパスワードを入力するよう求められます。
sudo /etc/init.d/httpd restart
エイリアス機能
[ユーザー] [接続元] [権限] [コマンド] をエリアス機能を利用できます。
エリアスを利用することにより、複雑な設定をした場合でも見通しが良くなります。
それぞれのエイリアス定義方法と利用例を示します。
ユーザーエリアス
User_Alias ADMIN = User1, User2, User3
接続元エリアス
Host_Alias LOCAL = 192.168.1.0/24
Host_Alias ADMINNET = 192.168.100.1, 192.168.100.2
権限エリアス
Runas_Alias USER= root ,tomcat
コマンドエリアス
Cmnd_Alias ADMINCMD = /etc/init.d/httpd
Cmd_Alias SHOUTDOWN = /sbin/shutdown, /sbin/reboot, /sbin/halt
エリアスを利用した設定
ADMIN ADMINNET = (root) ALL
ADMIN ALL = (USER) ADMINCMD
例外設定
実行時にパスワードを求めない
エリアス ADMINCMD のコマンドを実行でき、かつ、パスフレーズを要求しない。
ADMIN LOCAL = (ALL) NOPASSWORD:ADMINCMD
指定のコマンドを実行させない
エリアス SHUTDOWN に設定されたコマンドは、実行不可とする。
ADMIN ALL = (ALL) ALL,!SHUTDOWN
コマンドオプション
いくつかコマンドオプション表記します。
root シェルを取得
sudo -s
sudo の設定情報を確認する
sudo -l
最近のコメント