Введение
Стенд:
- Компьютер-сервер разделяемых ресурсов Samba. В качестве сервера использовался сервер FreeIPA с настройками по умолчанию, т.е. использовалась служба samba, установленная при установке сервера FreeIPA.
- Компьютер-клиент. В качестве клиента использовался компьютер, введённый в домен FreeIPA.
Установка samba
При необходимости установить samba отдельно можно воспользоваться общей статьёй по настройке Samba
Создание каталогов для общего доступа
Создать каталоги на сервере, которые будут содержать разделяемые файловые ресурсы и установить желаемые права мандатного и дискретного доступа, например:
Одиночный каталог:
Command | ||||
---|---|---|---|---|
| ||||
mkdir /share1 |
Или группу каталогов с различным мандатным контекстом:
Command |
---|
mkdir /share1 |
Установить желаемые дискретные атрибуты, например:
Command |
---|
chmod 777 /share1 -R |
Разграничить мандатный доступ в соответствии с пунктом "4. МАНДАТНОЕ РАЗГРАНИЧЕНИЕ ДОСТУПА" документа "Руководство по КСЗ. Часть 1 РУСБ.10015-01 97 01-1"(ссылка):
Command |
---|
pdpl-file 3:0:-1:ccnr /share1/ |
Конфигурация Samba
Внести в конфигурационный файл /etc/samba/smb.conf информацию о разделяемом файловом ресурсе:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
[global] #Изменить имя группы workgroup = da.net #Сделать видимым для netbios disable netbios = no [share1] available = yes comment = For all doc's browseable = yes case sensitive = yes ea support = yes fstype = Samba path = /share1 writable = yes smb encrypt = auto read only = no #Доступно всем guest ok = yes map to guest = Bad User |
Примечание | ||
---|---|---|
Для того, чтобы разделяемые samba-ресурсы отображались ресурса в разделе сеть файлового менеджера fly-fm с нулевой классификационной меткой через протокол NetBIOS
|
После сохранения настроек перезапустить сервис Samba:
Command |
---|
service smbd restart |
Специальный файловый ресурс [homes] - домашние каталоги пользователей
В конфигурации самба зарезервировано имя ресурса [homes] - специально обрабатываемое имя для подключения домашних каталогов пользователей.
Специальная обработка позволяет подставлять имя пользователя в качестве имени разделяемого ресурса, что удобно для доступа к домашним каталогам.
Хотя этот ресурс по умолчанию указан в конфигурационном файле, для того, чтобы это ресурс можно был использовать следует выполнить следует выполнить подготовительные действия:
Добавить в секцию [global] конфигурационного файла параметр
Информация passdb backend = smbpasswd Перезапусти службу samba
Command sudo systemctl restart smbd Добавить пользователя в список пользователей samba:
Command smbpasswd -a username
Описание разделяемого ресурса [homes] в файле /etc/samba/smb.conf может выглядеть вот так:
Информация |
---|
[homes] |
При этом в описании ресурса может отсутствовать в явном виде указание самого разделяемого каталога, а обращение к такому ресурсу выполняется по имени пользователя (предполагается, что команда smbclient вызвана от имени пользователя username):
Command |
---|
smbclient //fileserver1.org.net/username |
Или явно задать имя пользователя, от имени которого должен вызываться ресурс:
Информация |
---|
smbclient //fileserver1.org.net/username -U username |
При каждом таком обращении samba сначала ищет имя запрошенного ресурса в списке разделяемых ресурсов, и если имя не найдено проверяет наличие в конфигурации секции [homes].
Есть такая секция есть, то имя трактуется как имя пользователя, и проверяется по базе данных пользователей (например, /etc/passwd).
Если имя найдено в базе данных пользователей, то samba предоставляет в качестве разделяемого ресурса домашний каталог этого пользователя.
Каталог в простейшем случае берётся из файла /etc/passwd, но может быть изменён
.
В качестве дополнительной опции разделяемого ресурса можно задать параметр path, указывающий путь к корневому каталогу домашних каталогов пользователей, который будет использоваться вместо /home, т.е. будет предоставляться ресурс не /home/username, а, например, /samba/users/username:Информация |
---|
[homes] |
Подключение разделяемого samba-ресурса в сессии с нулевой классификационной меткой
Запустить менеджер файлов (fly-fm) и открыть раздел "Сеть", в котором отобразятся ресурсы Samba при условии включенного NetBIOS и его видимости:
Если ресурс не виден для других и NetBIOS отключен, то его можно добавить самостоятельно, выбрав закладку "Сеть" или правым щелчком по разделу "Сеть":
Предупреждение |
---|
При входе с ненулевой классификационной меткой отображение сетевых ресурсов в файловом менеджере fly-fm недоступно. |
Монтирование разделяемых файловых ресурсов
Для монтирования разделяемых файловых ресурсов на компьютере-клиенте должен быть установлен пакет cifs-utils:
Command |
---|
apt install cifs-utils |
Монтирование разделяемого файлового ресурса выполняется командой mount
с указанием соответствующего типа сетевой ФС, например:
Command | ||||
---|---|---|---|---|
| ||||
|
В качестве опций команде могут передаваться параметры монтирования, такие как имя пользователя, используемый тип аутентификации, кодировка, использование прав доступа и т.п. При этом точка монтирования /media/share1 должна быть создана заранее и доступна пользователю, например:
Command | ||||
---|---|---|---|---|
| ||||
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 с указанием точки монтирования:
Command |
---|
mount /media/share1 |
Полный список опций приведен в руководстве man
для команд mount
и mount.cifs
. Описание формата конфигурационного файла /etc/fstab приведено в руководстве man
для fstab.
Для того чтобы были пользователю были доступны каталоги при входе с ненулевой классификационной меткой нужно в файле /etct/fstab на компьютере клиента указать следующие параметры:
Информация |
---|
//fileserver1.org.net/share1 /media/share1 cifs user,rw,noauto,iocharset=utf8,nosharesock,vers=1.0,soft 0 0 |
Примечание | ||
---|---|---|
| ||
При использовании с аутентификацией Kerberos в ЕПП в строке опций должен быть указан параметр аутентификации sec=krb5i . В этом случае при монтировании будет использоваться текущий кэш Kerberos пользователя. |
Автоматическое монтирование ресурсов при входе пользователя с помощью pam_mount
Для автоматического монтирования разделяемых файловых ресурсов на компьютере-клиенте должен быть установлен пакет cifs-utils:
Command |
---|
apt install cifs-utils |
Для автоматического монтирования разделяемых файловых ресурсов при входе пользователя используется pam модуль pam_mount, предоставляемый пакетом libpam-mount, который может быть установлен следующим образом:
Command | ||||
---|---|---|---|---|
| ||||
apt-get install libpam-mount |
Информация |
---|
При установке пакета libpam-mount может выдаваться предупреждение об изменении конфигурации PAM-стека. |
Настройка pam модуля осуществляется с помощью конфигурационного файла /etc/security/pam_mount.conf.xml.
Использование pam модуля указывается в соответствующих pam сценариях (common-auth, common-session) в каталоге /etc/pam.d.
Описание возможностей pam модуля pam_mount и формат его конфигурационного файла приведены в руководстве man
для pam_mount и pam_mount.conf.
Для монтирования с помощью pam-mount разделмых файловых ресурсов СЗФС CIFS, представляющих собой домашние каталоги пользователей, конфигурационный файл должен быть модифицирован следующим образом (в пределах тега pam_mount):
Блок кода | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE pam_mount SYSTEM "pam_mount.conf.xml.dtd"><pam_mount>
<!-- Параметры отладки должны быть определены первыми так как файл настроек обрабатывается за один проход -->
<debug enable="1" />
<!-- Volume definitions -->
<logout wait="50000" hup="1" term="1" kill="1" />
<mkmountpoint enable="1" remove="true" />
<cifsmount>mount.cifs //%(SERVER)/%(VOLUME) %(MNTPT) -o %(OPTIONS) </cifsmount>
<volume
fstype="cifs"
server="fileserver1.org.net"
path="share1"
mountpoint="/media/%(USER)"
<!-- При использовании SAMBA AD (при работе через winbind) для корректного авто-монтирования в файле /etc/security/pam_mount.conf.xml в опциях нужно использовать параметр user=%(DOMAIN_USER) -->
options="user=%(USER),rw,setuids,perm,soft,iocharset=utf8,nosharesock,vers=1.0"
/>
<!-- pam_mount parameters: General tunables -->
<!-- <luserconf name=".pam_mount.conf.xml" /> -->
<mntoptions allow="nosuid,nodev,loop,encryption,fsck,nonempty,allow_root,allow_other" />
<mntoptions require="nosuid,nodev" />
</pam_mount> |
Информация | ||||
---|---|---|---|---|
В приведённом выше примере разделяемый ресурс при входе любого пользователя монтируется в каталог /media/username. При этом выбраны опции монтирования, позволяющие осуществлять доступ к смонтированным данным в соответствии с правилами мандатного разграничения доступа. Если указать в параметрах тома mountpoint="/home/%(USER)/share1" то разделяемый ресурс будет монтироваться в подкаталог /share1/ домашнего каталога пользователя. В Astra Linux SE (ОС СН Смоленск/Ленинград) для того, чтобы монтирование корректно выполнялось при входе с ненулевой меткой безопасности, нужно изменить PAM-стек, так, чтобы автоматическое монтирование с помощью pam_mount выполнялось после определения значений мандатных атрибутов пользователя и создания домашнего каталога. Для этого вызов модуля pam_mount нужно удалить из файла /etc/pam.d/common-session и добавить в файлы /etc/pam.d/login и /etc/pam.d/fly-dm после вызова соответствующих модулей Astra Linux: Для FreeIPA:
Для ALD:
|
При использовании с аутентификацией Kerberos в ЕПП в строке опций монтирования должен быть указан параметр аутентификации sec=krb5i
. В этом случае при монтировании будет использоваться текущий кэш Kerberos пользователя.
Предупреждение | ||
---|---|---|
| ||
Так же в строке опций монтирования должен присутствовать параметр cruid=%(USERUID), поскольку монтирование во время создания сессии выполняется от имени привилегированного пользователя. |
Для точки монтирования 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 объявляет непосредственно параметры монтирования разделяемого файлового ресурса. |