
Ubuntu日本語フォーラム

ログインしていません。
複数のユーザが利用するUbuntu PCで以下のことを実現したいと考えています。
・環境はUbuntu 8.10 (amd64) / Ubuntu 9.04 Beta Desktop (amd64)
・ユーザのホームディレクトリはUSBメモリの中に保存する
・ログイン前にUSBメモリを差し、ログアウト後にUSBメモリを抜く
・PCの中には個人情報は一切残らない
色々と調べて、pam_mountを使えば実現できそうだということまでは分かり、以下のように設定しました。
・USBメモリにはユーザ名と同じラベルがつけられており、[/dev/sdb1]もしくは[/dev/disk/by-label/ユーザ名]で認識
・/etc/pam.d/gdmでpam_mountを使い、ログイン時/ログアウト時にUSBメモリを自動的にホームディレクトリとしてmount/unmountする
/etc/pam.d/gdmの内容
----------------
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so readenv=1
auth required pam_env.so readenv=1 envfile=/etc/default/locale
auth optional pam_group.so
@include common-auth
@include common-account
session required pam_limits.so
@include common-session
@include common-password
@include common-pammount
auth optional pam_gnome_keyring.so
session optional pam_gnome_keyring.so auto_start
----------------
/etc/pam.d/common-pammountの内容
----------------
auth optional pam_mount.so use_first_pass
session optional pam_mount.so
----------------
/etc/security/pam_mount.conf.xmlの内容(抜粋)
----------------
<volume fstype="ext3" path="/dev/disk/by-label/%(USER)" mountpoint="/home/%(USER)" options="defaults" />
<debug enable="1" />
<logout wait="0" hup="no" term="no" kill="yes" />
<mkmountpoint enable="1" remove="true" />
----------------
ログイン時には正常にマウントできるのですが、ログアウト時にdevice is busyでアンマウントに失敗します。ちなみに、Ubuntu 8.10でも同様です。不思議なことに、ログアウト後、手動でアンマウントすると問題なく解除できます。
・ユーザtestでGUIからログインする
・ユーザtestでGUIからログアウトする
・Ctrl-Alt-F1を押して、コンソールからtestでログインする
・/var/log/auth.logをみると、pam_mountがdevice is busyでアンマウントに失敗している
・/etc/mtabを確認すると、/dev/sdb1が/home/testにマウントされたままになっている
・sudo umount /home/test を実行すると普通にアンマウントできる
pam_mountのデバックメッセージでlsofの実行結果が表示されていないということは、/home/testはビジーでないはずなのですが。。。どなたか同じ現象で、解決できた方がおられましたら、解決策を教えていただきたく、よろしくお願い致します。
/var/log/auth.logの出力
----------------
gdm[2924]: pam_mount(mount.c:813): going to unmount
gdm[2924]: pam_mount(mount.c:299): Mount info: globalconf, user=test <volume server="(null)" path="/dev/disk/by-label/test" mountpoint="/home/test" cipher="(null)" fskeypath="(null)" fskeycipher="(null)" fskeyhash="(null)" options="" /> fstab=0
gdm[2924]: command: [umount] [/home/test]
gdm[12770]: pam_mount(misc.c:48): set_myuid<pre>: (uid=0, euid=0, gid=10001, egid=0)
gdm[12770]: pam_mount(misc.c:48): set_myuid<post>: (uid=0, euid=0, gid=10001, egid=0)
gdm[2924]: pam_mount(mount.c:80): umount errors:
gdm[2924]: pam_mount(mount.c:83): umount: /home/test: device is busy.
gdm[2924]: pam_mount(mount.c:83): (In some cases useful info about processes that use
gdm[2924]: pam_mount(mount.c:83): the device is found by lsof(8) or fuser(1))
gdm[2924]: pam_mount(mount.c:456): waiting for umount
gdm[2924]: pam_mount(mount.c:816): unmount of /dev/disk/by-label/test failed
gdm[2924]: pam_mount(pam_mount.c:617): pam_mount execution complete
gdm[2924]: pam_mount(pam_mount.c:115): Clean global config (0)
----------------
※Ubuntu 9.04の場合、pam_mount.conf.xml内で<logout>タグを指定しているのでlsofの結果は出力されません。
※Ubuntu 8.10の場合、lsofの結果いくつかのプロセスが表示され、device is busyとなります
※pam_mount.conf.xmlの中で<umount>umount -l %(MNTPT)</umount>とするとマウントを解除できますが、gvfs関連が解除されません。。。
オフライン
自己フォローです。
Ubuntu 10.10 Netbook Edition で試してみたところ、正常に動作するようになりました。
オフライン