それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

sudoersを変更する、よく使う設定例

sudoers を編集する前に。

sudoers は編集をミスすると大変なことになります。

visudo を使う。

/etc/sudoers を直接編集しないこと。visudo コマンドを使いましょう

sudoresのミススペル確認しましょう。

正しくは sudoers です。
sudores でググったらsudores が市民権を得たくらいにたくさんエントリがあって驚きます。cron(クロン)をクウロン・コロンと呼ぶくらいあり得ない。

@ITも間違ってる。魚拓

(%h)などを明示することで、sudoコマンド実行者に、どのサーバ上でどのユーザーから実行しようとしているのかを再認識させることができる。

sudoのパスワードプロンプトを変更する場合は、 sudoresに例えば以下のように記述する。
Defaults passprompt = "%u@%h Password: "

http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html

/etc/sudoersはrootでさえ変更不可。

/etc/sudoersはrootでさえ変更不可になっている。そのためchmodなど権限設定して書き直すこと散見された。chmodするとこれは危険。うっかり設定を間違えるとrootでさえなにも出来なくなる。rootをrootたらしめているファイルなのです。シンタックスエラーですら致命傷になります。

読み込み専用のファイルを無理矢理書き換えると危険。

#これは危険
chmod +w /etc/sudoers
vim /etc/sudoers

実際設定をミスって焦りまくっていた。で、どうするか?

rootが生きてたのでシングルユーザーモードで起動してファイルを修正して事なきを得た。
しかし、rootが使えなくなると手が出せない。ほかサーバーでmount して修正するしか無い。

で、記述ミスすると即死なので、どうするか

専用コマンドで編集します。

保存時にSyntaxCheckをして、ミスがあると反映させません。うっかりミスを防いでくれます。

$>sudo visudo 

を実行します。みたまんまコマンド。その目的に用意されたコマンド。中身はスクリプトではなくて、バイナリ。ちょっと意外だった。

vimで編集したい

# export EDITOR='/usr/bin/vim
# visudo 

visudoの書き方例。

sudoでパスワードを入れたら認証継続するようにする。
#Defaults    env_reset
#sudo の認証継続時間延長
Defaults    env_reset, timestamp_timeout=1440
sudoパスワードは毎回必ず
Defaults    timestamp_timeout = 0

認証継続を無効にして、毎回必ずパスワードを求める。

adminグループにsudoを認める。
%admin ALL=(ALL) ALL

%wheel ALL=NOPASSWD: ALL # wheel は sudo にパスワードを要求しない

%XXXXXのように、%指定したらグループへの指定になる。

ユーザーをadminに追加する。

ユーザーtakuya_1stがadminグループに所属するようにする

gpawssd -a takuya_1st admin

これで takuya_1st さんは sudo が可能になりました。*1

あるユーザをrootと同等にする

基本的にはやりません。次の設定を書くとtakuyaさんが、rootとおなじになります。

これは、rootのユーザーの名前の変更/追加をしています。

takuya ALL=(ALL) ALL

takuyaさんがrootと同レベルのアカウントになります。ミスったら危険です。なので、理由がない限りグループで管理する方をお薦めします。
root権限をrootから剥奪して、別のユーザーにroot権限つけるときに使うといいでしょう。

sudoersのそのほかの設定

コピペでsudoersを編集すると、ミスを取り返せない*2ので、まずはman を一瞥します。

man sudoers

sudoで使えるコマンドを制限する

CentOSの場合、いろいろAliasが標準添付されている。

fdiskなどは禁止する。
Cmnd_Alias STORAGE = /sbin/fdisk, /sbin/sfdisk, /sbin/parted, /sbin/partprobe, /bin/mount, /bin/umount
%admin ALL=ALL(ALL), !STORAGE

2010-10-20追記

エントリにも書いているけど、man がお勧めです。

細かくはman 読んだ方が詳しいですよ?

man 5 sudoers

sudoers の文法は、 Extended Backus-Naur Form (EBNF) (拡張
バッカス・ナウア記法) を用いたかたちで以下に記述する。 EBNF を知らなくても諦めないでほしい。

エイリアス

User_Alias, Runas_Alias, Host_Alias, Cmnd_Alias という 4 種類のエイリアスがある。

ね?簡単でしょ?

*1:usermod -G admin takuya_1stでもいいよ

*2:シングルユーザーモードで起動するか、別OSでHDDを強制マウントして書き換えることも可能ですが、暗号化ディスクやクラウドサーバーだと絶望的に手出しが面倒になるのでミスを防ぐ方に重点を置きます。