pam_mount
Заданный файловый ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.
1. Устанавливаем pam_mount:
# apt-get install pam_mount
Если осуществляется подключение файловых ресурсов по протоколу CIFS (SMB), то установите cifs-utils:
# apt-get install cifs-utils
# apt-get install systemd-settings-enable-kill-user-processes
2. Прописываем pam_mount в схему аутентификации по умолчанию. В конец файла (/etc/pam.d/system-auth) добавьте строки
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet session optional pam_mount.so disable_interactive
Параметр disable_interactive нужен для того, чтобы pam_mount не спрашивал пароль. Первая строка предназначена для того, чтобы не монтировать дважды при запуске systemd --user. Подробнее: https://wiki.archlinux.org/title/pam_mount#Login_manager_configuration
Пример файла /etc/pam.d/system-auth при аутентификации доменного пользователя под SSSD:
#%PAM-1.0
auth [success=4 perm_denied=ignore default=die] pam_localuser.so
auth [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
auth [default=1] pam_permit.so
auth substack system-auth-sss-only
auth [default=1] pam_permit.so
auth substack system-auth-local-only
auth substack system-auth-common
account [success=4 perm_denied=ignore default=die] pam_localuser.so
account [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
account [default=1] pam_permit.so
account substack system-auth-sss-only
account [default=1] pam_permit.so
account substack system-auth-local-only
account substack system-auth-common
password [success=4 perm_denied=ignore default=die] pam_localuser.so
password [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
password [default=1] pam_permit.so
password substack system-auth-sss-only
password [default=1] pam_permit.so
password substack system-auth-local-only
password substack system-auth-common
session [success=4 perm_denied=ignore default=die] pam_localuser.so
session [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
session [default=1] pam_permit.so
session substack system-auth-sss-only
session [default=1] pam_permit.so
session substack system-auth-local-only
session substack system-auth-common
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user
session optional pam_mount.so disable_interactive
3. Устанавливаем правило монтирования ресурса в файле /etc/security/pam_mount.conf.xml:
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5i,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775"/>
где
- uid="10000-2000200000" — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
- server="c253.test.alt" — имя сервера с ресурсом;
- path="sysvol" — имя файлового ресурса;
- mountpoint="~/share" — путь монтирования в домашней папке пользователя.
Опционально можно добавить:
- sgrp="group_name" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Параметр sec=krb5i более безопасный, но требует больше вычислительных ресурсов. Вместо него можно указать sec=krb5.
Пример файла /etc/security/pam_mount.conf.xml:
С комментариями для изучения |
---|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
См. pam_mount.conf(5) для описания.
-->
<pam_mount>
<!--
Отладка должна быть раньше всего остального,
т.к. этот файл все равно считываются за
один проход сверху вниз
-->
<debug enable="0" />
<!-- Определение монтируемых томов -->
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
<!--
pam_mount parameters: General tunables
-->
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!--
Обратите внимание, что если закомментировать mntoptions, то будут заданы значения по умолчанию.
Необходимо явно инициализировать его пустой строкой чтобы сбросить значения на по-умолчанию.
-->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<!--
Требуется наличие ofl из hxtools
-->
<logout wait="0" hup="no" term="no" kill="no" />
<!-- Параметры pam_mount: связанные тома -->
<mkmountpoint enable="1" remove="true" />
</pam_mount>
|
Без комментариев для "продакшена" |
---|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<pam_mount>
<debug enable="0" />
<volume uid="10000-2000200000"
fstype="cifs"
server="c253.test.alt"
path="sysvol"
mountpoint="~/share"
options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<mntoptions require="nosuid,nodev" />
<logout wait="0" hup="no" term="no" kill="no" />
<mkmountpoint enable="1" remove="true" />
</pam_mount>
|
Для отладки подключения замените в файле /etc/security/pam_mount.conf.xml
<debug enable="0" />
на
<debug enable="1" />
При этом отладочные сообщения будут показываться в журнале Journald.
Вы можете сменить механизм монтирования отдав его на откуп systemd. Для этого в pam_mount.xml.conf можно задать\переопределить опции cifsmount, umount
<cifsmount>systemd-mount -A -G -q -t cifs %(COMBOPATH) %(MNTPT) -o uid=%(USERUID),gid=%(USERGID),username=%(USER),%(OPTIONS)</cifsmount>
<umount>systemd-mount -u %(MNTPT)</umount>
Советы
- Для того, чтобы подключенная папка не показывалась на рабочем столе Mate, следует в параметры добавить x-gvfs-hide.
- Если при выходе пользователя всё равно файловый ресурс остаётся подключенным, отмонтируйте его и удалите файл /run/pam_mount/<имя_пользователя>