お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-04-02 21:39:54

knz
メンバ
From: 香港
登録日: 2009-04-02

pam_mountでログアウト時にumountに失敗する

複数のユーザが利用する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関連が解除されません。。。

オフライン

 

#2 2010-10-28 17:34:07

knz
メンバ
From: 香港
登録日: 2009-04-02

Re: pam_mountでログアウト時にumountに失敗する

自己フォローです。

Ubuntu 10.10 Netbook Edition で試してみたところ、正常に動作するようになりました。

オフライン

 

Board footer

Powered by FluxBB