如何使用 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)。

UPDATE2:成功了!適當更新了這篇文章。

我將以下行新增到 /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 的使用者都是該群組的成員。

相關內容