Участник:Petr-akhlamov/Pam mount.conf Manual RU: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
 
(не показаны 24 промежуточные версии 2 участников)
Строка 1: Строка 1:
{{stub}}
==Имя==
==Имя==
pam_mount.conf - Описание конфигурационного файла pam_mount
pam_mount.conf - Описание файла конфигурации pam_mount


==Обзор==
==Обзор==
Конфигурационный файл pam_mount определяет:
Конфигурационный файл pam_mount определяет:
*мягкие настройки по умолчанию для команд, которые будет выполнять pam_mount,
*мягкие настройки по умолчанию для команд, которые будет выполнять pam_mount,
*сообщения, которые он будет показывать,
*сообщения, которые он будет отображать,
*тома, которые нужно монтировать при входе в систему.
*тома, которые нужно монтировать при входе в систему.


Начиная с версии pam_mount 0.18, конфигурационный файл записывается в формате XML, что позволяет упростить кодовую базу pam_mount и в то же время дает конечному пользователю свободу форматирования. Специальные символы <, > и &, используемые в самом XML, должны быть закодированы как &lt;, &gt; и &amp;, соответственно;
Начиная с версии pam_mount 0.18, конфигурационный файл записывается в формате XML, что позволяет упростить кодовую базу pam_mount и в то же время дает конечному пользователю свободу форматирования. Специальные символы <, > и &, используемые в самом XML, должны быть закодированы как &lt;, &gt; и &amp;, соответственно;


Кроме того, в области "..." символ " должен кодироваться как {{path|<nowiki>& quot ; (слитно, wiki-движок не дает так написать)</nowiki>}}, но эти три-четыре символа все равно вряд ли будут часто встречаться.
Кроме того, в области "..." символ " должен кодироваться как &#38;quot; , но эти три-четыре символа все равно вряд ли будут часто встречаться.


Не используйте комментарии внутри элементов, принимающих дословный текст, например <fusermount></fusermount>. Это не обрабатывается синтаксическим анализатором XML-дерева pam_mount.
Не используйте комментарии внутри элементов, принимающих дословный текст, например <fusermount></fusermount>. Это не обрабатывается синтаксическим анализатором XML-дерева pam_mount.


==Определения томов==
==Определения томов==
Тома определяются с помощью элемента '''<volume>''', который в основном принимает параметры в виде атрибутов, например:
Тома определяются с помощью элемента '''<volume>''', который, в основном, принимает параметры в виде атрибутов, например:
  <volume user="joe" fstype="nfs" server="fsbox" path="/home/%(USER)" mountpoint="/bigdisk/%(USER)" />
  <volume user="joe" fstype="nfs" server="fsbox" path="/home/%(USER)" mountpoint="/bigdisk/%(USER)" />
И определяет, что и для кого монтировать.  Существует множество настроек, которые описаны в данном разделе.
И определяет, что и для кого монтировать.  Существует множество настроек, которые описаны в данном разделе.


===Простое управление пользователями===
===Простое управление пользователями===
Следующие атрибуты управляют тем, будет ли смонтирован том после того, как пользователь вошел в систему. По умолчанию монтирование томов применяется ко всем пользователям, а указание атрибутов ограничивает его только заданными условиями, т.е. происходит их логическое объединение (лог. операция И).  Существует более мощный и многословный механизм задания сложных условий, описанный ниже в разделе "Расширенное управление пользователями".
Следующие атрибуты управляют тем, будет ли смонтирован том после того, как пользователь вошел в систему. По умолчанию монтирование томов применяется ко всем пользователям, а указание атрибутов ограничивает его только заданными условиями, т.е. происходит их логическое объединение (лог. операция И).  Существует более мощный и многословный механизм задания сложных условий, описанный ниже в разделе "[[#Расширенное управление пользователями|Расширенное управление пользователями]]".
-----
 
====Ограничение по имени пользователя====
  user="username"
  user="username"
Ограничить доступ к тому для указанного пользователя, идентифицируемого по имени
Ограничить доступ к тому для пользователя с указанным именем
-----
 
====Ограничение по UID====
  uid="number" или uid="number-number"
  uid="number" или uid="number-number"
Ограничение доступа к тому для указанного пользователя (пользователей), идентифицированного по {{path|UID}} или диапазону {{path|UID}}.
Ограничение доступа к тому для пользователя (пользователей), идентифицированного по {{path|UID}} или диапазону {{path|UID}}.
-----
====Ограничение по основной группе (по имени)====
  pgrp="groupname"
  pgrp="groupname"
Ограничение доступа к тому для пользователей, для которых группа, указанная в значении, является основной группой.
Ограничение доступа к тому для пользователей, для которых группа, указанная в значении, является основной группой.
-----
====Ограничение по основной группе (по GID)====
  gid="number" или gid="number-number"
  gid="number" или gid="number-number"
Ограничение доступа к тому для пользователей, для которых группа(ы), указанная в {{path|GID}} или диапазоне {{path|GID}}, является основной группой.
Ограничение доступа к тому для пользователей, для которых группа(ы), указанная в {{path|GID}} или диапазоне {{path|GID}}, является основной группой.
-----
 
====Ограничение по имени группы====
  sgrp="groupname"
  sgrp="groupname"
Ограничение доступа к тому для пользователей, которые являются членами группы, указанной в имени (либо как первичная, либо как вторичная группа).
Ограничение доступа к тому для пользователей, которые являются членами группы, указанной в имени (либо как первичная, либо как вторичная группа).
-----


===Конфигурация тома===
===Конфигурация тома===
С помощью следующих атрибутов выбираются том-источник, место назначения, опции и т.д.
С помощью следующих атрибутов выбираются том-источник, место назначения, опции и т.д.
-----
====Тип файловой системы====
  fstype="type"
  fstype="type"
*Тип файловой системы, который может быть любым, понятным ядру, пользовательскому пространству и {{path|pam_mount}}.
*Тип файловой системы, который может быть любым, понятным ядру, пользовательскому пространству и {{path|pam_mount}}.
*Если в {{path|fstype}} указан специальный тип {{path|pam_mount}}, то {{path|pam_mount}} будет работать с ним. В противном случае {{path|fstype}} передается в {{path|mount(8)}}, который, в свою очередь, ищет в пользовательском пространстве помощника {{path|/sbin/mount.fstype}} и запускает его, если он существует, а в любом другом случае {{path|mount(8)}} вызовет {{path|mount(2)}} для непосредственного монтирования ядром.
*Если в {{path|fstype}} указан специальный тип {{path|pam_mount}}, то {{path|pam_mount}} будет работать с ним. В противном случае {{path|fstype}} передается в {{path|mount(8)}}, который, в свою очередь, ищет в пользовательском пространстве помощника {{path|/sbin/mount.fstype}} и запускает его, если он существует, а в противном случае {{path|mount(8)}} вызовет {{path|mount(2)}} для непосредственного монтирования ядром.
*{{path|mount(8)}} знает об автоматическом {{path|fstype}}, что может быть полезно в некоторых случаях. Если не указывать атрибут {{path|fstype}}, то подразумевается {{path|<nowiki>fstype="auto"</nowiki>}}. Обратите внимание, что монтирование с использованием {{path|auto}} может быть неудачным, если модуль ядра файловой системы еще не загружен, поскольку {{path|mount(8)}} будет проверять {{path|/proc/partitions}}.
*{{path|mount(8)}} знает об автоматическом {{path|fstype}}, что может быть полезно в некоторых случаях. Если не указывать атрибут {{path|fstype}}, то подразумевается {{path|<nowiki>fstype="auto"</nowiki>}}. Обратите внимание, что монтирование с использованием {{path|auto}} может быть неудачным, если модуль ядра файловой системы еще не загружен, поскольку {{path|mount(8)}} будет проверять {{path|/proc/partitions}}.


Типы {{path|fstype}} {{path|cifs}}, {{path|smbfs}}, {{path|ncpfs}}, {{path|fuse}}, {{path|nfs}} и {{path|nfs}} переопределяются {{path|pam_mount}}, и мы запускаем соответствующие вспомогательные программы напрямую, а не вызываем {{path|mount(8)}} с базовым набором аргументов по умолчанию, который часто недостаточен для сетевых файловых систем. Подробнее см. раздел "Примеры" этой {{path|manpage}} ниже.
Типы {{path|fstype}} {{path|cifs}}, {{path|smbfs}}, {{path|ncpfs}}, {{path|fuse}}, {{path|nfs}} и {{path|nfs}} переопределяются {{path|pam_mount}}, и мы запускаем соответствующие вспомогательные программы напрямую, а не вызываем {{path|mount(8)}} с базовым набором аргументов по умолчанию, который часто недостаточен для сетевых файловых систем. Подробнее см. раздел "[[#Примеры|Примеры]]" этой {{path|manpage}} ниже.
-----
====Вызов программы без привилегий суперпользователя====
  noroot="1"
  noroot="1"
Вызов программы {{path|mount}} без привилегий {{path|root}}. По умолчанию для {{path|fuse fstype}} установлено значение {{path|yes}}, поскольку по умолчанию, чтобы получить доступ к файлам, тома {{path|FUSE}} должны монтироваться от имени пользователя, вошедшего в систему.
Вызов программы {{path|mount}} без привилегий {{path|root}}. По умолчанию для {{path|fuse fstype}} установлено значение {{path|yes}}, поскольку по умолчанию, чтобы получить доступ к файлам, тома {{path|FUSE}} должны монтироваться от имени пользователя, вошедшего в систему.
-----
====Определение имени сервера для подключения====
  server="name"
  server="name"
Определяет сервер, к которому следует подключаться в случае указания типов файловых систем -  {{path|cifs}}, {{path|smbfs}}, {{path|ncpfs}} и {{path|nfs}}. Для всех остальных типов {{path|fs}} этот атрибут игнорируется. Вместо этого можно указать сервер в атрибуте {{path|path}}, но при этом необходимо придерживаться специального синтаксиса, требуемого конкретным типом {{path|fs}}.  (Например, в CIFS используется "{{path|//server/path}}", а в NFS - "{{path|server:path"}} и т.д.).
Определяет сервер, к которому следует подключаться в случае указания типов файловых систем -  {{path|cifs}}, {{path|smbfs}}, {{path|ncpfs}} и {{path|nfs}}. Для всех остальных типов {{path|fs}} этот атрибут игнорируется. Вместо этого можно указать сервер в атрибуте {{path|path}}, но при этом необходимо придерживаться специального синтаксиса, требуемого конкретным типом {{path|fs}}.  (Например, в CIFS используется "{{path|//server/path}}", а в NFS - "{{path|server:path"}} и т.д.).
-----
====Расположение тома относительно сервера====
  path="path"
  path="path"
Этот обязательный атрибут задает расположение тома относительно сервера (если он указан).
Этот обязательный атрибут задает расположение тома относительно сервера (если он указан).
-----
 
====Каталог назначения (точка монтирования)====
  mountpoint="directory"
  mountpoint="directory"
Здесь указывается каталог назначения, в который монтируется том. "~" указывает на домашний каталог пользователя, который присутствует в базе данных {{path|passwd}}, в соответствии с семантикой sh. "{{path|~name}}" не поддерживается.  Если этот атрибут опущен, то местоположение считывается из файла {{path|/etc/fstab}}, который также требует, чтобы {{path|path}} был устройством или исходным каталогом записи {{path|fstab}}.
Здесь указывается каталог назначения, в который монтируется том. "~" указывает на домашний каталог пользователя, который присутствует в базе данных {{path|passwd}}, в соответствии с семантикой sh. "{{path|~name}}" не поддерживается.  Если этот атрибут опущен, то местоположение считывается из файла {{path|/etc/fstab}}, который также требует, чтобы {{path|path}} был устройством или исходным каталогом записи {{path|fstab}}.
-----
====Опции монтирования====
  options="..."
  options="..."
Здесь указываются опции монтирования. Если опция опущена и используется {{path|/etc/fstab}} (см. "'''{{path|mountpoint}}'''"), то опции также будут взяты из fstab.
Здесь указываются опции монтирования. Если опция опущена и используется {{path|/etc/fstab}} (см. "'''{{path|mountpoint}}'''"), то опции также будут взяты из fstab.
-----
====Zerossh====
  ssh="0" или ssh="1"
  ssh="0" или ssh="1"
Опция {{path|ssh}} включает ({{path|zerossh}}, см. {{path|pmt-fd0ssh(1))}} для данного тома передачу пароля к ssh через механизм, специфичный для ssh.  Включите эту опцию для любого монтирования с использованием исполняемых файлов SSH, например, {{path|ccgfs}} или {{path|sshfs}}. Не включайте ее ни для чего другого, иначе вход в систему, скорее всего, завершится.
Опция {{path|ssh}} включает ({{path|zerossh}}, см. {{path|pmt-fd0ssh(1))}} для данного тома передачу пароля к ssh через механизм, специфичный для ssh.  Включите эту опцию для любого монтирования с использованием исполняемых файлов SSH, например, {{path|ccgfs}} или {{path|sshfs}}. Не включайте ее ни для чего другого, иначе вход в систему, скорее всего, завершится.
-----
====Шифр для тома====
  cipher="cipher"
  cipher="cipher"
Устанавливает название шифра для тома. Используется с параметром '''{{path|<nowiki>fstype=crypt</nowiki>}}'''.
Устанавливает название шифра для тома. Используется с параметром '''{{path|<nowiki>fstype=crypt</nowiki>}}'''.
-----
====Имя шифра====
  fskeycipher="ciphertype"
  fskeycipher="ciphertype"
Имя шифра {{path|OpenSSL}} для ключа {{path|fskey}}. Используется с шифром {{path|crypt fstype}} ({{path|dm-crypt}} и {{path|LUKS}}). Для непосредственной передачи содержимого файла в {{path|cryptsetup}} без расшифровки {{path|OpenSSL}} может быть использовано специальное ключевое слово "{{path|none}}".
Имя шифра {{path|OpenSSL}} для ключа {{path|fskey}}. Используется с шифром {{path|crypt fstype}} ({{path|dm-crypt}} и {{path|LUKS}}). Для непосредственной передачи содержимого файла в {{path|cryptsetup}} без расшифровки {{path|OpenSSL}} может быть использовано специальное ключевое слово "{{path|none}}".
-----
====Имя хэша====
  fskeyhash="hash"
  fskeyhash="hash"
Имя хэша {{path|OpenSSL}} для ключа {{path|fskey}}.
Имя хэша {{path|OpenSSL}} для ключа {{path|fskey}}.
-----
====Путь к ключу файловой системы====
  fskeypath="path"
  fskeypath="path"
Путь к ключу файловой системы.
Путь к ключу файловой системы.
Строка 83: Строка 85:
В атрибутах и командах (см. следующий раздел) могут использоваться специальные заполнители или переменные, обозначаемые '''%(<u>name</u>)'''. Они подставляются во время вызова команды.
В атрибутах и командах (см. следующий раздел) могут использоваться специальные заполнители или переменные, обозначаемые '''%(<u>name</u>)'''. Они подставляются во время вызова команды.


====Имя пользователя, вошедшего в систему====
  {{path|%(USER)}}
  {{path|%(USER)}}
Расширяется до имени пользователя, входящего в систему.
Расширяется до имени пользователя, входящего в систему.
-----
====Имя домена, имя пользователя====
  {{path|%(DOMAIN_NAME), %(DOMAIN_USER)}}
  {{path|%(DOMAIN_NAME), %(DOMAIN_USER)}}
Winbind использует специальные UNIX-имена пользователей в виде "<u>domain</u>\<u>username</u>", а {{path|%(DOMAIN_NAME)}} и {{path|%(DOMAIN_USER)}} обеспечивают их разделение на части.  Это удобно, когда имя ресурса на MSAD-сервере совпадает с именем пользователя, например, {{path|''<nowiki><volume fstype="cifs" server="fsbox" path="%(DOMAIN_USER)"/></nowiki>''}}.
Winbind использует специальные UNIX-имена пользователей в виде "<u>domain</u>\<u>username</u>", а {{path|%(DOMAIN_NAME)}} и {{path|%(DOMAIN_USER)}} обеспечивают их разделение на части.  Это удобно, когда имя ресурса на MSAD-сервере совпадает с именем пользователя, например, {{path|''<nowiki><volume fstype="cifs" server="fsbox" path="%(DOMAIN_USER)"/></nowiki>''}}.
-----
====UID, GID пользователя====
  {{path|%(USERUID), %(USERGID)}}
  {{path|%(USERUID), %(USERGID)}}
Числовые UID и GID основной группы пользователя, вошедшего в систему. Получаются с помощью функции {{path|getpw*()}}, а не {{path|getuid()}}. Их удобно использовать в сочетании с опциями монтирования {{path|<nowiki>uid=</nowiki>}} или {{path|<nowiki>gid=</nowiki>}}, например, {{path|<nowiki><volume options="uid=%(USERUID)"/></nowiki>}}. Обратите внимание, что для монтирования {{path|smbfs}} или {{path|cifs}} не нужно указывать {{path|<nowiki>uid=%(USERUID</nowiki>)}}, так как это уже автоматически выполняется программой {{path|pam_mount}}.
Числовые UID и GID основной группы пользователя, вошедшего в систему. Получаются с помощью функции {{path|getpw*()}}, а не {{path|getuid()}}. Их удобно использовать в сочетании с опциями монтирования {{path|<nowiki>uid=</nowiki>}} или {{path|<nowiki>gid=</nowiki>}}, например, {{path|<nowiki><volume options="uid=%(USERUID)"/></nowiki>}}. Обратите внимание, что для монтирования {{path|smbfs}} или {{path|cifs}} не нужно указывать {{path|<nowiki>uid=%(USERUID</nowiki>)}}, так как это уже автоматически выполняется программой {{path|pam_mount}}.
-----
====Имя группы USERGID====
  {{path|%(GROUP)}}
  {{path|%(GROUP)}}
Имя группы для %(USERGID).
Имя группы для %(USERGID).
-----
 
Все остальные переменные, которые вы можете найти в исходном коде, являются внутренними для pam_mount и, скорее всего, не будут использованы в процессе монтирования.
Все остальные переменные, которые вы можете найти в исходном коде, являются внутренними для pam_mount и, скорее всего, не будут использованы в процессе монтирования.


Строка 102: Строка 105:


====Общие настраиваемые параметры====
====Общие настраиваемые параметры====
=====Включение отладки при авторизации=====
  <debug enable="1" />
  <debug enable="1" />
Включает вывод подробной информации при входе в систему на {{path|stderr}} и {{path|syslog}}. Некоторые программы не справляются с выводом на {{path|stderr}}, (см. doc/bugs.txt).  
Включает вывод подробной информации при входе в систему на {{path|stderr}} и {{path|syslog}}. Некоторые программы не справляются с выводом на {{path|stderr}}, (см. doc/bugs.txt).  
Строка 109: Строка 113:


По умолчанию установлено значение 0. Поскольку файл конфигурации обрабатывается линейно, директива {{path|<debug>}} вступает в силу, как только ее обработают - поэтому рекомендуется помещать ее в начало файла, перед любыми значениями {{path|<nowiki><volume></nowiki>}}.
По умолчанию установлено значение 0. Поскольку файл конфигурации обрабатывается линейно, директива {{path|<debug>}} вступает в силу, как только ее обработают - поэтому рекомендуется помещать ее в начало файла, перед любыми значениями {{path|<nowiki><volume></nowiki>}}.
-----
=====Настройка завершения процессов при разлогинивании пользователя=====
  <logout wait="microseconds" hup="yes/no" term="yes/no" kill="yes/no" />.
  <logout wait="microseconds" hup="yes/no" term="yes/no" kill="yes/no" />.
Существуют программы, которые не завершаются при закрытии сеанса. (Это относится к "окончательному" закрытию, т.е. когда завершается последний сеанс пользователя.) Примерами могут быть процессы, все еще работающие в фоновом режиме; или сломанный менеджер сеансов {{path|X}}, который не завершил работу своих дочерних программ, или других программ {{path|X}}, которые не отреагировали на уведомление о завершении работы сервера {{path|X}}. {{path|pam_mount}} может быть настроен на завершение таких процессов и, по желанию, на ожидание перед отправкой команд.
Существуют программы, которые не завершаются при закрытии сеанса. (Это относится к "окончательному" закрытию, т.е. когда завершается последний сеанс пользователя.) Примерами могут быть процессы, все еще работающие в фоновом режиме; или сломанный менеджер сеансов {{path|X}}, который не завершил работу своих дочерних программ, или других программ {{path|X}}, которые не отреагировали на уведомление о завершении работы сервера {{path|X}}. {{path|pam_mount}} может быть настроен на завершение таких процессов и, по желанию, на ожидание перед отправкой команд.
-----
 
=====Определение имени файла пользовательского pam_mount.conf=====
  <luserconf name=".pam_mount.conf.xml" />
  <luserconf name=".pam_mount.conf.xml" />
Отдельные пользователи могут указывать дополнительные тома в файле по заданному имени относительно своего домашнего каталога. Наличие {{path|<luserconf>}} в главном конфигурационном файле обеспечивает эту возможность. Если эта функция включена, то пользователи могут монтировать и размонтировать любые указанные ими тома, на которые они имеют права владения (в случае локального монтирования). Процесс монтирования выполняется от имени суперпользователя. Это может иметь последствия для безопасности, поэтому по умолчанию эта возможность отключена. Конфигурационные файлы локального пользователя анализируются после монтирования всех томов из файла глобальной конфигурации, поэтому можно сначала монтировать домашние каталоги с помощью глобальной конфигурации, а затем монтировать последующие тома из конфигурационных файлов локального пользователя.
Отдельные пользователи могут указывать дополнительные тома в файле по заданному имени относительно своего домашнего каталога. Наличие {{path|<luserconf>}} в главном конфигурационном файле обеспечивает эту возможность. Если эта функция включена, то пользователи могут монтировать и размонтировать любые указанные ими тома, на которые они имеют права владения (в случае локального монтирования). Процесс монтирования выполняется от имени суперпользователя. Это может иметь последствия для безопасности, поэтому по умолчанию эта возможность отключена. Конфигурационные файлы локального пользователя анализируются после монтирования всех томов из файла глобальной конфигурации, поэтому можно сначала монтировать домашние каталоги с помощью глобальной конфигурации, а затем монтировать последующие тома из конфигурационных файлов локального пользователя.
-----
 
=====Определение опций, разрешенных в конфигурационных файлах для каждого пользователя=====
  <mntoptions allow="options,..." />
  <mntoptions allow="options,..." />
Элементы {{path|<mntoptions>}} определяют, какие опции могут быть указаны в {{path|<volumes>}} в конфигурационных файлах для каждого пользователя (см. {{path|<luserconf>}}). К главному файлу это не относится. Указание {{path|<mntoptions>}} запрещено и игнорируется в конфигурациях для каждого пользователя. Список разрешений по умолчанию состоит из {{path|"nosuid,nodev"}}, и это значение очищается, когда парсер конфигурации видит первый атрибут {{path|<nowiki>allow="..."</nowiki>}}. При этом все последующие {{path|<nowiki>allow="..."</nowiki>}} являются суммирующимися.
Элементы {{path|<mntoptions>}} определяют, какие опции могут быть указаны в {{path|<volumes>}} в конфигурационных файлах для каждого пользователя (см. {{path|<luserconf>}}). К главному файлу это не относится. Указание {{path|<mntoptions>}} запрещено и игнорируется в конфигурациях для каждого пользователя. Список разрешений по умолчанию состоит из {{path|"nosuid,nodev"}}, и это значение очищается, когда парсер конфигурации видит первый атрибут {{path|<nowiki>allow="..."</nowiki>}}. При этом все последующие {{path|<nowiki>allow="..."</nowiki>}} являются суммирующимися.
-----
 
=====Определение опций, запрещенных в конфигурационных файлах для каждого пользователя=====
  <mntoptions deny="options,..." />
  <mntoptions deny="options,..." />
Любые опции, перечисленные в {{path|deny}}, не могут указываться в списке параметров монтирования для любого пользователя. По умолчанию список опций deny пуст.
Любые опции, перечисленные в {{path|deny}}, не могут указываться в списке параметров монтирования для любого пользователя. По умолчанию список опций deny пуст.
-----
 
=====Определение опций, которые должны быть конфигурационных файлах для каждого пользователя=====
  <mntoptions require="options,..." />
  <mntoptions require="options,..." />
Любые опции, перечисленные в {{path|require}}, должны присутствовать в списке параметров монтирования для каждого пользователя. Список {{path|require}} по умолчанию состоит из {{path|<nowiki>"nosuid,nodev"</nowiki>}}, и, как и {{path|<nowiki>allow=""</nowiki>}}, очищается при первой встрече с парсером, а в остальном является добавочным.
Любые опции, перечисленные в {{path|require}}, должны присутствовать в списке параметров монтирования для каждого пользователя. Список {{path|require}} по умолчанию состоит из {{path|<nowiki>"nosuid,nodev"</nowiki>}}, и, как и {{path|<nowiki>allow=""</nowiki>}}, очищается при первой встрече с парсером, а в остальном является добавочным.
-----
 
=====Определение окружения пользователя=====
  <path>directories...</path>
  <path>directories...</path>
Значение по умолчанию для переменной окружения {{path|PATH}} не совпадает в разных дистрибутивах, поэтому {{path|pam_mount}} предоставляет собственный набор приемлемых значений по умолчанию, которые вы можете изменять по своему усмотрению.
Значение по умолчанию для переменной окружения {{path|PATH}} не совпадает в разных дистрибутивах, поэтому {{path|pam_mount}} предоставляет собственный набор приемлемых значений по умолчанию, которые вы можете изменять по своему усмотрению.
Строка 138: Строка 147:
==== Вспомогательные программы ====
==== Вспомогательные программы ====
Некоторым программам монтирования для правильной работы необходимы специальные параметры по умолчанию.  Рекомендуется указывать {{path|<nowiki>uid=</nowiki>}} для {{path|CIFS}}, поскольку она монтируется от имени {{path|root}} и в противном случае будет показывать файлы, принадлежащие {{path|root}}, а не пользователю, входящему в систему.
Некоторым программам монтирования для правильной работы необходимы специальные параметры по умолчанию.  Рекомендуется указывать {{path|<nowiki>uid=</nowiki>}} для {{path|CIFS}}, поскольку она монтируется от имени {{path|root}} и в противном случае будет показывать файлы, принадлежащие {{path|root}}, а не пользователю, входящему в систему.
-----
=====Считывание паролей OpenSSH из stdin=====
  <fd0ssh>program...</fd0ssh>.
  <fd0ssh>program...</fd0ssh>.
'''fd0ssh''' - это хак для OpenSSH, который, по сути, заставляет его считывать пароли из {{path|stdin}}, хотя обычно OpenSSH этого не делает.
'''fd0ssh''' - это хак для OpenSSH, который, по сути, заставляет его считывать пароли из {{path|stdin}}, хотя обычно OpenSSH этого не делает.
-----
=====Проверка локальных томов перед монтированием=====
  <fsck>fsck -p %(FSCKTARGET)</fsck>.
  <fsck>fsck -p %(FSCKTARGET)</fsck>.
Если задана программа fsck, то локальные тома будут проверяться перед монтированием.
Если задана программа fsck, то локальные тома будут проверяться перед монтированием.
-----
=====Идентификация процессов, использующих файлы в заданном каталоге=====
  <ofl>ofl -k%(SIGNAL) %(MNTPT)</ofl>.
  <ofl>ofl -k%(SIGNAL) %(MNTPT)</ofl>.
Open  File  Lister используется для идентификации процессов, которые используют файлы в заданном подкаталоге, и, по желанию, посылает сигнал этим процессам.
Open  File  Lister используется для идентификации процессов, которые используют файлы в заданном подкаталоге, и, по желанию, посылает сигнал этим процессам.
-----
=====Программа для управления подсчетом ссылок отслеживающих сеансы=====
  <pmvarrun>pmvarrun ...</pmvarrun>.
  <pmvarrun>pmvarrun ...</pmvarrun>.
'''pmvarrun(8)''' - это отдельная программа для управления подсчетом ссылок, которые отслеживают пользовательские сеансы.
'''pmvarrun(8)''' - это отдельная программа для управления подсчетом ссылок, которые отслеживают пользовательские сеансы.


==== Программы монтирования ====
==== Программы монтирования ====
Команды для монтирования/размонтирования томов. Они могут принимать различные параметры. Вы можете указывать как абсолютные пути, так и относительные. В этом случае будет выполняться поиск в $PATH. Поскольку программы для входа в систему по умолчанию имеют разные PATH, pam_mount имеет свое собственное определение пути.
Команды для монтирования/размонтирования томов. Они могут принимать различные параметры. Вы можете указывать как абсолютные пути, так и относительные. В этом случае будет выполняться поиск в {{path|$PATH}}. Поскольку программы для входа в систему по умолчанию имеют разные {{path|PATH}}, {{path|pam_mount}} имеет свое собственное определение пути.
-----
 
=====Штатная программа монтирования=====
  <lclmount>mount -p0 -t %(FSTYPE) ...</lclmount>
  <lclmount>mount -p0 -t %(FSTYPE) ...</lclmount>
Штатная программа монтирования.
Штатная программа монтирования.
-----
 
=====Программа размонтирования=====
  <umount>umount %(MNTPT)</umount>
  <umount>umount %(MNTPT)</umount>
Если для заданного типа файловой системы не предусмотрена специальная программа umount, то будет использоваться обычная программа umount.
Если для заданного типа файловой системы не предусмотрена специальная программа {{path|umount}}, то будет использоваться обычная программа {{path|umount}}.


Linux поддерживает "ленивое" размонтирование с помощью команды `/sbin/umount -l`. Это может быть опасно для зашифрованных томов, поскольку базовое устройство не будет размонтировано.  
Linux поддерживает "ленивое" размонтирование с помощью команды {{path|/sbin/umount -l}}. Это может быть опасно для зашифрованных томов, поскольку базовое устройство не будет размонтировано.  


Устройства со шлейфом также подвержены этому (не размонтируются, когда файлы еще открыты).  Кроме того, размонтирование SMB-томов должно вызываться на %(MNTPT), а не на %(VOLUME).
Устройства со шлейфом также подвержены этому (не размонтируются, когда файлы еще открыты).  Кроме того, размонтирование SMB-томов должно вызываться на {{path|%(MNTPT)}}, а не на {{path|%(VOLUME)}}.


-----
=====Программы монтирования для различных ФС=====


Команды для различных программ монтирования. Не все из них имеют специальный помощник umount, поскольку некоторым он не нужен.
Команды для различных программ монтирования. Не все из них имеют специальный помощник {{path|umount}}, поскольку некоторым он не нужен.


  <cifsmount>mount.cifs ...</cifsmount>
  <cifsmount>mount.cifs ...</cifsmount>
Строка 198: Строка 209:
-----
-----
  <msg-sessionpw>reenter...:</msg-sessionpw>.
  <msg-sessionpw>reenter...:</msg-sessionpw>.
В случае если в блоке PAM 'session' отсутствует пароль (например, при su от root к пользователю), он запросит его снова. Этот запрос также может быть настроен.
В случае если в блоке {{path|PAM}} '{{path|session}}' отсутствует пароль (например, при {{path|su}} от {{path|root}} к пользователю), он запросит его снова. Этот запрос также может быть настроен.


===Расширенное управление пользователями===
===Расширенное управление пользователями===
Иногда простых атрибутов управления пользователем для элемента <volume> бывает недостаточно, когда требуется построить более сложные выражения для конкретного пользователя, к которому относится тот или иной том. Вместо атрибутов, расширенное управление пользователем позволяет задать дополнительные элементы внутри "скобок" <volume>, например так:
Иногда простых атрибутов управления пользователем для элемента {{path|<volume>}} бывает недостаточно, когда требуется построить более сложные выражения для конкретного пользователя, к которому относится тот или иной том. Вместо атрибутов, расширенное управление пользователем позволяет задать дополнительные элементы внутри "скобок" {{path|<volume>}}, например так:
  <volume path="/dev/shm" mountpoint="~"> <and> <sgrp>students</sgrp> <not> <sgrp>profs</sgrp> </not> </and> </volume>
  <volume path="/dev/shm" mountpoint="~"> <and> <sgrp>students</sgrp> <not> <sgrp>profs</sgrp> </not> </and> </volume>
Которые алгеброй логики транслируется как: <pre>(students && !profs)</pre>
Которые алгеброй логики транслируется как: <pre>(students && !profs)</pre>


====Логические операторы====
====Логические операторы====
=====AND=====
  <and><elements><nowiki>*</nowiki></and>
  <and><elements><nowiki>*</nowiki></and>
{{Note|В логическом операторе "И" выражение вида a && b будет равно true только тогда, когда и а и b равны true.}}
{{Note|В логическом операторе "И" выражение вида a && b будет равно true только тогда, когда и а и b равны true.}}
Все элементы в данной конструкции связаны логическим умножением (И, &&) и логически связаны между собой. Может использоваться любое количество элементов.
Все элементы в данной конструкции связаны логическим умножением (И, &&) и логически связаны между собой. Может использоваться любое количество элементов.
-----
=====OR=====
  <or><elements><nowiki>*</nowiki></or>
  <or><elements><nowiki>*</nowiki></or>
{{Note|В логическом операторе "ИЛИ" выражение вида a <nowiki>||</nowiki> b будет равно true, когда или a, или b (или оба) равны true.}}
{{Note|В логическом операторе "ИЛИ" выражение вида a <nowiki>||</nowiki> b будет равно true, когда или a, или b (или оба) равны true.}}
Все элементы в данной конструкции логически объединены логическим сложением (ИЛИ, ||). Может использоваться любое количество элементов.
Все элементы в данной конструкции логически объединены логическим сложением (ИЛИ, ||). Может использоваться любое количество элементов.
-----
=====XOR=====
  <xor><elements>{2}</xor>
  <xor><elements>{2}</xor>
{{Note|В логическом операторе "исключающее ИЛИ" выражение вида a <nowiki>^</nowiki> b будет равно true, только когда или a, или b равен true.}}
{{Note|В логическом операторе "исключающее ИЛИ" выражение вида a <nowiki>^</nowiki> b будет равно true, только когда или a, или b равен true.}}
В данной конструкции используются только два элемента.
В данной конструкции используются только два элемента.
-----
=====NOT=====
  <not><element></not>
  <not><element></not>
{{Note|В логическом операторе "НЕ" выражение вида !a будет равно true когда a и b имеют разные значения}}
{{Note|В логическом операторе "НЕ" выражение вида !a будет равно true когда a и b имеют разные значения}}
Единственный элемент внутри <not> логически отрицается.
Единственный элемент внутри <not> логически отрицается.
====Выбор пользователей====
====Выбор пользователей====
=====Сопоставление тома с заданным именем пользователя=====
  <user>username</user>
  <user>username</user>
Сопоставление тома с заданным именем пользователя.
Сопоставление тома с заданным именем пользователя.
-----
=====Сопоставление UID пользователя с заданным UID=====
  <uid>number</uid> или <uid>number-number</uid>
  <uid>number</uid> или <uid>number-number</uid>
Сопоставление UID пользователя, входящего в систему, с UID или диапазоном UID.
Сопоставление UID пользователя, входящего в систему, с UID или диапазоном UID.
-----
=====Сопоставление основной группы с GID=====
  <gid>number</gid> или <gid>number-number</gid>
  <gid>number</gid> или <gid>number-number</gid>
Сопоставление основной группы пользователя, входящего в систему, с GID или диапазоном GID.
Сопоставление основной группы пользователя, входящего в систему, с GID или диапазоном GID.
-----
=====Проверка по основной группе=====
  <pgrp>groupname</pgrp>
  <pgrp>groupname</pgrp>
Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы в качестве основной.
Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы в качестве основной.
-----
=====Проверка по первичной и вторичной группе=====
  <sgrp>groupname</sgrp>
  <sgrp>groupname</sgrp>
Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы, в качестве первичной или вторичной.
Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы, в качестве первичной или вторичной.
Строка 239: Строка 253:
====Атрибуты====
====Атрибуты====
  icase="yes" или icase="no"
  icase="yes" или icase="no"
Атрибут icase может быть использован в тегах <user>, <pgrp> и <sgrp>, чтобы включить (или не включать) сопоставление без учета регистра. По умолчанию он принимает значение "no".
Атрибут {{path|icase}} может быть использован в тегах {{path|<user>}}, {{path|<pgrp>}} и {{path|<sgrp>}}, чтобы включить (или не включать) сопоставление без учета регистра. По умолчанию он принимает значение "no".
   regex="yes" (или no)
   regex="yes" (или no)
Атрибут regex может быть использован в тегах <user>, <pgrp> и <sgrp> для интерпретации текстового содержимого тега как шаблона регулярного выражения, совместимого с Perl. Данный атрибут может использоваться совместно с атрибутом "icase" (см. выше).
Атрибут regex может быть использован в тегах {{path|<user>}}, {{path|<pgrp>}} и {{path|<sgrp>}} для интерпретации текстового содержимого тега как шаблона регулярного выражения, совместимого с Perl. Данный атрибут может использоваться совместно с атрибутом "icase" (см. выше).


Например:  {{path|<nowiki><user regex="yes">joe</user></nowiki>}} соответствует любому пользователю, у которого в имени пользователя встречается последовательность букв "joe". Поэтому используйте функцию regex с осторожностью и добавляйте якоря ^ и $ для ограничения неожиданностей безопасности.
Например:  {{path|<nowiki><user regex="yes">joe</user></nowiki>}} соответствует любому пользователю, у которого в имени пользователя встречается последовательность букв "joe". Поэтому используйте функцию regex с осторожностью и добавляйте якоря ^ и $ для ограничения неожиданностей безопасности.
Строка 248: Строка 262:


==Примеры==
==Примеры==
Помните, что ~ может использоваться в атрибуте точки монтирования для обозначения домашнего каталога, который можно получить с помощью функции getpwent(3).
Помните, что {{path|~}} может использоваться в атрибуте точки монтирования для обозначения домашнего каталога, который можно получить с помощью функции {{path|getpwent}}.


===sshfs и ccgfs===
===sshfs и ccgfs===
Если не указывать никакого пути после двоеточия (:), то используется путь, куда вас направит ssh по-умолчнию, обычно это домашний каталог.
Если не указывать никакого пути после двоеточия (:), то используется путь, куда вас направит {{path|ssh}} по-умолчнию, обычно это домашний каталог.
  <volume fstype="fuse" path="sshfs#%(USER)@fileserver:" mountpoint="~" />
  <volume fstype="fuse" path="sshfs#%(USER)@fileserver:" mountpoint="~" />


Строка 266: Строка 280:
  <volume user="user" fstype="ncpfs" server="krueger" path="public" mountpoint="/home/user/krueger" options="username=user.context" />
  <volume user="user" fstype="ncpfs" server="krueger" path="public" mountpoint="/home/user/krueger" options="username=user.context" />
===Связанное монтирование (Bind Mounts)===
===Связанное монтирование (Bind Mounts)===
Это может быть полезно в сочетании с pam_chroot:
Это может быть полезно в сочетании с {{path|pam_chroot}}:
  <volume path="/bin" mountpoint="~/bin" options="bind" />.
  <volume path="/bin" mountpoint="~/bin" options="bind" />
 
===Монтирование tmpfs===
===Монтирование tmpfs===
Универсальное монтирование tmpfs с ограниченным размером:
Универсальное монтирование tmpfs с ограниченным размером:
Строка 279: Строка 294:
Пример зашифрованного домашнего каталога OpenBSD:
Пример зашифрованного домашнего каталога OpenBSD:
  <volume path="/home/user.img" mountpoint="/home/user" options="svnd0" />
  <volume path="/home/user.img" mountpoint="/home/user" options="svnd0" />
[[Категория:PAM]]
[[Категория:pam_mount]]
{{Category navigation|title=Перевод man-ов|category=Перевод man-ов|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=PAM|category=PAM|sortkey={{SUBPAGENAME}}}}

Текущая версия от 13:14, 17 февраля 2025

Имя

pam_mount.conf - Описание файла конфигурации pam_mount

Обзор

Конфигурационный файл pam_mount определяет:

  • мягкие настройки по умолчанию для команд, которые будет выполнять pam_mount,
  • сообщения, которые он будет отображать,
  • тома, которые нужно монтировать при входе в систему.

Начиная с версии pam_mount 0.18, конфигурационный файл записывается в формате XML, что позволяет упростить кодовую базу pam_mount и в то же время дает конечному пользователю свободу форматирования. Специальные символы <, > и &, используемые в самом XML, должны быть закодированы как <, > и &, соответственно;

Кроме того, в области "..." символ " должен кодироваться как &quot; , но эти три-четыре символа все равно вряд ли будут часто встречаться.

Не используйте комментарии внутри элементов, принимающих дословный текст, например <fusermount></fusermount>. Это не обрабатывается синтаксическим анализатором XML-дерева pam_mount.

Определения томов

Тома определяются с помощью элемента <volume>, который, в основном, принимает параметры в виде атрибутов, например:

<volume user="joe" fstype="nfs" server="fsbox" path="/home/%(USER)" mountpoint="/bigdisk/%(USER)" />

И определяет, что и для кого монтировать. Существует множество настроек, которые описаны в данном разделе.

Простое управление пользователями

Следующие атрибуты управляют тем, будет ли смонтирован том после того, как пользователь вошел в систему. По умолчанию монтирование томов применяется ко всем пользователям, а указание атрибутов ограничивает его только заданными условиями, т.е. происходит их логическое объединение (лог. операция И). Существует более мощный и многословный механизм задания сложных условий, описанный ниже в разделе "Расширенное управление пользователями".

Ограничение по имени пользователя

user="username"

Ограничить доступ к тому для пользователя с указанным именем

Ограничение по UID

uid="number" или uid="number-number"

Ограничение доступа к тому для пользователя (пользователей), идентифицированного по UID или диапазону UID.

Ограничение по основной группе (по имени)

pgrp="groupname"

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

Ограничение по основной группе (по GID)

gid="number" или gid="number-number"

Ограничение доступа к тому для пользователей, для которых группа(ы), указанная в GID или диапазоне GID, является основной группой.

Ограничение по имени группы

sgrp="groupname"

Ограничение доступа к тому для пользователей, которые являются членами группы, указанной в имени (либо как первичная, либо как вторичная группа).

Конфигурация тома

С помощью следующих атрибутов выбираются том-источник, место назначения, опции и т.д.

Тип файловой системы

fstype="type"
  • Тип файловой системы, который может быть любым, понятным ядру, пользовательскому пространству и pam_mount.
  • Если в fstype указан специальный тип pam_mount, то pam_mount будет работать с ним. В противном случае fstype передается в mount(8), который, в свою очередь, ищет в пользовательском пространстве помощника /sbin/mount.fstype и запускает его, если он существует, а в противном случае mount(8) вызовет mount(2) для непосредственного монтирования ядром.
  • mount(8) знает об автоматическом fstype, что может быть полезно в некоторых случаях. Если не указывать атрибут fstype, то подразумевается fstype="auto". Обратите внимание, что монтирование с использованием auto может быть неудачным, если модуль ядра файловой системы еще не загружен, поскольку mount(8) будет проверять /proc/partitions.

Типы fstype cifs, smbfs, ncpfs, fuse, nfs и nfs переопределяются pam_mount, и мы запускаем соответствующие вспомогательные программы напрямую, а не вызываем mount(8) с базовым набором аргументов по умолчанию, который часто недостаточен для сетевых файловых систем. Подробнее см. раздел "Примеры" этой manpage ниже.

Вызов программы без привилегий суперпользователя

noroot="1"

Вызов программы mount без привилегий root. По умолчанию для fuse fstype установлено значение yes, поскольку по умолчанию, чтобы получить доступ к файлам, тома FUSE должны монтироваться от имени пользователя, вошедшего в систему.

Определение имени сервера для подключения

server="name"

Определяет сервер, к которому следует подключаться в случае указания типов файловых систем - cifs, smbfs, ncpfs и nfs. Для всех остальных типов fs этот атрибут игнорируется. Вместо этого можно указать сервер в атрибуте path, но при этом необходимо придерживаться специального синтаксиса, требуемого конкретным типом fs. (Например, в CIFS используется "//server/path", а в NFS - "server:path" и т.д.).

Расположение тома относительно сервера

path="path"

Этот обязательный атрибут задает расположение тома относительно сервера (если он указан).

Каталог назначения (точка монтирования)

mountpoint="directory"

Здесь указывается каталог назначения, в который монтируется том. "~" указывает на домашний каталог пользователя, который присутствует в базе данных passwd, в соответствии с семантикой sh. "~name" не поддерживается. Если этот атрибут опущен, то местоположение считывается из файла /etc/fstab, который также требует, чтобы path был устройством или исходным каталогом записи fstab.

Опции монтирования

options="..."

Здесь указываются опции монтирования. Если опция опущена и используется /etc/fstab (см. "mountpoint"), то опции также будут взяты из fstab.

Zerossh

ssh="0" или ssh="1"

Опция ssh включает (zerossh, см. pmt-fd0ssh(1)) для данного тома передачу пароля к ssh через механизм, специфичный для ssh. Включите эту опцию для любого монтирования с использованием исполняемых файлов SSH, например, ccgfs или sshfs. Не включайте ее ни для чего другого, иначе вход в систему, скорее всего, завершится.

Шифр для тома

cipher="cipher"

Устанавливает название шифра для тома. Используется с параметром fstype=crypt.

Имя шифра

fskeycipher="ciphertype"

Имя шифра OpenSSL для ключа fskey. Используется с шифром crypt fstype (dm-crypt и LUKS). Для непосредственной передачи содержимого файла в cryptsetup без расшифровки OpenSSL может быть использовано специальное ключевое слово "none".

Имя хэша

fskeyhash="hash"

Имя хэша OpenSSL для ключа fskey.

Путь к ключу файловой системы

fskeypath="path"

Путь к ключу файловой системы.

Переменные

В атрибутах и командах (см. следующий раздел) могут использоваться специальные заполнители или переменные, обозначаемые %(name). Они подставляются во время вызова команды.

Имя пользователя, вошедшего в систему

%(USER)

Расширяется до имени пользователя, входящего в систему.

Имя домена, имя пользователя

%(DOMAIN_NAME), %(DOMAIN_USER)

Winbind использует специальные UNIX-имена пользователей в виде "domain\username", а %(DOMAIN_NAME) и %(DOMAIN_USER) обеспечивают их разделение на части. Это удобно, когда имя ресурса на MSAD-сервере совпадает с именем пользователя, например, <volume fstype="cifs" server="fsbox" path="%(DOMAIN_USER)"/>.

UID, GID пользователя

%(USERUID), %(USERGID)

Числовые UID и GID основной группы пользователя, вошедшего в систему. Получаются с помощью функции getpw*(), а не getuid(). Их удобно использовать в сочетании с опциями монтирования uid= или gid=, например, <volume options="uid=%(USERUID)"/>. Обратите внимание, что для монтирования smbfs или cifs не нужно указывать uid=%(USERUID), так как это уже автоматически выполняется программой pam_mount.

Имя группы USERGID

%(GROUP)

Имя группы для %(USERGID).

Все остальные переменные, которые вы можете найти в исходном коде, являются внутренними для pam_mount и, скорее всего, не будут использованы в процессе монтирования.

Параметры pam_mount

Кроме томов, в pam_mount.conf.xml допускаются и другие элементы, управляющие поведением самого pam_mount.

Общие настраиваемые параметры

Включение отладки при авторизации
<debug enable="1" />

Включает вывод подробной информации при входе в систему на stderr и syslog. Некоторые программы не справляются с выводом на stderr, (см. doc/bugs.txt).

  • 0 отключает отладку
  • 1 включает трассировку в pam_mount
  • 2 дополнительно включает трассировку в mount.crypt

По умолчанию установлено значение 0. Поскольку файл конфигурации обрабатывается линейно, директива <debug> вступает в силу, как только ее обработают - поэтому рекомендуется помещать ее в начало файла, перед любыми значениями <volume>.

Настройка завершения процессов при разлогинивании пользователя
<logout wait="microseconds" hup="yes/no" term="yes/no" kill="yes/no" />.

Существуют программы, которые не завершаются при закрытии сеанса. (Это относится к "окончательному" закрытию, т.е. когда завершается последний сеанс пользователя.) Примерами могут быть процессы, все еще работающие в фоновом режиме; или сломанный менеджер сеансов X, который не завершил работу своих дочерних программ, или других программ X, которые не отреагировали на уведомление о завершении работы сервера X. pam_mount может быть настроен на завершение таких процессов и, по желанию, на ожидание перед отправкой команд.

Определение имени файла пользовательского pam_mount.conf
<luserconf name=".pam_mount.conf.xml" />

Отдельные пользователи могут указывать дополнительные тома в файле по заданному имени относительно своего домашнего каталога. Наличие <luserconf> в главном конфигурационном файле обеспечивает эту возможность. Если эта функция включена, то пользователи могут монтировать и размонтировать любые указанные ими тома, на которые они имеют права владения (в случае локального монтирования). Процесс монтирования выполняется от имени суперпользователя. Это может иметь последствия для безопасности, поэтому по умолчанию эта возможность отключена. Конфигурационные файлы локального пользователя анализируются после монтирования всех томов из файла глобальной конфигурации, поэтому можно сначала монтировать домашние каталоги с помощью глобальной конфигурации, а затем монтировать последующие тома из конфигурационных файлов локального пользователя.

Определение опций, разрешенных в конфигурационных файлах для каждого пользователя
<mntoptions allow="options,..." />

Элементы <mntoptions> определяют, какие опции могут быть указаны в <volumes> в конфигурационных файлах для каждого пользователя (см. <luserconf>). К главному файлу это не относится. Указание <mntoptions> запрещено и игнорируется в конфигурациях для каждого пользователя. Список разрешений по умолчанию состоит из "nosuid,nodev", и это значение очищается, когда парсер конфигурации видит первый атрибут allow="...". При этом все последующие allow="..." являются суммирующимися.

Определение опций, запрещенных в конфигурационных файлах для каждого пользователя
<mntoptions deny="options,..." />

Любые опции, перечисленные в deny, не могут указываться в списке параметров монтирования для любого пользователя. По умолчанию список опций deny пуст.

Определение опций, которые должны быть конфигурационных файлах для каждого пользователя
<mntoptions require="options,..." />

Любые опции, перечисленные в require, должны присутствовать в списке параметров монтирования для каждого пользователя. Список require по умолчанию состоит из "nosuid,nodev", и, как и allow="", очищается при первой встрече с парсером, а в остальном является добавочным.

Определение окружения пользователя
<path>directories...</path>

Значение по умолчанию для переменной окружения PATH не совпадает в разных дистрибутивах, поэтому pam_mount предоставляет собственный набор приемлемых значений по умолчанию, которые вы можете изменять по своему усмотрению.

Параметры связанные с томами

<mkmountpoint enable="1" remove="true" />

Данный параметр управляет автоматическим созданием и удалением точек монтирования.

Если в момент монтирования тома точка монтирования не существует, то с помощью параметра enable можно дать команду для pam_mount для ее создания.

Обычно созданные таким образом каталоги сохраняются после выхода из системы, но для их удаления можно установить у параметра remove значение true. Но только в том случае, если до этого данная точка была автоматически создана pam_mount в том же сеансе.

Вспомогательные программы

Некоторым программам монтирования для правильной работы необходимы специальные параметры по умолчанию. Рекомендуется указывать uid= для CIFS, поскольку она монтируется от имени root и в противном случае будет показывать файлы, принадлежащие root, а не пользователю, входящему в систему.

Считывание паролей OpenSSH из stdin
<fd0ssh>program...</fd0ssh>.

fd0ssh - это хак для OpenSSH, который, по сути, заставляет его считывать пароли из stdin, хотя обычно OpenSSH этого не делает.

Проверка локальных томов перед монтированием
<fsck>fsck -p %(FSCKTARGET)</fsck>.

Если задана программа fsck, то локальные тома будут проверяться перед монтированием.

Идентификация процессов, использующих файлы в заданном каталоге
<ofl>ofl -k%(SIGNAL) %(MNTPT)</ofl>.

Open File Lister используется для идентификации процессов, которые используют файлы в заданном подкаталоге, и, по желанию, посылает сигнал этим процессам.

Программа для управления подсчетом ссылок отслеживающих сеансы
<pmvarrun>pmvarrun ...</pmvarrun>.

pmvarrun(8) - это отдельная программа для управления подсчетом ссылок, которые отслеживают пользовательские сеансы.

Программы монтирования

Команды для монтирования/размонтирования томов. Они могут принимать различные параметры. Вы можете указывать как абсолютные пути, так и относительные. В этом случае будет выполняться поиск в $PATH. Поскольку программы для входа в систему по умолчанию имеют разные PATH, pam_mount имеет свое собственное определение пути.

Штатная программа монтирования
<lclmount>mount -p0 -t %(FSTYPE) ...</lclmount>

Штатная программа монтирования.

Программа размонтирования
<umount>umount %(MNTPT)</umount>

Если для заданного типа файловой системы не предусмотрена специальная программа umount, то будет использоваться обычная программа umount.

Linux поддерживает "ленивое" размонтирование с помощью команды /sbin/umount -l. Это может быть опасно для зашифрованных томов, поскольку базовое устройство не будет размонтировано.

Устройства со шлейфом также подвержены этому (не размонтируются, когда файлы еще открыты). Кроме того, размонтирование SMB-томов должно вызываться на %(MNTPT), а не на %(VOLUME).

Программы монтирования для различных ФС

Команды для различных программ монтирования. Не все из них имеют специальный помощник umount, поскольку некоторым он не нужен.

<cifsmount>mount.cifs ...</cifsmount>
<cryptmount>mount.crypt ...</cryptmount>
<cryptumount>umount.crypt %(MNTPT)</cryptumount>
Помощники монтирования томов dm-crypt и LUKS.
<fusemount>mount.fuse ...</fusemount>
<fuseumount>fuserumount ...</fuseumount>
<ncpmount>ncpmount ...</ncpmount>
<ncpumount>ncpumount ...</ncpumount>
<nfsmount>mount %(SERVER):%(VOLUME) ...</nfsmount>
<smbmount>smbmount ...</smbmount>
<smbumount>smbumount ...</smbumount>

Сообщения

<msg-authpw>pam_mount password:</msg-authpw>

Когда pam_mount:

  • не может получить пароль через PAM
  • сконфигурирован так, чтобы не делать этого в первую очередь
  • настроен на интерактивный запрос пароля в качестве замены

будет выведено следующее сообщение.


<msg-sessionpw>reenter...:</msg-sessionpw>.

В случае если в блоке PAM 'session' отсутствует пароль (например, при su от root к пользователю), он запросит его снова. Этот запрос также может быть настроен.

Расширенное управление пользователями

Иногда простых атрибутов управления пользователем для элемента <volume> бывает недостаточно, когда требуется построить более сложные выражения для конкретного пользователя, к которому относится тот или иной том. Вместо атрибутов, расширенное управление пользователем позволяет задать дополнительные элементы внутри "скобок" <volume>, например так:

<volume path="/dev/shm" mountpoint="~"> <and> <sgrp>students</sgrp> <not> <sgrp>profs</sgrp> </not> </and> </volume>

Которые алгеброй логики транслируется как:

(students && !profs)

Логические операторы

AND
<and><elements>*</and>
Примечание: В логическом операторе "И" выражение вида a && b будет равно true только тогда, когда и а и b равны true.

Все элементы в данной конструкции связаны логическим умножением (И, &&) и логически связаны между собой. Может использоваться любое количество элементов.

OR
<or><elements>*</or>
Примечание: В логическом операторе "ИЛИ" выражение вида a || b будет равно true, когда или a, или b (или оба) равны true.

Все элементы в данной конструкции логически объединены логическим сложением (ИЛИ, ||). Может использоваться любое количество элементов.

XOR
<xor><elements>{2}</xor>
Примечание: В логическом операторе "исключающее ИЛИ" выражение вида a ^ b будет равно true, только когда или a, или b равен true.

В данной конструкции используются только два элемента.

NOT
<not><element></not>
Примечание: В логическом операторе "НЕ" выражение вида !a будет равно true когда a и b имеют разные значения

Единственный элемент внутри <not> логически отрицается.

Выбор пользователей

Сопоставление тома с заданным именем пользователя
<user>username</user>

Сопоставление тома с заданным именем пользователя.

Сопоставление UID пользователя с заданным UID
<uid>number</uid> или <uid>number-number</uid>

Сопоставление UID пользователя, входящего в систему, с UID или диапазоном UID.

Сопоставление основной группы с GID
<gid>number</gid> или <gid>number-number</gid>

Сопоставление основной группы пользователя, входящего в систему, с GID или диапазоном GID.

Проверка по основной группе
<pgrp>groupname</pgrp>

Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы в качестве основной.

Проверка по первичной и вторичной группе
<sgrp>groupname</sgrp>

Выполнять проверку, имеет ли пользователь, входящий в систему, указанное имя группы, в качестве первичной или вторичной.

Атрибуты

icase="yes" или icase="no"

Атрибут icase может быть использован в тегах <user>, <pgrp> и <sgrp>, чтобы включить (или не включать) сопоставление без учета регистра. По умолчанию он принимает значение "no".

 regex="yes" (или no)

Атрибут regex может быть использован в тегах <user>, <pgrp> и <sgrp> для интерпретации текстового содержимого тега как шаблона регулярного выражения, совместимого с Perl. Данный атрибут может использоваться совместно с атрибутом "icase" (см. выше).

Например: <user regex="yes">joe</user> соответствует любому пользователю, у которого в имени пользователя встречается последовательность букв "joe". Поэтому используйте функцию regex с осторожностью и добавляйте якоря ^ и $ для ограничения неожиданностей безопасности.

Например: <user regex="yes">^.*joe.*$</user>, если вы действительно хотите найти последовательность в любой позиции.

Примеры

Помните, что ~ может использоваться в атрибуте точки монтирования для обозначения домашнего каталога, который можно получить с помощью функции getpwent.

sshfs и ccgfs

Если не указывать никакого пути после двоеточия (:), то используется путь, куда вас направит ssh по-умолчнию, обычно это домашний каталог.

<volume fstype="fuse" path="sshfs#%(USER)@fileserver:" mountpoint="~" />
<volume fstype="fuse" path="ccgfs-ssh-pull#%(USER)@host:directory" mountpoint="~" />

encfs 1.4.x и выше

<volume fstype="fuse" path="encfs#/crypto/%(USER)" mountpoint="~" options="nonempty" />

(encfs 1.3 больше не поддерживается).

Монтирование NFS

<volume fstype="nfs" server="fileserver" path="/home/%(USER)" mountpoint="~" />

Монтирование CIFS/SMB

<volume user="user" fstype="smbfs" server="krueger" path="public" mountpoint="/home/user/krueger" />

Монтирование NCP

<volume user="user" fstype="ncpfs" server="krueger" path="public" mountpoint="/home/user/krueger" options="username=user.context" />

Связанное монтирование (Bind Mounts)

Это может быть полезно в сочетании с pam_chroot:

<volume path="/bin" mountpoint="~/bin" options="bind" />

Монтирование tmpfs

Универсальное монтирование tmpfs с ограниченным размером:

<volume user="test" fstype="tmpfs" mountpoint="/home/test" options="size=10M,uid=%(USER),mode=0700" />

Тома dm-crypt

Для криптографического монтирования требуется ядро с включенными CONFIG_BLK_DEV_DM и CONFIG_DM_CRYPT, а также всеми шифрами, которые будут использоваться, например, CONFIG_CRYPTO_AES, CONFIG_CRYPTO_BLOWFISH, CONFIG_CRYPTO_TWOFISH.

<volume path="/home/%(USER).img" mountpoint="~" cipher="aes-cbc-essiv:sha256" fskeycipher="aes-256-cbc" fskeyhash="sha1" fskeypath="/home/%(USER).key" />

Тома LUKS

<volume path="/home/%(USER).img" mountpoint="~" cipher="aes-cbc-essiv:sha256" />

Зашифрованный домашний каталог OpenBSD

Пример зашифрованного домашнего каталога OpenBSD:

<volume path="/home/user.img" mountpoint="/home/user" options="svnd0" />