はじめに
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のパスワードではなく、ユーザのパスワード。