pam_exec を使用して ZFS ホーム ディレクトリを作成する方法

pam_exec を使用して ZFS ホーム ディレクトリを作成する方法

GDM/LDAP 経由でログインする各ユーザーに対して、pam_exec.so で新しいホーム ディレクトリ ZFS データセットを作成するにはどうすればよいですか? 私は Ubuntu 20.04 を実行しており、LDAP 認証に GDM と nslcd を使用しています。

pam の mkhomedir ライブラリにはまだ ZFS のネイティブ サポートがないため、この機能のリクエストを github に提出しました。これが実装されるまでは、自分でハッキングする必要があります。

更新: これは、ターミナルから LDAP にログインするときには機能しますが、現在 gdm (または lightdm) では機能しません。

更新2: 動作するようになりました! この投稿を適切に更新しました。

/etc/pam.d/common-sessionの末尾に次の行を追加しました。

session     optional        pam_exec.so /usr/local/bin/mkzfshome.sh

ローカルディレクトリ

#!/bin/bash
if [ "$PAM_USER" != "gdm" ] && [ ! -d "/home/$PAM_USER" ] ; then
    zfs create -o mountpoint=/home/$PAM_USER astarray/home/$PAM_USER 
    chown $PAM_USER:1001 /home/$PAM_USER
    chmod go-rwx /home/$PAM_USER
fi

最終的には gdm ではなく lightdm を使用するので、lightdm も使用している場合は gdm を lightdm に置き換えてください。

mkzfshome.sh を実行するには sudo/root 権限が必要なので、visudo を実行して次のような行を追加し、isdads-user グループのすべてのメンバーにこのスクリプトを root として、パスワードを入力せずに実行するための権限を与えるように sudo を設定します。

%isdads-user ALL=(ALL) NOPASSWD: /usr/local/bin/mkzfshome.sh

sudoers ファイルへ。ここで、isdads-user は、ログイン時に mkzfshome.sh を実行する必要があるすべてのユーザーがメンバーになっているグループです。

関連情報