はじめに

sudoを実行できるユーザ、コマンドを設定できる/etc/sudoersを編集するには、visudoコマンドを使う。
sudoersファイルは権限440であるとともに、編集ミスをすると一切sudoできなくなるため、構文チェック機能付き編集ツールのvisudoが必要となる。

書式

/etc/sudoersファイルの書式は

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

ユーザ

sudo権限を付与したいユーザを書く。

ホスト

複数のホストで同じsudoersファイルを使用することを前提としている。1つのホストのみ考慮すればよいなら、「全ホスト」を表す「ALL」を指定すればよい。

参考:http://linux-training-diary.blogspot.jp/2012/01/etcsudoers.html

権限

どのユーザ(権限)であればで動くか。
つまり sudo -u ユーザ コマンド のユーザ部分に誰を設定しなければならないか。
ALLであれば誰でもOKだし、特定のユーザが設定されていればそれ以外のユーザを指定してsudoしようとしても実行できない。

コマンド

sudoで実行できるコマンドを書く。

よく使用する設定に、wheelグループに属するユーザはすべてのコマンドをsudoできるというものがある。
※グループの場合は、グループ名の前に % を入れる。

%wheel        ALL=(ALL)       ALL

パスワードを不要にする場合は

%wheel        ALL=(ALL)       NOPASSWD:ALL

その他にもユーザやコマンド部分にalias機能が使え、以下のような設定ができる。

User_Alias ADUSER = admin
Cmnd_Alias ADCMND = /etc/rc.d/init.d/apache, /etc/rc.d/init.d/tomcat
ADUSER ALL = (root) NOPASSWD: ADCMND

sudoersよりもsudoers.dを使う方がカスタマイズ部分が明確でスマート

しかし、sudoersファイルを編集するよりも/etc/sudoers.d/以下にカスタマイズ用ファイルを置く方が、カスタマイズ部分が明確にわかるという点でより良い。
/etc/sudoers.dディレクトリ以下のファイルはsudoersファイルの #includedir /etc/sudoers.d によってsudoersから読み込まれ、sudoersとして有効になる。

/etc/sudoers.d以下も直接vi等で編集するのではなく、文法チェックが行われるvisudoコマンドを使う。

visudo -f /etc/sudoers.d/ファイル名

visudo -fで作成したファイルの権限は自動で440となる。

# visudo -f /etc/sudoers.d/wheel

%wheel        ALL=(ALL)       NOPASSWD:ALL
$ sudo ls -l /etc/sudoers.d/wheel
-r--r-----. 1 root root 43  6月 29 13:00 2016 /etc/sudoers.d/wheel

sudoers設定の確認

現在のユーザのsudoers設定を確認するには

sudo -l  

※sudo実行時に聞かれるパスワードはrootのパスワードではなく、ユーザのパスワード。