Pam mount: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
мНет описания правки
 
(не показаны 2 промежуточные версии 1 участника)
Строка 3: Строка 3:


1. Устанавливаем {{pkg|pam_mount}}:
1. Устанавливаем {{pkg|pam_mount}}:
  apt-get install pam_mount
  # apt-get install pam_mount


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


{{Attention|Для того, чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, установите пакет {{pkg|systemd-settings-enable-kill-user-processes}} и перезагрузите систему: <source lang="text">apt-get install systemd-settings-enable-kill-user-processes</source>}}
{{Attention|Для того, чтобы файловые ресурсы, подключенные с помощью pam_mount, корректно отключались при завершении сеанса, установите пакет {{pkg|systemd-settings-enable-kill-user-processes}} и перезагрузите систему: <source lang="text"># apt-get install systemd-settings-enable-kill-user-processes</source>}}


2. Прописываем pam_mount в схему аутентификации по умолчанию. В конец файла ({{path|/etc/pam.d/system-auth}}) добавьте строки
2. Прописываем pam_mount в схему аутентификации по умолчанию. В конец файла ({{path|/etc/pam.d/system-auth}}) добавьте строки
Строка 54: Строка 54:


3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}}:
3. Устанавливаем правило монтирования ресурса в файле {{path|/etc/security/pam_mount.conf.xml}}:
<source lang="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" /></source>
<source lang="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"/></source>
где
где
* '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
* '''uid="10000-2000200000"''' — диапазон присваиваемых для доменных пользователей UID (подходит и для Winbind и для SSSD);
Строка 67: Строка 73:


Пример файла {{path|/etc/security/pam_mount.conf.xml}}:
Пример файла {{path|/etc/security/pam_mount.conf.xml}}:
{|class="mw-collapsible mw-collapsed"
!С комментариями для изучения
|-
|
<source lang="xml" highlight="16-21"><?xml version="1.0" encoding="utf-8" ?>
<source lang="xml" highlight="16-21"><?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">


<!--
<!--
   See pam_mount.conf(5) for a description.
   См. pam_mount.conf(5) для описания.
-->
-->


Строка 77: Строка 87:


<!--  
<!--  
   debug should come before everything else,
   Отладка должна быть раньше всего остального,
   since this file is still processed in a single pass
   т.к. этот файл все равно считываются за
   from top-to-bottom
   один проход сверху вниз
-->
-->
<debug enable="0" />
<debug enable="0" />


<!-- Volume definitions -->
<!-- Определение монтируемых томов -->
<volume uid="10000-2000200000"
<volume uid="10000-2000200000"
         fstype="cifs"
         fstype="cifs"
Строка 101: Строка 111:


<!--
<!--
  Note that commenting out mntoptions will give you the defaults.
Обратите внимание, что если закомментировать mntoptions, то будут заданы значения по умолчанию.
  You will need to explicitly initialize it with the empty string
Необходимо явно инициализировать его пустой строкой чтобы сбросить значения на по-умолчанию.
  to reset the defaults to nothing.
-->
-->


<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other,sec" />
<!--
<!--
<mntoptions deny="suid,dev" />
<mntoptions deny="suid,dev" />
Строка 116: Строка 126:


<!--
<!--
   requires ofl from hxtools to be present
   Требуется наличие ofl из hxtools
-->
-->


<logout wait="0" hup="no" term="no" kill="no" />
<logout wait="0" hup="no" term="no" kill="no" />


<!-- pam_mount parameters: Volume-related -->
<!-- Параметры pam_mount: связанные тома -->
 
<mkmountpoint enable="1" remove="true" />
 
</pam_mount></source>
|}
 
{|class="mw-collapsible mw-collapsed"
!Без комментариев для "продакшена"
|-
|
<source lang="xml" highlight="16-21"><?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" />
<mkmountpoint enable="1" remove="true" />


</pam_mount></source>
</pam_mount></source>
|}


Для отладки подключения замените в файле {{path|/etc/security/pam_mount.conf.xml}}  
Для отладки подключения замените в файле {{path|/etc/security/pam_mount.conf.xml}}  
<source lang="xml" highlight="16-21">
  <debug enable="0" />
  <debug enable="0" />
</source>
на
на
<source lang="xml" highlight="16-21">
  <debug enable="1" />
  <debug enable="1" />
 
</source>
При этом отладочные сообщения будут показываться в журнале [[Journald]].
При этом отладочные сообщения будут показываться в журнале [[Journald]].


Вы можете сменить механизм монтирования отдав его на откуп systemd. Для этого в pam_mount.xml.conf можно задать\переопределить опции cifsmount, umount
Вы можете сменить механизм монтирования отдав его на откуп systemd. Для этого в pam_mount.xml.conf можно задать\переопределить опции cifsmount, umount
 
<source lang="xml" highlight="16-21">
   <cifsmount>systemd-mount -A -G -q -t cifs %(COMBOPATH) %(MNTPT) -o uid=%(USERUID),gid=%(USERGID),username=%(USER),%(OPTIONS)</cifsmount>
   <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>
   <umount>systemd-mount -u %(MNTPT)</umount>
 
</source>
== Советы ==
== Советы ==
* Для того, чтобы подключенная папка не показывалась на рабочем столе [[Mate]], следует в параметры добавить {{term|x-gvfs-hide}}.
* Для того, чтобы подключенная папка не показывалась на рабочем столе [[Mate]], следует в параметры добавить {{term|x-gvfs-hide}}.

Текущая версия от 09:30, 8 ноября 2023

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

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

Ссылки