如何使用 pam_exec 创建 ZFS 主目录

如何使用 pam_exec 创建 ZFS 主目录

如何让 pam_exec.so 为每个通过 GDM/LDAP 登录的用户创建一个新的主目录 ZFS 数据集?我正在运行 Ubuntu 20.04,使用 GDM 和 nslcd 进行 LDAP 身份验证。

pam 的 mkhomedir 库尚未提供对 ZFS 的原生支持,因此我在 github 上提交了此功能请求。在实现此功能之前,我必须自己解决这个问题。

更新:从终端登录 LDAP 时此功能有效,但目前不适用于 gdm(或 lightdm)。

更新2:成功了!已适当更新此帖子。

我在 /etc/pam.d/common-session 的末尾添加了以下行

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

/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

我们最终使用 lightdm 而不是 gdm,因此如果您也使用 lightdm,请将 gdm 替换为 lightdm。

运行 mkzfshome.sh 需要 sudo/root 权限,因此我们将配置 sudo 以授予 isdads-user 组的所有成员以 root 身份运行此脚本的权限,而无需输入密码,方法是运行 visudo 并添加如下行:

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

对于 sudoers 文件,其中 isdads-user 是一个组,所有需要在登录时运行 mkzfshome.sh 的用户都是该组的成员。

相关内容