%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20pam_mount.png)
У меня есть компьютер Ubuntu 21.10, подключенный к контроллеру домена Samba AD. Все работает абсолютно нормально - Kerberos работает (можно получать билеты с помощью kinit), winbind работает (можно получать информацию о пользователях и группах), я могу войти в систему с учетными данными домена.
Ручное монтирование общих ресурсов также работает, как с авторизацией Kerberos, так и с авторизацией ntlmssp:
sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=ntlmssp
sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=krb5
Также работает настройка имени пользователя, например, username=USER@DOMAIN.
Проблема в том, что я не могу заставить pam_mount работать, когда пользователь входит в систему через gnome!
Использование krb5 в pam_mount.conf.xml следующим образом
<volume
fstype="cifs"
server="server"
path="path"
mountpoint="mount/point"
options="sec=krb5"
/>
Выдает ошибку в auth.conf
(mount.c:72): mount error(126): Required key not available
Использование ntlmssp в pam_mount.conf.xml следующим образом
<volume
fstype="cifs"
server="server"
path="path"
mountpoint="mount/point"
options="sec=ntlmssp"
/>
Выдает другую ошибку в auth.conf
(pam_mount.c:173): conv->conv(...): Conversation error
После включения отладки в pam_mount я также могу увидеть точную команду монтирования, которую она выполняет, в auth.log, и она идентична тем, что указаны выше и работают, когда я запускаю их вручную.
Я попробовал следующее:
- поигрался с параметрами монтирования в разных комбинациях: vers=3.0, _netdev,user,sec
- заставил Kerberos хранить билеты в файлах в /tmp/krb5cc_%u с помощью конфигурации pam_winbind
- прочитал кучу форумов
Есть идеи?
решение1
Я наконец-то разобрался. Вот рабочая конфигурация тома pam_mount:
<volume sgrp="DOMAIN\domain users" fstype="cifs" server="my.server.com" path="path/to/share" mountpoint="/mount/point" options="sec=krb5,cruid=%(USERUID),noexec,rw,nofail" />
Основными требованиями, по-видимому, были:
- Имя домена сервера. Kerberos не может выдавать билеты для ips, поэтому вам придется указать имя домена.
- cruid=%(USERUID)option. Mount выполняется от имени root и по умолчанию ищет файл тикета, принадлежащий root, поэтому нам нужно установить идентификатор пользователя фактического владельца тикета.
- sgrp="ДОМЕН\пользователи домена"атрибут. pam_mount запускается в каждом новом сеансе аутентификации, включая системных пользователей, таких как gdm. После неудачной попытки входа в систему при монтировании общего ресурса, он, похоже, кэширует его и не может подключиться даже для авторизованного пользователя. Поэтому нам нужно явно указать пользователей, для которых мы хотим смонтировать общий ресурс. Это можно сделать с помощью ряда атрибутов управления пользователями, доступных в pam_mount.