Исходные данные
Предполагается, что у нас уже есть установленный сервер FreeIPA (контроллер домена). При стандартной установке FreeIPA на таком сервере уже установлены службы samba и winbind.
Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
Astra Linux Special Edition РУСБ.10015-16 исп. 1 и исп. 2
Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
Astra Linux Common Edition 2.12
Установка Samba при инициализации сервера FreeIPA
Установка и настройка службы Samba может быть выполнена при инициализации сервера FreeIPA. Для этого используется опция -s при инициализации первого сервера FreeIPA в домене (команда stra-freeipa-server) или опция --setup-adtrust при установке реплик с помощью команды astra-freeipa-replica. При установке и настройке службы Samba также выполняется установка и настройка компонент для работы с Windows AD, но настраивать при этом доверительные отношения с доменом Windows AD не обязательно.
Доустановка Samba после инициализации сервера FreeIPA
Если при инициализации сервера (реплики) FreeIPA не была применена опция установки и настройки Samba, то это можно сделать после инициализации:
Получить для суперпользователя билет Kerberos администратора домена:
sudo kinit adminДействуя с правами суперпользователя выполнить установку:
sudo ipa-adtrust-install --add-sids --add-agents
Особенности работы связки FreeIPA - Samba
После установки Samba:
- Samba получит роль ROLE_DOMAIN_PDC;
- Сервис samba будет переведён под управление FreeIPA;
- Будет создана и зарегистрирована доменная служба CIFS.
Отдельно выполнять команду добавления службы "ipa service-add ...", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически.
Монтирование и авторизация через samba на сервере для простых пользователей работать не будут.
Монтировать разделяемые ресурсы следует только с компьютеров-клиентов.
Службы samba и winbind теперь будут управляться командой ipactl, в списке служб появится службы smb и winbind:
...
smb Service: RUNNING
winbind Service: RUNNING
...
В конфигурационном файле сервиса samba /etc/samba/smb.conf останется только отсылка в БД "registry", куда будут перенесены все конфигурационные параметры:
### Added by IPA Installer ###
[global]
debug pid = yes
config backend = registry
Можно создать комбинированную конфигурацию, заменив "config backend = registry" на "include = registry", что позволит задавать параметры в файле /etc/samba/smb.conf.
Проверить правильность конфигурации можно стандартной командой testparm, однако теперь только от имени суперпользователя:
Редактировать БД "registry" можно с помощью специальной утилиты samba-regedit (устанавливается автоматически при установке пакета samba):
Все секции конфигурационного файла samba (в том числе разделяемые ресурсы, включая специальный ресурс homes) могут быть указаны в этой ветке. Все параметры имеют одинаковый тип REG_SZ.
При этом конфигурационные данные можно импортировать в registry из файлов с синтаксисом конфигурационного файла samba с помощью команды net. Например, для создания разделяемых ресурсов homes и share:
Создать в любом текстовом редакторе файл homes.txt с описанием ресурса homes:
[homes]
browseable = no
comment = Home Directories
create mask = 0600
directory mask = 0700
valid users = %S
# По умолчанию ресурс [homes] предоставляется как ресурс только для чтения (read only = yes).
# Если требуется разрешить запись нужно явно указать read only = no
read only = No
guest ok = noСоздать в любом текстовом редакторе файл share.txt с описанием ресурса share:
[share]
comment = anonymous share
create mask = 0666
directory mask = 0777
guest ok = yes
guest only = yes
path = /srv/share
read only = noИмпортировать созданные описания ресурсов в конфигурацию samba:
sudo net conf import homes.txt homes
sudo net conf import share.txt share
Создание домашних каталогов
Для тестирования можно создать на сервере условный домашний каталог пользователя admin (т.е. администратора FreeIPA, создаваемого "по умолчанию"):
sudo mkhomedir_helper admin
Подключение/монтирование ресурса с клиентской доменной машины
После выполнения указанных выше действий ресурс (в данном примере - автоматически монтируемый домашний каталог пользователя см. специальный ресурс homes) будет доступен на клиентской машине после получения билета Kerberos:
smbclient -k //ipa0.ipadomain.ru/admin
Для использования опции монтирования sec=krb5i на сервере должен быть задан параметр:
server signing = required
или (устаревший вариант):
Отдельный сервер Samba
В примере выше сервер Samba запускается непосредственно на контроллере домена. Далее рассматриваются действия по запуску файлового сервера Samba с аутентификацией через доменную службу Kerberos на отдельном компьютере. Предполагается, что у нас уже есть работающий контроллер домена ipa0.ipadomain.ru.
Если при установке контроллера домена не была выполнена установка и настройка службы Samba, то установить необходимые компоненты, выполнив на контроллере домена следующие команды:
sudo kinit admin
sudo ipa-adtrust-install --add-sids --add-agents- Настройка файлового сервера:
- Рекомендуется назначить файловому серверу статический IP-адрес;
Назначить файловому серверу полное доменное имя, например samba.ipadomain.ru:
sudo hostnamectl set-hostname samba.ipadomain.ruВ файле /etc/hosts указать настройки IP для этого имени;
- В качестве сервера службы DNS указать IP-адрес контроллер домена;
Ввести файловый сервер в домен:
sudo apt install astra-freeipa-client
sudo astra-freeipa-client -d ipadomain.ruУстановить на файловом сервере необходимые пакеты:
Для установки пакета libwbclient-sssd:
- в Astra Linux Special Edition x.7 достаточно использовать основной репозиторий;
- в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) необходимо подключить репозиторий диска со средствами разработки.
sudo apt install libwbclient-sssd samba smbclient
После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена выполнить команды:
kinit admin
ipa service-add cifs/samba.ipadomain.ru
ipa permission-add "CIFS server can read user passwords" --attrs={ipaNTHash,ipaNTSecurityIdentifier} --type=user --right={read,search,compare} --bindtype=permission
ipa privilege-add "CIFS server privilege"
ipa privilege-add-permission "CIFS server privilege" --permission="CIFS server can read user passwords"
ipa role-add "CIFS server"
ipa role-add-privilege "CIFS server" --privilege="CIFS server privilege"
ipa role-add-member "CIFS server" --services=cifs/samba.ipadomain.ru- После регистрации службы выполнить на файловом сервере
Создание разделяемого файлового ресурса (например /srv/share) и назначение ему прав доступа:
sudo mkdir -p /srv/share
sudo chown nobody:nogroup /srv/shareПолучение таблицы ключей:
sudo kinit admin
sudo ipa-getkeytab -s ipa0.ipadomain.ru -p cifs/samba.ipadomain.ru -k /etc/samba/samba.keytabНастройку конфигурации службы samba (файл /etc/samba/smb.conf):
[global]
dedicated keytab file = /etc/samba/samba.keytab
kerberos method = dedicated keytab
log file = /var/log/samba/log.%m
realm = IPADOMAIN.RU
security = ads
workgroup = IPADOMAIN
[homes]
browsable = no
writable = yes[shared]
path = /srv/share
writable = yes
browseable = yesПерезапустить службу samba:
sudo systemctl restart smbd
Ошибки и предупреждения
- Ошибка соединения NT_STATUS_BAD_NETWORK_NAME при попытке доступа к ресурсу говорит о том, что забыли создать на сервере каталог (при доступе к ресурсу homes - домашний каталог пользователя).
- Ошибка соединения NT_STATUS_INVALID_PARAMETER при попытке доступа к ресурсу при авторизации Kerberos говорит о том, что неправильно получен билет Kerberos (чаще всего билет получен из-под sudo, а аутентификацию пытаются выполнить без sudo).
Сообщение "mkdir failed on directory /var/run/samba/msg.lock: Отказано в доступе" на работоспособность клиента Samba не влияет, можно это сообщение убрать на время до следующей перезагрузки системы просто создав на клиентской машине этот каталог командой:
sudo mkdir /run/samba/msg.lockили сделать так, чтобы этот каталог создавался автоматически при загрузке, для чего в файле /usr/lib/tmpfiles.d/samba.conf строчку "d /run/samba 0755 root root -" заменить на строчку "d /run/samba/msg.lock 0755 root root -":
sudo sed -i "s~^\s*d\s*/run/samba\s*0755\s*root\s*root\s*-~d /run/samba/msg.lock 0755 root root -~" /usr/lib/tmpfiles.d/samba.conf
- Сообщение "Unable to initialize messaging context" на работоспособность клиента Samba не влияет.