pam-scriptでLightDMに対応

 
LightDMでログインするとbashログインを経由せずにx-windowセッションが開始されるので、.bash_profileと.bash_logoutが実行されず、ホームディレクトリのファイルをtmpfsに逃がす仕掛けがうまく働きません。
これを解決するため、pam-scriptでセッション開始/終了時にスクリプトをフックさせることにします。

まずはインストール。

pam-scriptはユーザー認証処理の特定のタイミングでスクリプトをフックする仕組みです。
/usr/share/libpam-scriptに既定のファイル名のスクリプトを置くことで、セッション開始/終了時に任意の処理を噛ませることができます。
また、bashでもLightDMでも同じように動作してくれます。
 

スクリプト作成

 
セッション開始時に実行されるスクリプト/usr/share/libpam-script/pam_script_ses_openを新規作成します。

セッション終了時に実行されるスクリプトは/usr/share/libpam-script/pam_script_ses_closeです。

pam-scriptはリブート、シャットダウン時の面倒は見てくれないので、まとめて/homeに書き戻すスクリプトwritebackhomeを新規作成します。

これらのスクリプトは、スクリプトtemporizeから若干変更しました。
ユーザー名を$USERではなく$PAM_USERで受け取っていること、ホームディレクトリが存在するか確認している、退避するファイル名を別ファイルに追い出している、ファイルだけでなくディレクトリにも対応、などの変更を加えています。

退避するファイル名は/usr/share/libpam-script/temporize.listに記述します。

 

古い処理の削除と修正

 
.bash_profileからスクリプトの呼び出しを削除します。

.bash_logoutからもスクリプトの呼び出しを削除します。

/etc/init.d/transientlogからtemporizeに代えてwritebackhomeを実行させます。

ここでは分かりやすくするためにコメントアウトしていますが、行削除で構いません。

使わなくなったスクリプトは削除しておきます。