|
См. также: Монтирование домашних каталогов клиентов FreeIPA с ненулевой классификационной меткой
При работе в операционных Astra Linux Special Edition с конфиденциальными данными, предоставляемыми с помощью samba, в обязательном порядке:
|
Стенд:
При необходимости установить samba отдельно можно воспользоваться общей статьей по настройке Samba
Создать каталоги на сервере, которые будут содержать разделяемые файловые ресурсы и установить желаемые права мандатного и дискретного доступа, например:
Одиночный каталог:
sudo mkdir /share1 |
Или, для ОС Astra Linux Special Edition, группу каталогов с различным мандатным контекстом:
sudo mkdir -p /share1/{zero,dsp,secret,topsecret} |
Установить желаемые дискретные атрибуты, например:
sudo chmod 777 /share1 -R |
Разграничить мандатный доступ в соответствии с пунктом "4. МАНДАТНОЕ РАЗГРАНИЧЕНИЕ ДОСТУПА" документа "Руководство по КСЗ. Часть 1 РУСБ.10015-01 97 01-1"(ссылка):
sudo pdpl-file 3:0:-1:ccnr /share1/ |
Внести в конфигурационный файл /etc/samba/smb.conf информацию о разделяемом файловом ресурсе:
[global] # По необходимости изменить имя группы workgroup = WORKGROUP # Сделать видимым для netbios disable netbios = no # убедиться, что это параметр выставлен, чтобы разделяемые ресурсы обнаруживались в сети map to guest = Bad User [share1] comment = For all doc's # Доступно всем guest ok = yes path = /share1 read only = no available = yes browseable = yes case sensitive = yes ea support = yes fstype = Samba smb encrypt = auto |
Для того, чтобы разделяемые samba-ресурсы отображались в разделе "Сеть" файлового менеджера fly-fm с нулевой классификационной меткой через протокол NetBIOS
|
После сохранения настроек проверить их корректность
| testparm |
Если команда testparm не находит ошибок, то перезапустить сервис Samba:
sudo systemctl restart smbd |
Если всё сделано правильно, то команда
smbtree |
покажет название разделяемого ресурса.
В конфигурации самба зарезервировано имя ресурса [homes] - специально обрабатываемое имя для подключения домашних каталогов пользователей.
Специальная обработка позволяет подставлять имя пользователя в качестве имени разделяемого ресурса, что удобно для доступа к домашним каталогам.
Хотя этот ресурс по умолчанию указан в конфигурационном файле, для того, чтобы это ресурс можно был использовать необходимо выполнить выполнить следующие подготовительные действия:
Добавить в секцию [global] конфигурационного файла параметр
| passdb backend = smbpasswd |
Перезапустить службу samba
| sudo systemctl restart smbd |
Добавить пользователя в список пользователей samba:
| smbpasswd -a username |
Описание разделяемого ресурса [homes] в файле /etc/samba/smb.conf может выглядеть вот так:
[homes] |
При этом в описании ресурса может отсутствовать в явном виде указание самого разделяемого каталога, а обращение к такому ресурсу выполняется по имени пользователя (предполагается, что команда smbclient вызвана от имени пользователя username):
| smbclient //ipa0.ipadomain.ru/username |
Или можно явно задать имя пользователя, от имени которого должен вызываться ресурс:
| smbclient //ipa0.ipadomain.ru/username -U username |
При каждом таком обращении samba сначала ищет имя запрошенного ресурса в списке разделяемых ресурсов, и если имя не найдено проверяет наличие в конфигурации секции [homes].
Есть такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей (например, /etc/passwd).
Если имя найдено в базе данных пользователей, то samba предоставляет в качестве разделяемого ресурса домашний каталог этого пользователя.
Каталог в простейшем случае берётся из файла /etc/passwd, но может быть изменен.
[homes] |
Запустить менеджер файлов (fly-fm) и открыть раздел "Сеть", в котором отобразятся ресурсы Samba при условии включенного NetBIOS и его видимости:

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

При входе с ненулевой классификационной меткой отображение сетевых ресурсов в файловом менеджере fly-fm недоступно. |
Для монтирования разделяемых файловых ресурсов на компьютере-клиенте должен быть установлен пакет cifs-utils:
| sudo apt install cifs-utils |
Монтирование разделяемого файлового ресурса выполняется командой mount с указанием соответствующего типа сетевой ФС, например:
sudo mount.cifs //сервер/ресурс /точка_монтирования [-o опции] |
В качестве опций команде могут передаваться параметры монтирования, такие как имя пользователя, используемый тип аутентификации, кодировка, использование прав доступа и т.п. При этом точка монтирования /media/share1 должна быть создана заранее и доступна пользователю, например:
sudo mkdir /media/share1 |
Без соответствующей записи в /etc/fstab пользователь может использовать команды монтирования только с помощью sudo.
Для возможности монтирования разделяемого файлового ресурса пользователем в конфигурационном файле /etc/fstab должна быть объявлена строка монтирования, например следующего вида:
| //fileserver1.org.net/share1 /media/share1 cifs user,rw,noauto,iocharset=utf8,soft 0 0 |
Точка монтирования должна быть создана заранее и доступна пользователю для чтения/записи, опция user предоставляет возможность монтирования указанного ресурса простому пользователю.
Пользователь при этом выполняет монтирование командой mount с указанием точки монтирования:
| mount /media/share1 |
Полный список опций приведен в руководстве man для команд mount и mount.cifs. Описание формата конфигурационного файла /etc/fstab приведено в руководстве man для fstab.
Для того чтобы пользователю были доступны каталоги при входе с ненулевой классификационной меткой нужно в файле /etc/fstab на компьютере клиента указать следующие параметры:
| //fileserver1.org.net/share1 /media/share1 cifs user,rw,noauto,iocharset=utf8,nosharesock,vers=1.0,soft 0 0 |
При использовании с аутентификацией Kerberos в ЕПП в строке опций должен быть указан параметр аутентификации sec=krb5i или sec=krb5. В этом случае при монтировании будет использоваться текущий кэш Kerberos пользователя.
|
Для автоматического монтирования разделяемых файловых ресурсов при входе пользователя используется PAM-модуль pam_mount, предоставляемый пакетом libpam-mount, то есть для автоматического монтирования разделяемых файловых ресурсов на компьютере-клиенте должны быть установлены пакет cifs-utils и libpam_mount:
| sudo apt install cifs-utils libpam-mount |
При установке пакета libpam-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 разделяемых файловых ресурсов в конфигурационном файле должны быть указаны параметры монтируемого тома, например:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="1" />
<!-- Volume definitions -->
<cifsmount>mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS) </cifsmount>
<!-- pam_mount parameters: General tunables -->
<!-- Описание тома, который должен монтироваться -->
<volume
fstype="cifs"
server="ipa0.ipadomain.ru"
path="share1"
mountpoint="/media/%(USER)"
options="user=%(USER),cruid=%(USER),sec=krb5i,file_mode=0770,dir_mode=0770"
/>
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<logout wait="50000" hup="1" term="1" kill="1" />
<!-- <logout wait="0" hup="no" term="no" kill="no" /> -->
<!-- pam_mount parameters: Volume-related -->
<mkmountpoint enable="1" remove="true" />
</pam_mount> |
В приведенном выше примере разделяемый ресурс при входе любого пользователя монтируется в каталог /media/username. При этом выбраны опции монтирования, позволяющие осуществлять доступ к смонтированным данным в соответствии с правилами мандатного разграничения доступа. Если указать в параметрах тома mountpoint="/home/%(USER)/share1" то разделяемый ресурс будет монтироваться в подкаталог /share1/ домашнего каталога пользователя. В Astra Linux Special Edition для того, чтобы монтирование корректно выполнялось при входе с ненулевой меткой безопасности, нужно изменить PAM-стек, так, чтобы автоматическое монтирование с помощью pam_mount выполнялось после определения значений мандатных атрибутов пользователя и создания домашнего каталога. Для этого:
Для FreeIPA (добавленная строчка выделена жирным шрифтом):
Для ALD (добавленная строчка выделена жирным шрифтом):
|
Вариант описания тома для монтирования домашних каталогов пользователей (предполагается, что на сервере samba настроен специальный ресурс home):
...
<volume
fstype="cifs"
server="ipa0.ipadomain.ru"
path="%(USER)"
mountpoint="/home/%(USER)"
options="user=%(USER),cruid=%(USER),sec=krb5i,file_mode=0770,dir_mode=0770"
/>
... |
При использовании с аутентификацией 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),file_mode=0770,dir_mode=0770,iocharset=utf8,vers=1.0" /> |
Тег logout определяет поведение в процессе размонтирования ФС. К этому времени все процессы должны освободить точку монтирования, в противном случае им посылаются соответствующие сигналы прерывания работы. Тег mkmountpoint отвечает за автоматическое создание и удаление точки монтирования. Тег cifsmount определяет команду, с помощью которой монтируется указанный тип ФС. Тег volume объявляет непосредственно параметры монтирования разделяемого файлового ресурса. |
Для автоматического монтирования используем ресурс [homes], который будем монтировать в локальный домашний каталог пользователя /home/<имя_пользователя> . Модифицируем конфигурацию pam_mount:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd">
<!--
See pam_mount.conf(5) for a description.
-->
<pam_mount>
<!-- debug should come before everything else,
since this file is still processed in a single pass
from top-to-bottom -->
<debug enable="1" />
<!-- Volume definitions -->
<!-- обращаемся к ресурсу homes по имени пользователя -->
<cifsmount>mount.cifs //%(SERVER)/%(USER) %(MNTPT) -o %(OPTIONS) </cifsmount>
<!-- pam_mount parameters: General tunables -->
<!-- Описание тома, который должен монтироваться -->
<volume
fstype="cifs"
server="ipa0.ipadomain.ru"
path="%(USER)"
mountpoint="/home/%(USER)"
options="rw,user=%(USER),gid=%(USER),uid=%(USER),cruid=%(USER),sec=krb5i,file_mode=0770,dir_mode=0770"
/>
<!--
<luserconf name=".pam_mount.conf.xml" />
-->
<!-- Note that commenting out mntoptions will give you the defaults.
You will need to explicitly initialize it with the empty string
to reset the defaults to nothing. -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<!--
<mntoptions deny="suid,dev" />
<mntoptions allow="*" />
<mntoptions deny="*" />
-->
<mntoptions require="nosuid,nodev" />
<logout wait="50000" hup="1" term="1" kill="1" />
<!-- <logout wait="0" hup="no" term="no" kill="no" /> -->
<!-- pam_mount parameters: Volume-related -->
<mkmountpoint enable="1" remove="true" />
</pam_mount> |
| Для SAMBA AD при работе через winbind для корректного авто-монтирования в файле в опциях нужно использовать параметр user=%(DOMAIN_USER). |
При использовании pam_mount пользователям может быть предоставлена возможность самостоятельно определять дополнительные тома монтирования. Такие тома определяются в конфигурационном пользовательском файле, задаваемом параметром luserconf основного конфигурационного файла /etc/security/pam_mount.conf.xml модуля pam_mount. Синтаксис параметра:
luserconf name="<имя_конфигурационного_файла_пользователя>" |
например:
<luserconf name=".pam_mount.conf.xml" /> |
Конфигурационный пользовательский файл располагается в домашнем каталоге пользователя и может редактироваться пользователем самостоятельно. Точки монтирования указываются относительно домашнего каталога пользователя. Таким образом, указанному непривилегированному пользователю разрешается монтировать любые заданные тома, получая при этом права владения локальными смонтированными ресурсами. Операции монтирования выполняются от имени и с правами суперпользователя. Применение этой возможности может повлечь серьёзные угрозы безопасности, поэтому по умолчанию возможность пользовательского монтирования отключена. Конфигурации пользователей обрабатываются после того, как смонтированы все заданные в глобальной конфигурации тома, включая домашние каталоги пользователей, что обеспечивает возможность дальнейшего монтирования томов, заданных с помощью параметра luserconf.
Для управления доступными пользователям опциями монтирования применяются следующие параметры основного конфигурационного файла:
mntoptions allow - разрешенные пользователям опции монтирования, например:
<mntoptions allow="user,cruid,vers,sec,nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" /> |
По умолчанию это опции nosuid и nodev, Значение, принятое по умолчанию заменяется значением из первого найденного указания параметра, последующие указания суммируются;
Настройка разделяемых ресурсов Distributed File System (DFS) выполнятся на серверах под управлением Microsoft Windows и в данной статье не рассматривается. Монтирование разделяемых ресурсов DFS, так же как разделяемых ресурсов samba, выполняется по протоколу cifs.
Для работы с ресурсами DFS требуется установить пакет keyutils:
| sudo apt install keyutils |
Для корректной работы с ресурсами DFS (в том числе, ресурсами, содержащими кириллицу в названиях), следует использовать версии ядра выше чем linux_5.4.0-110.astra35+ci1 и linux-5.10_5.10.0-1057.astra6+ci7.
Монтирование разделяемых ресурсов DFS можно делать с указанием полного доменного имени сервера или с указанием только имени домена, например:
Указание полного доменного имени сервера:
| mount -t cifs //server1.active_directory.test/dfs1 ~/mnt -o cruid=user1,sec=krb5 |
Указание имени домена:
| mount -t cifs //active_directory.test/dfs1 ~/mnt -o cruid=user1,sec=krb5 |
Для монтирования ресурсов DFS по имени домена с использованием аутентификации Kerberos необходимо сделать дополнительные настройки:
Рекомендованный вариант. Добавить к имени сервера псевдоним — имя домена. Это можно сделать:
Выполнив на контроллере домена (т. е. на контроллере Windows AD) команду setspn:
| setspn -s cifs/<имя_домена> <имя_сервера> |
Например:
setspn -s cifs/ad12.loc w12 |
При невозможности создания псевдонимов внести ключ "-t" в конфигурационный файл /etc/request-key.d/cifs.spnego.conf:
| Данный способ не является рекомендованным, так как ключ "-t" разрешает использовать сведения, предоставляемые DNS-сервером (доверять DNS-серверу), что снижает безопасность системы. |
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k |
В остальном, так как монтирование ресурсов DFS выполнятся так же, как и ресурсов samba, по протоколу CIFS, для монтирования применимы приведенные выше настройки Подключение разделяемых ресурсов.
Если в ОС используется модуль pam_mount, то при установке некоторых пакетов выводится запрос:
reenter password for pam_mount |
На этом установка пакета останавливается и более не продолжается.
| Если в ОС используется модуль pam_mount, то возникновение проблемы возможно при установке любого пакета, если в процессе установки происходит смена пользователя. |
Для устранения этой проблемы заменить в файле /etc/pam.d/common-session строку:
session optional pam_mount.so |
на строку:
session optional pam_mount.so disable_interactive |