sudoers を編集する前に。
sudoers は編集をミスすると大変なことになります。
visudo を使う。
/etc/sudoers を直接編集しないこと。visudo コマンドを使いましょう
sudoresのミススペル確認しましょう。
正しくは sudoers です。
sudores でググったらsudores が市民権を得たくらいにたくさんエントリがあって驚きます。cron(クロン)をクウロン・コロンと呼ぶくらいあり得ない。
@ITも間違ってる。魚拓
(%h)などを明示することで、sudoコマンド実行者に、どのサーバ上でどのユーザーから実行しようとしているのかを再認識させることができる。
sudoのパスワードプロンプトを変更する場合は、 sudoresに例えば以下のように記述する。
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec05/unix_sec01.html
Defaults passprompt = "%u@%h Password: "
/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権限つけるときに使うといいでしょう。
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 種類のエイリアスがある。
ね?簡単でしょ?