SSSD/AD: различия между версиями

Материал из ALT Linux Wiki
м (Добавлена настройка монтирования шар по pam_mount)
 
(не показано 27 промежуточных версий 13 участников)
Строка 1: Строка 1:
Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.
Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.


= Подключение к домену =
== Подключение к домену ==
Нижеописанная процедура настройки автоматизирована с помощью пакета {{pkg|task-auth-ad-sssd}} и введения в домен через ЦУС (acc) — {{pkg|alterator-auth}} версии >=0.31
$ su -
# apt-get update; apt-get install task-auth-ad-sssd
# acc
{{note|Однако ознакомиться со всей статьей никто не запрещает.}}


==Настройки сети==
=== Настройки сети ===


Для подключением к домену проводим проверку настроек сети:
Для подключением к домену проводим проверку настроек сети:
* в качестве первичного DNS (первая запись nameserver в /etc/resolv.conf) должен быть указан DNS-сервер домена
* в качестве первичного DNS (первая запись nameserver в {{path|/etc/resolv.conf}}) должен быть указан DNS-сервер домена:
  domain dom.loc
  domain dom.loc
  search dom.loc
  search dom.loc
Строка 13: Строка 18:
<source lang="bash">$ host dom.loc
<source lang="bash">$ host dom.loc
dom.loc has address 192.168.1.148</source>
dom.loc has address 192.168.1.148</source>
* имя подключаемого, клиентского узла должно быть должно быть определено, как FQDN. Например, для рабочей станции client2 в домене dom.loc:
* имя подключаемого, клиентского узла должно быть определено, как FQDN. Например, для рабочей станции client2 в домене dom.loc:
<source lang="bash">$ hostname  
<source lang="bash">$ hostname  
client2.dom.loc</source>
client2.dom.loc</source>


==Настройки kerberos==
=== Настройки kerberos ===


Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена '''dom.loc.''':
Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена '''dom.loc.''':
Строка 24: Строка 29:
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
_kerberos._tcp.dom.loc. 900    IN      SRV    0 100 88 server.dom.loc.</source>
_kerberos._tcp.dom.loc. 900    IN      SRV    0 100 88 server.dom.loc.</source>
И задаем их в файле /etc/krb5.conf
И задаем их в файле {{path|/etc/krb5.conf}}:
* kerberos-имя домена ("рилма", realm):
* kerberos-имя домена ("рилма", realm):
   default_realm = DOM.LOC
   default_realm = DOM.LOC
* отключаем поиска kerberos-имени домена через DNS:
* отключаем поиск kerberos-имени домена через DNS:
   dns_lookup_realm = false
   dns_lookup_realm = false
* оставляем (или включаем) поиск kerberos-настроек домена через DNS:
* оставляем (или включаем) поиск kerberos-настроек домена через DNS:
Строка 44: Строка 49:
         renew until 20.12.2016 04:13:18</source>
         renew until 20.12.2016 04:13:18</source>


==Настройки samba==
=== Настройки samba ===


Для подключения рабочей станции в домену требуется утилита ''net'' из пакета '''samba-common-tools''', кроме того стоит сразу установить пакет samba-client с набором клиентских утилит:
Для подключения рабочей станции в домену требуется утилита ''net'' из пакета {{pkg|samba-common-tools}}, кроме того стоит сразу установить пакет {{pkg|samba-client}} с набором клиентских утилит:
  # apt-get install samba-client
  # apt-get install samba-client


В файле, минимально, необходимо задать следующие параметры в секции [global]:
В файле {{path|/etc/samba/smb.conf}}, минимально, необходимо задать следующие параметры (в секции [global]):
* kerberos-имя домена:
* kerberos-имя домена:
  realm = DOM.LOC
  realm = DOM.LOC
Строка 58: Строка 63:
* уровень безопасности Active Directory:
* уровень безопасности Active Directory:
  security = ADS
  security = ADS
* Метод хранения kerberos-ключей рабочей станции:
* метод хранения kerberos-ключей рабочей станции:
  kerberos method = system keytab
  kerberos method = system keytab
* алгоритм преобразования SID'ов:
* алгоритм преобразования SID'ов:
Строка 99: Строка 104:
         browseable = No
         browseable = No
         printable = Yes</source>
         printable = Yes</source>
Ошибка '''rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)''' до перезагрузки исправляется командой:
<pre># ulimit -n 16384</pre>
Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл {{path|/etc/security/limits.conf}}:
<pre>*                -      nofile          16384
root            -      nofile          16384</pre>


==Подключение к домену==
=== Подключение к домену ===


<source lang="text"># net ads join -U administrator
<source lang="text"># net ads join -U administrator
Строка 107: Строка 117:
Joined 'CLIENT2' to dns domain 'dom.loc'</source>
Joined 'CLIENT2' to dns domain 'dom.loc'</source>


Проверка наличия kerberos-ключей для рабочей станции
Проверка наличия kerberos-ключей для рабочей станции:
<source lang="text"># klist -k -e
<source lang="text"># klist -k -e
Keytab name: FILE:/etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
Строка 128: Строка 138:
   7 CLIENT2$@DOM.LOC (arcfour-hmac)</source>
   7 CLIENT2$@DOM.LOC (arcfour-hmac)</source>


= Настройка SSSD =
== Настройка SSSD ==


==Установка sssd-модуля==
=== Установка sssd-модуля ===


Для работы с Active Directory в SSSD имеется специальный AD-провайдер:
Для работы с Active Directory в SSSD имеется специальный AD-провайдер:
  apt-get install sssd-ad
  # apt-get install sssd-ad


Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad выглядит следующим образом:
Минимальный конфигурационный файл ({{path|/etc/sssd/sssd.conf}}) для sssd-ad выглядит следующим образом:
<source lang="text">[sssd]
<source lang="text">[sssd]
config_file_version = 2
config_file_version = 2
Строка 142: Строка 152:
domains = DOM.LOC
domains = DOM.LOC
debug_level = 1
debug_level = 1
; Should be used until ALT#34124 will be resolved
user = root


[nss]
[nss]
Строка 154: Строка 167:
  chpass_provider = ad
  chpass_provider = ad


; ldap_id_mapping = False
;ldap_id_mapping = False
  default_shell = /bin/bash
  default_shell = /bin/bash
  fallback_homedir = /home/%d/%u
  fallback_homedir = /home/%d/%u
; use_fully_qualified_names = True</source>
;use_fully_qualified_names = True
;cache_credentials = true</source>


Опция '''ldap_id_mapping = False''' позволяет включить использование POSIX атрибутов, определённых в Active Directory, вместо встроенной, однозначной трансляции SID'ов.
Опция '''ldap_id_mapping = False''' позволяет включить использование POSIX атрибутов, определённых в Active Directory, вместо встроенной, однозначной трансляции SID'ов.
Основная проблема применения POSIX-атрибутов состоит в том, что они могут быть не заданы. В этом случае сервис sssd не загрузиться.
Основная проблема применения POSIX-атрибутов состоит в том, что они могут быть не заданы. В этом случае сервис sssd не загрузится.


Опция '''use_fully_qualified_names = True''' включает режим полных имён (включая домен) для пользователей и групп.
Опция '''use_fully_qualified_names = True''' включает режим полных имён (включая домен) для пользователей и групп.


==Настройка авторизации==
Опция '''fallback_homedir = /home/%d/%u''' задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u.
 
Опция '''cache_credentials''' включает режим кэширования аутентификационных данных (полезно при недоступности домена).
 
Опция '''user''' позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD.
 
{{Attention|Пока не решена задача [[https://bugzilla.altlinux.org/show_bug.cgi?id=34124 #34124]] опция '''user''' должна быть задана, как '''root'''.}}
 
=== Настройка авторизации ===


Авторизационные NSS-базы GLibc настраиваются с в файле /etc/nsswitch.conf
Авторизационные NSS-базы GLibc настраиваются в файле {{path|/etc/nsswitch.conf}}.
При использовании sssd, требуется внести исправления в следующие строчки:
При использовании sssd, требуется внести исправления в следующие строчки:
<source lang="text"># grep sss /etc/nsswitch.conf
<source lang="text"># grep sss /etc/nsswitch.conf
Строка 175: Строка 197:
netgroup:  files sss</source>
netgroup:  files sss</source>


==Настройка аутентификации==
=== Настройка аутентификации ===


Для изменения настроек аутентификации (параметров PAM) в ALTLinux используется утилита ''control'':
Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита ''control'':
  # control system-auth sss
  # control system-auth sss


==Запуск и проверка сервиса sssd==
=== Запуск и проверка сервиса sssd ===


Если все настройки выполнены правильно, то после запуска сервиса sssd:
Если все настройки выполнены правильно, то после запуска сервиса sssd:
Строка 202: Строка 224:
uid=1310400500(administrator@DOM.LOC) gid=1310400513(domain users@DOM.LOC) группы=1310400513(domain users@DOM.LOC),1310400520(group policy creator owners@DOM.LOC),1310400519(enterprise admins@DOM.LOC),1310400512(domain admins@DOM.LOC),1310400518(schema admins@DOM.LOC),1310400572(denied rodc password replication group@DOM.LOC)</source>
uid=1310400500(administrator@DOM.LOC) gid=1310400513(domain users@DOM.LOC) группы=1310400513(domain users@DOM.LOC),1310400520(group policy creator owners@DOM.LOC),1310400519(enterprise admins@DOM.LOC),1310400512(domain admins@DOM.LOC),1310400518(schema admins@DOM.LOC),1310400572(denied rodc password replication group@DOM.LOC)</source>


= Подключение файловых ресурсов =
{{Attention|Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd:
<pre># systemctl stop sssd
# rm -f /var/lib/sss/db/*
# rm -f /var/lib/sss/mc/*
# systemctl start sssd</pre>}}
 
== Подключение файловых ресурсов ==


Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).
Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).


== Через pam_mount ==
{{:pam_mount}}
 
В этом случае заданный ресурс подключается с заданного сервера <u>автоматически при каждом входе</u> доменным пользователем.
 
1. Устанавливаем {{pkg|pam_mount}}:
apt-get install pam_mount
 
2. Прописываем pam_mount в схему {{path|/etc/pam.d/system-auth-sss}}:
auth            optional        pam_mount.so
и
session        optional        pam_mount.so
 
3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}} (перед тегом <cifsmount>):
<source lang="xml"><volume uid="10000-2000200000" fstype="cifs" server="c228" path="sysvol" mountpoint="/home/DOM.LOC/%(USER)/share" options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" /></source>
где
* '''uid="1000000000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (от SSSD)
* '''server="c228"''' — имя сервера с ресурсом
* '''path="sysvol"''' — имя файлового ресурса
* '''mountpoint="/home/DOM.LOC/%(USER)/share"''' — путь монтирования. Для доменных пользователей DOM.LOC — имя домена, share — каталог в домашней папке пользователя


== Ссылки ==
* https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Windows_Integration_Guide/SSSD-AD.html


[[Категория:SSSD]]
[[Категория:SSSD]]
[[Категория:Active Directory]]
[[Категория:Active Directory]]

Текущая версия от 11:14, 17 августа 2022

Подготовка клиентской станции (подключение к домену AD), настройка и установка аутентификации и авторизации c помощью сервиса SSSD.

Подключение к домену

Нижеописанная процедура настройки автоматизирована с помощью пакета task-auth-ad-sssd и введения в домен через ЦУС (acc) — alterator-auth версии >=0.31

$ su -
# apt-get update; apt-get install task-auth-ad-sssd
# acc
Примечание: Однако ознакомиться со всей статьей никто не запрещает.


Настройки сети

Для подключением к домену проводим проверку настроек сети:

  • в качестве первичного DNS (первая запись nameserver в /etc/resolv.conf) должен быть указан DNS-сервер домена:
domain dom.loc
search dom.loc
nameserver 192.168.1.148

обычно, в таком качестве выступает один или несколько, контроллеров домена:

$ host dom.loc
dom.loc has address 192.168.1.148
  • имя подключаемого, клиентского узла должно быть определено, как FQDN. Например, для рабочей станции client2 в домене dom.loc:
$ hostname 
client2.dom.loc

Настройки kerberos

Далее проверяем клиентские настройки kerberos через DNS. В данном случае, для домена dom.loc.:

$ dig _kerberos._udp.dom.loc SRV | grep ^_kerberos
_kerberos._udp.dom.loc. 900     IN      SRV     0 100 88 server.dom.loc.
$ dig _kerberos._tcp.dom.loc SRV | grep ^_kerberos
_kerberos._tcp.dom.loc. 900     IN      SRV     0 100 88 server.dom.loc.

И задаем их в файле /etc/krb5.conf:

  • kerberos-имя домена ("рилма", realm):
 default_realm = DOM.LOC
  • отключаем поиск kerberos-имени домена через DNS:
 dns_lookup_realm = false
  • оставляем (или включаем) поиск kerberos-настроек домена через DNS:
 dns_lookup_kdc = true

Если настройки сети и kerberos выполнены правильно, то мы может получить kerberos TGT от контроллера домена:

$ kinit administrator
Password for administrator@DOM.LOC: 
Warning: Your password will expire in 21 days on Пн 09 янв 2017 15:35:39
$ klist 
Ticket cache: KEYRING:persistent:500:krb_ccache_Bw75rEI
Default principal: administrator@DOM.LOC

Valid starting       Expires              Service principal
19.12.2016 04:13:25  19.12.2016 14:13:25  krbtgt/DOM.LOC@DOM.LOC
        renew until 20.12.2016 04:13:18

Настройки samba

Для подключения рабочей станции в домену требуется утилита net из пакета samba-common-tools, кроме того стоит сразу установить пакет samba-client с набором клиентских утилит:

# apt-get install samba-client

В файле /etc/samba/smb.conf, минимально, необходимо задать следующие параметры (в секции [global]):

  • kerberos-имя домена:
realm = DOM.LOC
  • краткое имя домена, соответствующее имени рабочей группы:
workgroup = DOM
  • имя рабочей станции в сетевом окружении:
netbios name = CLIENT2
  • уровень безопасности Active Directory:
security = ADS
  • метод хранения kerberos-ключей рабочей станции:
kerberos method = system keytab
  • алгоритм преобразования SID'ов:
idmap config * : backend = tdb


Набор полученных настроек можно проверить с помощью утилиты testparm:

$ testparm 
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
        realm = DOM.LOC
        server string = Samba Server Version %v
        workgroup = DOM
        log file = /var/log/samba/log.%m
        max log size = 50
        kerberos method = system keytab
        security = ADS
        idmap config * : backend = tdb
        cups options = raw


[homes]
        comment = Home Directories
        browseable = No
        read only = No


[printers]
        comment = All Printers
        path = /var/spool/samba
        browseable = No
        printable = Yes

Ошибка rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) до перезагрузки исправляется командой:

# ulimit -n 16384

Что бы лимиты действовали и после перезагрузки необходимо отредактировать файл /etc/security/limits.conf:

*                -       nofile          16384
root             -       nofile          16384

Подключение к домену

# net ads join -U administrator
Enter administrator's password:
Using short domain name -- DOM
Joined 'CLIENT2' to dns domain 'dom.loc'

Проверка наличия kerberos-ключей для рабочей станции:

# klist -k -e
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   7 host/client2.dom.loc@DOM.LOC (des-cbc-crc) 
   7 host/CLIENT2@DOM.LOC (des-cbc-crc) 
   7 host/client2.dom.loc@DOM.LOC (des-cbc-md5) 
   7 host/CLIENT2@DOM.LOC (des-cbc-md5) 
   7 host/client2.dom.loc@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 host/CLIENT2@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 host/client2.dom.loc@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 host/CLIENT2@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 host/client2.dom.loc@DOM.LOC (arcfour-hmac) 
   7 host/CLIENT2@DOM.LOC (arcfour-hmac) 
   7 CLIENT2$@DOM.LOC (des-cbc-crc) 
   7 CLIENT2$@DOM.LOC (des-cbc-md5) 
   7 CLIENT2$@DOM.LOC (aes128-cts-hmac-sha1-96) 
   7 CLIENT2$@DOM.LOC (aes256-cts-hmac-sha1-96) 
   7 CLIENT2$@DOM.LOC (arcfour-hmac)

Настройка SSSD

Установка sssd-модуля

Для работы с Active Directory в SSSD имеется специальный AD-провайдер:

# apt-get install sssd-ad

Минимальный конфигурационный файл (/etc/sssd/sssd.conf) для sssd-ad выглядит следующим образом:

[sssd]
config_file_version = 2
services = nss, pam

domains = DOM.LOC
debug_level = 1

; Should be used until ALT#34124 will be resolved
user = root

[nss]
debug_level = 1

[pam]
debug_level = 1

[domain/DOM.LOC]
 id_provider = ad
 auth_provider = ad
 chpass_provider = ad

;ldap_id_mapping = False
 default_shell = /bin/bash
 fallback_homedir = /home/%d/%u
;use_fully_qualified_names = True
;cache_credentials = true

Опция ldap_id_mapping = False позволяет включить использование POSIX атрибутов, определённых в Active Directory, вместо встроенной, однозначной трансляции SID'ов. Основная проблема применения POSIX-атрибутов состоит в том, что они могут быть не заданы. В этом случае сервис sssd не загрузится.

Опция use_fully_qualified_names = True включает режим полных имён (включая домен) для пользователей и групп.

Опция fallback_homedir = /home/%d/%u задает домашнюю папку для доменных пользователей. При такой записи %d означает FQDN. Здесь вручную можно указать имя рабочей группы, например /home/DOM/%u.

Опция cache_credentials включает режим кэширования аутентификационных данных (полезно при недоступности домена).

Опция user позволяет задать имя пользователя, под которым будет исполняться непривилегированная часть службы SSSD.

Внимание! Пока не решена задача [#34124] опция user должна быть задана, как root.


Настройка авторизации

Авторизационные NSS-базы GLibc настраиваются в файле /etc/nsswitch.conf. При использовании sssd, требуется внести исправления в следующие строчки:

# grep sss /etc/nsswitch.conf
passwd:     files sss
shadow:     tcb files sss
group:      files sss
services:   files sss
netgroup:   files sss

Настройка аутентификации

Для изменения настроек аутентификации (параметров PAM) в ALT Linux используется утилита control:

# control system-auth sss

Запуск и проверка сервиса sssd

Если все настройки выполнены правильно, то после запуска сервиса sssd:

# service sssd start

будут доступны авторизационные данные для пользователя administrator:

# getent passwd administrator
administrator:*:1310400500:1310400513:Administrator:/home/DOM.LOC/administrator:/bin/bash
# id administrator
uid=1310400500(administrator) gid=1310400513(domain users) группы=1310400513(domain users),1310400520(group policy creator owners),1310400519(enterprise admins),1310400512(domain admins),1310400518(schema admins),1310400572(denied rodc password replication group)
# su - administrator
[administrator@client2 ~]$ whoami 
administrator
[administrator@client2 ~]$ pwd
/home/DOM.LOC/administrator

Или для administrator@dom.loc, если установлена опция use_fully_qualified_names = True:

# id administrator@dom.loc
uid=1310400500(administrator@DOM.LOC) gid=1310400513(domain users@DOM.LOC) группы=1310400513(domain users@DOM.LOC),1310400520(group policy creator owners@DOM.LOC),1310400519(enterprise admins@DOM.LOC),1310400512(domain admins@DOM.LOC),1310400518(schema admins@DOM.LOC),1310400572(denied rodc password replication group@DOM.LOC)
Внимание! Если машина до этого была в других доменах или есть проблемы со входом пользователей рекомендуется очистить кэш sssd:
# systemctl stop sssd
# rm -f /var/lib/sss/db/*
# rm -f /var/lib/sss/mc/*
# systemctl start sssd


Подключение файловых ресурсов

Рассматриваемые способы позволяют подключать файловые ресурсы (file shares) для доменного пользователя без повторного ввода пароля (SSO, Single Sign-On).


Заданный файловый ресурс подключается с заданного сервера автоматически при каждом входе доменным пользователем.

1. Устанавливаем pam_mount:

# apt-get install pam_mount

Если осуществляется подключение файловых ресурсов по протоколу CIFS (SMB), то установите cifs-utils:

# apt-get install cifs-utils
Внимание! Для того, чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, установите пакет systemd-settings-enable-kill-user-processes и перезагрузите систему:
# 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" — имя группы, при членстве пользователя в которой, папка будет примонтирована.
Внимание! Обязательно указывайте настоящее имя сервера в параметре server, а не имя домена


Параметр 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/<имя_пользователя>

Ссылки


Ссылки