Как создать домашние каталоги ZFS с помощью pam_exec

Как создать домашние каталоги ZFS с помощью pam_exec

Как заставить 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 при входе в систему.

Связанный контент