
Как заставить pam_exec.so создать новый домашний каталог ZFS dataset для каждого пользователя, который входит в систему через GDM/LDAP? Я использую 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, поэтому замените gdm на lightdm, если вы тоже используете 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 при входе в систему.