Ошибки монтирования общего ресурса Windows (cifs) с помощью pam_mount

Ошибки монтирования общего ресурса Windows (cifs) с помощью pam_mount

У меня есть компьютер 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.

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