Pam mount настройка debian

Обновлено: 06.07.2024

20 пользователь(ей) активно (1 пользователь(ей) просматривают Open Статьи)

Участников: 0
Гостей: 20

При копировании, перепечатывании и публикациях в других источниках обязательно указание гиперссылки и описание названия ресурса "Open-SUSE . RU - русскоязычное сообщество пользователей OpenSUSE Linux в России и не только."

У вас есть смешанная сеть, состоящая из Linux и Windows, и вам надо наиболее удобный способ работы с сетевыми документами? Тогда вам в этом поможет утилита pam_mount.

К ак работает pam_mount? При logon'е пользователя(не важно, в иксах или консоли) эта утилита монтирует сетевые шары как локальные каталоги в удобное для вас место. Причем можно монтировать как шары Windows (Samba в том числе), так и шары типа NFS, можно монтировать по протоколу SSH, если у вас есть серверы с Linux, и др. Сразу сделаю оговорку, что когда я пишу Samba, то подразумеваю Linux+Samba, а когда пишу Linux - то Linux без Samba.
У станавливаем пакет pam_mount. Он имеется и на диске с openSUSE, и в стандартных репозиториях. Все настройки pam_mount хранятся в /etc/security/pam_mount.conf.xml. С него и начнем. В раздел Volume definitions вписываем такую строку


Теперь поясню детальней по параметрам в этой строке:
user - может быть как фиксированное имя пользователя(например, user="admin"); может быть номером uid или диапазоном номеров uid(например, user="1000-2000");может быть как имя первичной группы(primary group) пользователя/пользователей (например, user="operators") или значением обычной группы, в которую входят пользователи; может быть значением gid или диапазоном значений gid; user="*" означает любого пользователя
fstype - тип сетевой файловой системы; для нас надо будет либо cifs(если шары на Windows или Samba) либо fuse(если сервера чисто под Linux)
server - имя сервера
path - имя шары(если для сервера Windows или Samba) или путь к каталогу(если для сервера Linux)
mountpoint - каталог, в котором у вас будет примонтирована шара.
Очень удобным инструментом pam_mount являются подстановки:
%(USER) - автоматически подставляется имя залогинившегося пользователя;
%(DOMAIN_NAME), %(DOMAIN_USER) - означает имя домена или имя пользователя домена(в Windows доменные пользователи представляются в виде domain\username). Эта подстановка относится для домена NT или AD, т.е. если ваша система входит в этот домен и пользователи авторизуются через AD или даже LDAP;
%(USERUID),%(USERGID) - при логоне подставляются значения uid или gid(gid первичной группы);
%(GROUP) - при логоне подставляется имя первичной группы.
Теперь приведу пример.
У вас имеется сервер Windows(или даже Linux) под названием server-doc. На сервере имеется шара documents. Вы хотите чтоб пользователи при логоне видели свои документы с шары documents в каталоге "/home/ /Мои документы", тогда строка будет выглядеть так:

Если у вас на сервере для каждой группы имеется одноименная шара, то строка будет такой:

Создать каталоги на сервере, которые будут содержать разделяемые файловые ресурсы и установить желаемые права мандатного и дискретного доступа, например:

sudo mkdir /share1

Или, для ОС Astra Linux Special Edition, группу каталогов с различным мандатным контекстом:

sudo mkdir -p /share1/

Установить желаемые дискретные атрибуты, например:

sudo chmod 777 /share1 -R

Разграничить мандатный доступ в соответствии с пунктом "4. МАНДАТНОЕ РАЗГРАНИЧЕНИЕ ДОСТУПА" документа "Руководство по КСЗ. Часть 1 РУСБ.10015-01 97 01-1"(ссылка):

sudo pdpl-file 3:0:-1:ccnr /share1/
sudo pdpl-file 1:0:0 /share1/dsp
sudo pdpl-file 2:0:0 /share1/secret
sudo pdpl-file 3:0:0 /share1/topsecret

Внести в конфигурационный файл /etc/samba/smb.conf информацию о разделяемом файловом ресурсе:

Для того, чтобы разделяемые samba-ресурсы отображались в разделе "Сеть" файлового менеджера fly-fm с нулевой классификационной меткой через протокол NetBIOS
в конфигурационном файле /etc/samba/smb.conf должна быть установлена опция "disable netbios = no" (установлена по умолчанию).

После сохранения настроек проверить их корректность

Если команда testparm не находит ошибок, то перезапустить сервис Samba:

Если всё сделано правильно, то команда

покажет название разделяемого ресурса.

Специальный файловый ресурс [homes] - домашние каталоги пользователей

В конфигурации самба зарезервировано имя ресурса [homes] - специально обрабатываемое имя для подключения домашних каталогов пользователей.
Специальная обработка позволяет подставлять имя пользователя в качестве имени разделяемого ресурса, что удобно для доступа к домашним каталогам.

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

Добавить в секцию [global] конфигурационного файла параметр

Перезапустить службу samba

Добавить пользователя в список пользователей samba:

Описание разделяемого ресурса [homes] в файле /etc/samba/smb.conf может выглядеть вот так:

При этом в описании ресурса может отсутствовать в явном виде указание самого разделяемого каталога, а обращение к такому ресурсу выполняется по имени пользователя (предполагается, что команда smbclient вызвана от имени пользователя username):

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

При каждом таком обращении samba сначала ищет имя запрошенного ресурса в списке разделяемых ресурсов, и если имя не найдено проверяет наличие в конфигурации секции [homes].
Есть такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей (например, /etc/passwd).
Если имя найдено в базе данных пользователей, то samba предоставляет в качестве разделяемого ресурса домашний каталог этого пользователя.
Каталог в простейшем случае берётся из файла /etc/passwd, но может быть изменён.

В качестве дополнительной опции разделяемого ресурса [homes] можно задать параметр path, указывающий путь к корневому каталогу домашних каталогов пользователей, который будет использоваться вместо каталога /home, т.е. будет предоставляться ресурс не /home/username, а, например, /samba/users/username:

[homes]
comment = Home Directories
valid users = %S
path = /samba/users/%S
read only = No
create mask = 0700
directory mask = 0700
browseable = no
guest ok = no

Запустить менеджер файлов (fly-fm) и открыть раздел "Сеть", в котором отобразятся ресурсы Samba при условии включенного NetBIOS и его видимости:


Если ресурс не виден для других и NetBIOS отключен, то его можно добавить самостоятельно, выбрав закладку "Сеть" или правым щелчком по разделу "Сеть":


При входе с ненулевой классификационной меткой отображение сетевых ресурсов в файловом менеджере fly-fm недоступно.

Монтирование разделяемых файловых ресурсов

Для монтирования разделяемых файловых ресурсов на компьютере-клиенте должен быть установлен пакет cifs-utils:

Монтирование разделяемого файлового ресурса выполняется командой mount с указанием соответствующего типа сетевой ФС, например:

sudo mount.cifs //сервер/ресурс /точка_монтирования [-o опции]
sudo mount -t cifs //сервер/ресурс /точка_монтирования [-o опции]

В качестве опций команде могут передаваться параметры монтирования, такие как имя пользователя, используемый тип аутентификации, кодировка, использование прав доступа и т.п. При этом точка монтирования /media/share1 должна быть создана заранее и доступна пользователю, например:

Без соответствующей записи в /etc/fstab пользователь может использовать команды монтирования только с помощью sudo .
Для возможности монтирования разделяемого файлового ресурса пользователем в конфигурационном файле /etc/fstab должна быть объявлена строка монтирования, например следующего вида:

Точка монтирования должна быть создана заранее и доступна пользователю для чтения/записи, опция user предоставляет возможность монтирования указанного ресурса простому пользователю.
Пользователь при этом выполняет монтирование командой mount с указанием точки монтирования:

Полный список опций приведен в руководстве man для команд mount и mount.cifs . Описание формата конфигурационного файла /etc/fstab приведено в руководстве man для fstab.

Для того чтобы были пользователю были доступны каталоги при входе с ненулевой классификационной меткой нужно в файле /etct/fstab на компьютере клиента указать следующие параметры:

При использовании с аутентификацией Kerberos в ЕПП в строке опций должен быть указан параметр аутентификации sec=krb5i или sec=krb5. В этом случае при монтировании будет использоваться текущий кэш Kerberos пользователя.

Для аутентификации через Kerberos должен быть настроен сервер Kerberos, например FreeIPA.
См. порядок действий по настройке сервера FreeIPA для предоставления разделяемых ресурсов через Kerberos.

Автоматическое монтирование ресурсов при входе пользователя с помощью pam_mount

Для автоматического монтирования разделяемых файловых ресурсов при входе пользователя используется pam модуль pam_mount, предоставляемый пакетом libpam-mount, то есть для автоматического монтирования разделяемых файловых ресурсов на компьютере-клиенте должны быть установлены пакет cifs-utils и libpam_mount:

При установке пакета libpam-mount может выдаваться предупреждение об изменении конфигурации PAM-стека.
Можно согласиться с внесением изменений (после установки следует проверить изменения в каталоге /etc/pam.d/, и восстановить нужную конфигурацию).
Можно отказаться от внесения изменений, тогда вызов модуля pam_mount нужно будет внести в pam-стек самостоятельно.

Настройка модуля pam_mount осуществляется с помощью конфигурационного файла /etc/security/pam_mount.conf.xml.

При установке пакета libpam_mount вызов модуля pam_mount автоматически вносится в соответствующие pam-сценарии (common-auth, common-session) в каталоге /etc/pam.d.

Описание возможностей модуля pam_mount и формат его конфигурационного файла приведены в руководстве man для pam_mount и pam_mount.conf.

Для монтирования с помощью pam-mount разделяемых файловых ресурсов в конфигурационном файле должны быть указаны параметры монтируемого тома, например :

В приведённом выше примере разделяемый ресурс при входе любого пользователя монтируется в каталог /media/username. При этом выбраны опции монтирования, позволяющие осуществлять доступ к смонтированным данным в соответствии с правилами мандатного разграничения доступа. Если указать в параметрах тома mountpoint="/home/%(USER)/share1" то разделяемый ресурс будет монтироваться в подкаталог /share1/ домашнего каталога пользователя. В Astra Linux Special Edition для того, чтобы монтирование корректно выполнялось при входе с ненулевой меткой безопасности, нужно изменить PAM-стек, так, чтобы автоматическое монтирование с помощью pam_mount выполнялось после определения значений мандатных атрибутов пользователя и создания домашнего каталога. Для этого:

  1. Вызов модуля pam_mount удалить из файла /etc/pam.d/common-session;
  2. Добавить в файлы /etc/pam.d/login и /etc/pam.d/fly-dm после вызова соответствующих модулей Astra Linux:

Для FreeIPA (добавленная строчка выделена жирным шрифтом):

session required pam_parsec_mac.so
session optional pam_mount.so

Для ALD (добавленная строчка выделена жирным шрифтом):

session required pam_parsec_mac.so
session required pam_ald.so
session optional pam_mount.so

Вариант описания тома для монтирования домашних каталогов пользователей (предполагается, что на сервере samba настроен специальный ресурс home):

  • При использовании с аутентификацией Kerberos в ЕПП в строке опций монтирования должен быть указан параметр аутентификации sec=krb5i (предпочтительно с точки зрения безопасности, но требует больше ресурсов) или sec=krb5. В этом случае при монтировании будет использоваться текущий кэш Kerberos пользователя.

В строке опций монтирования должен присутствовать параметр cruid=%(USER), поскольку монтирование во время создания сессии выполняется от имени привилегированного пользователя.

Для точки монтирования mountpoint должен быть указан отдельный каталог, например: /media/ald_share. Пример:

path="share" mountpoint="/media/ald_share" options="user=%(USER),rw,setuids,perm,soft,sec=krb5i,cruid=%(USERUID),iocharset=utf8,vers=1.0" />

Тег logout определяет поведение в процессе размонтирования ФС. К этому времени все процессы должны освободить точку монтирования, в противном случае им посылаются соответствующие сигналы прерывания работы.

Тег mkmountpoint отвечает за автоматическое создание и удаление точки монтирования.

Тег cifsmount определяет команду, с помощью которой монтируется указанный тип ФС.

Тег volume объявляет непосредственно параметры монтирования разделяемого файлового ресурса.

Автоматическое монтирование домашних каталогов при входе пользователя с помощью pam_mount

Для автоматического монтрования используем ресурс [homes], который будем монтировать в локальный домашний каталог пользователя /home/<имя_пользователя> . Модифицируем конфигурацию pam_mount:

Автоматическое монтирование сетевых ресурсов с помощью pam_mount

Введение

PAM(Pluggable Authentication Modules) - подключаемые модули аутентификации. Они позволяют произвести аутентификацию пользователя, управлять распределением системных ресурсов, а так же выполнять какие-либо операции перед тем, как пользователь получит доступ к системным службам.

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

Установка

yum install pam_mount или apt-get install pam_mount (нужное подчеркнуть).

Общие положения

Для работы pam_mount необходимо подключить его, определив в /etc/pam.d/auth*.

Все инструкции, в которых указывается "что" и "для какого пользователя" хранятся в виде обычного xml-файла в /etc/security/pam_mount.conf.xml. Настройки хранящиеся в этом файле едины для всех пользователей, если нужно определить индивидуальные настройки для конкрентного пользователя, то они задаются в домашнем каталоге пользователя в файле .pam_mount.conf.xml (он обязатьно должен быть скрытым).

Подключение pam_mount

Модуль должен подключаться в файле описывающем авторизацию пользователя в системе(все в контексте /etc/pam.d), на примере ALT Linux это /etc/pam.d/system-auth:

Настройка pam_mount

pam_mount.conf.xml находится в /etc/security

pam_mount.conf.xml - это простой xml-файл, который делится на 2-и основных секции:

1) определение монтируемых ресурсов

2) специфичные опции

определение монтируемых ресурсов

Описание подключаемого сетевого ресурса заключается в тег <volume />, в нем через пробел указываются:

Таким образом строка для монтирования ресурса может выглядеть так:

специфичные опции

Так же допускается использование макропеременных:

Таким образом эти макропеременные можно использовать для указания каталога монтирования и определенных опций:


Мануал

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

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

Многие современные дистрибутивы Linux по умолчанию поддерживают Linux-PAM (в дальнейшем именуемый «PAM»).

В этой статье мы расскажем, как настроить расширенный PAM в системах Ubuntu и CentOS.

Прежде чем мы продолжим, обратите внимание, что:

Вам не обязательно понимать внутреннюю работу PAM.

PAM может серьезно изменить безопасность вашей системы Linux.

Ошибочная конфигурация может отключить доступ к вашей системе частично или полностью.

Например, случайное удаление файла (ов) конфигурации в /etc/pam.d/* и / или /etc/pam.conf может заблокировать вас в вашей собственной системе!

Как проверить программу на работу с PAM

Чтобы использовать PAM, приложение / программа должны быть «осведомлены о PAM»; он должен быть написан и скомпилирован специально для использования PAM.

Чтобы узнать, является ли программа «осведомленной о PAM» или нет, проверьте, скомпилирована ли она с библиотекой PAM с помощью команды ldd.

Как настроить PAM в Linux

PAM будет игнорировать файл, если каталог существует.

Синтаксис основного файла конфигурации выглядит следующим образом.

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

Мы объясним эти токены в следующих разделах.

  • service: фактическое название приложения.
  • type: тип модуля / контекст / интерфейс.
  • control-flag: указывает на поведение PAM-API, если модуль не может выполнить свою задачу аутентификации.
  • module: абсолютное имя файла или относительный путь PAM.
  • module-argumetns: список токенов для управления поведением модуля.

Синтаксис каждого файла в /etc/pam.d/ аналогичен синтаксису основного файла и состоит из строк следующего вида:

Это пример определения правила (без аргументов модуля), найденного в файле /etc/pam.d/sshd, который запрещает вход без полномочий root при наличии /etc/nologin:

Понимание групп управления PAM и контрольных флагов

Задачи аутентификации PAM разделены на четыре независимые группы управления.

Эти группы управляют различными аспектами типичного запроса пользователя на ограниченный сервис.

Модуль связан с одним из этих типов групп управления:

  • account: предоставлять услуги для проверки учетной записи: срок действия пароля пользователя истек ?; разрешен ли этому пользователю доступ к запрашиваемой услуге?
  • authentication: аутентификация пользователя и настройка учетных данных пользователя.
  • password: отвечают за обновление пользовательских паролей и работают вместе с модулями аутентификации.
  • session: управление действиями, выполненными в начале сеанса и в конце сеанса.

Загружаемые объектные файлы PAM (модули) должны находиться в следующем каталоге: /lib/security / или /lib64/security в зависимости от архитектуры.

Поддерживаемые флаги управления:

Как ограничить root-доступ к SSH-сервису через PAM

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

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

Мы можем использовать модуль /lib/security/pam_listfile.so, который предлагает большую гибкость в ограничении привилегий определенных учетных записей.

Откройте и отредактируйте файл для целевой службы в каталоге /etc/pam.d/, как показано ниже:

Добавьте это правило в оба файла.

Объяснение токенов в приведенном выше правиле:

  • auth: тип модуля (или контекст).
  • required: это управляющий флаг, который означает, что если модуль используется, он должен пройти, иначе общий результат будет неудачным, независимо от состояния других модулей.
  • pam_listfile.so: это модуль, который предоставляет способ запретить или разрешить услуги на основе произвольного файла.
  • onerr = успешно: аргумент модуля.
  • item = user: module аргумент, который указывает, что указано в файле и должно быть проверено.
  • sense = deny: аргумент модуля, который определяет действие, которое нужно предпринять, если оно найдено в файле, если элемент НЕ найден в файле, то запрашивается противоположное действие.
  • file = /etc/ssh/deniedusers: аргумент модуля, который указывает файл, содержащий один элемент в строке.

Далее нам нужно создать файл /etc/ssh/ deniedusers и добавить в него имя root:

Сохраните изменения и закройте файл, затем установите для него необходимые разрешения:

Отныне вышеприведенное правило будет указывать PAM обратиться к файлу /etc/ssh/deniedusers и запретить доступ к SSH и службам входа для любого пользователя в списке.

Резюме

Это мощный, но очень сложный для понимания и использования.

В этой статье мы объяснили, как настроить расширенные функции PAM в Ubuntu и CentOS

. Если у вас есть какие-либо вопросы или комментарии, используйте форму обратной связи ниже.

Читайте также: