ArchWiki には手順が記載されているのですが、日本語化されてないようなのでまとめてみました。
※ 追記 2013/04/23 3:00
下記の設定だとログアウト時に正常にアンマウントされず、2回目以降のログイン時にマウントポイントのマウントに失敗するようです。これが設定の問題なら修正すればいいのですが、どうも pam_mount のバグっぽい雰囲気もあったりで微妙です。
※ 追々記 2013/05/01 12:30
原理はイマイチわかってませんがとりあえずできてるっぽいので更新。
上記の問題は (表面上) なくなりました。
参考
[su (日本語) - ArchWiki] (https://wiki.archlinux.org/index.php/su_\(%E6%97%A5%E6%9C%AC%E8%AA%9E\))
[Pam mount - ArchWiki] (https://wiki.archlinux.org/index.php/Pam_mount)
1. 前置き
CentOS 等では、/etc/pam.d/su
を一行コメントアウトするだけでできます。
# auth required pam_wheel.so use_uid ← コメントアウトを外す
Arch Linux の場合そもそも PAM を使っていないため、これだけでは su ユーザーを制限できません。
そこで Arch Linux にも PAM を導入して su を PAM で管理しよう、というのが流れになります。
(実のところこの変よくわかってません。ツッコミ大歓迎)
2. 手順
pam_mount をインストール
pacman でぶち込むだけです。
# pacman -S pam_mount
pam_mount.conf.xml を編集
/etc/security/pam_mount.conf.xml
に下記を追記します。追記場所はどこでもいいはずですが、<mkmountpoint enable="1" remove="true" /> の直前がいいと思います。
なお、path
は環境に合わせて適切に変更してください。
<volume user="^(?!root).*" fstype="auto" path="/dev/sdaX/home" mountpoint="/" options="fsck,noatime" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
正規表現が使えるようなので、root 以外はすべて PAM で管理します。
(root を除いているのは PAM がおかしくなった時にログインできなくなったらやだなーと思ってのことです。user="*" でも問題ないかもしれません)
system-auth を編集
/etc/security/system-auth
に下記を追記します。
(ArchWiki よりそのまま引用)
# %PAM-1.0
auth required pam_env.so
auth required pam_unix.so try_first_pass nullok
auth optional pam_mount.so <- 追加
auth optional pam_permit.so
account required pam_unix.so
account optional pam_permit.so
account required pam_time.so
password optional pam_mount.so <- 追加
password required pam_unix.so try_first_pass nullok sha512 shadow
password optional pam_permit.so
session optional pam_mount.so <- 追加
session required pam_limits.so
session required pam_env.so
session required pam_unix.so
session optional pam_permit.so
ディスプレイマネージャーとして SLiM や GDM を使ってる場合、/etc/pam.d/login
と、それぞれ /etc/pam.d/slim
/etc/pam.d/gdm-password
も編集するようです。
(この辺は試してません)
su を編集
/etc/pam.d/su
を編集します。
# auth required pam_wheel.so use_uid ← コメントアウトを外す
これだけだと su -
によるユーザーの変更は制限できないので、su-l
も編集しておいた方がいいと思います。
# auth required pam_wheel.so use_uid ← コメントアウトを外す
sudo
できるユーザーも wheel のみにする場合、visudo
を編集します。
# visudo
# %wheel ALL=(ALL) ALL ← コメントアウトを外す
再起動
再起動後に反映されます。
以上です。