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

Материал из ALT Linux Wiki
м (Добавлены категории)
 
(не показаны 4 промежуточные версии 2 участников)
Строка 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) для описания.
-->
-->


<pam_mount>
<pam_mount>


                <!-- 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"
Строка 89: Строка 101:
         options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />
         options="sec=krb5,cruid=%(USERUID),nounix,uid=%(USERUID),gid=%(USERGID),file_mode=0664,dir_mode=0775" />


                <!-- pam_mount parameters: General tunables -->
 
<!--
  pam_mount parameters: General tunables
-->


<!--
<!--
Строка 95: Строка 110:
-->
-->


<!-- Note that commenting out mntoptions will give you the defaults.
<!--
    You will need to explicitly initialize it with the empty string
Обратите внимание, что если закомментировать mntoptions, то будут заданы значения по умолчанию.
    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" />
Строка 104: Строка 122:
<mntoptions deny="*" />
<mntoptions deny="*" />
-->
-->
<mntoptions require="nosuid,nodev" />
<mntoptions require="nosuid,nodev" />


<!-- 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}}.
Строка 136: Строка 192:
[[Категория:HOWTO]]
[[Категория:HOWTO]]
[[Категория:PAM]]
[[Категория:PAM]]
{{Category navigation|title=PAM|category=PAM|sortkey={{SUBPAGENAME}}}}

Текущая версия от 13:22, 5 августа 2024

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

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

Ссылки