新山 祐介さん著の入門OpenSSH(サポートページ)で/etc/sudoersでwheelグループに対して許可を与える設定を使っているというのを呼んでまねしようとしたのですが(私はそれまでは直接ユーザーに許可を与えていた)、CentOSではwheelグループがあるのにDebianには無いことに気づきました。
検索するとDebian referenceに9.2.2 "Why GNU su does not support the wheel group"という節があることを発見。じゃあadmグループで代用するのかと思いきや、Securing Debian Manualに4.10 Providing secure user accessという節があり、wheelグループを追加するのがもっともきれいな方法だとされている。
で、/etc/pam.d/suを見ると以下のようなセクションがある。
# Uncomment this to force users to be a member of group root
# before they can use `su'. You can also add "group=foo"
# to the end of this line if you want to use a group other
# than the default "root" (but this may have side effect of
# denying "root" user, unless she's a member of "foo" or explicitly
# permitted earlier by e.g. "sufficient pam_rootok.so").
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
# auth required pam_wheel.so
とりあえず
auth required pam_wheel.so group=wheel
と書き換えた後、
# addgroup --gid 11 wheel
# usermod -a -G wheel root
# usermod -a -G wheel rails # railsはsudoを許可したい一般ユーザー
を実行して(wheelのgidはCentOS5では10だが/etc/groupを見るとuucpにとられていて10の次は12だったので11にしてみた)
# su - rails
$ sudo whoami
Password:
rails is not in the sudoers file. This incident will be reported.
と試してみたがエラーになった。
/etc/sudoersへの追加は結局必要らしい(というかPAMのことがよくわかっていないことに今気づいた。後日勉強すること)。
# visudo
で
%wheel ALL=(ALL) ALL
という行を追加して再度sudoを試すと今度はできた。
その後再度/etc/pam.d/suを見てたら、さっきの節の前に
# This allows root to su without passwords (normal operation)
auth sufficient pam_rootok.so
と書かれていることを発見。rootユーザーをwheelグループに追加するというのは不要でした。