Оглавление |
---|
Исходные данные
Предполагается, что у нас уже есть установленный сервер FreeIPA.
При стандартной установке FreeIPA на таком сервере уже установлены службы samba и winbind.
Информация | ||
---|---|---|
| ||
|
Установка Samba при инициализации сервера FreeIPA
Установка Samba может быть выполнена при инициализации сервера FreeIPA. Для этого можно использовать опцию -s при установке первого контроллера с помощью команды astra-freeipa-server или --setup-adtrust при установке реплик с помощь. команды astra-freeipa-replica.
Доустановка Samba после инициализации сервера FreeIPA
Если при установке сервера не была применена опция установки компонент для работы с samba и Windows AD, то доустановить установить необходимые компоненты:
Command |
---|
sudo kinit admin sudo ipa-adtrust-install --add-sids --add-agents |
Особенности работы связки FreeIPA - Samba
После установки Samba:
- Samba получит роль ROLE_DOMAIN_PDC;
- Сервис samba будет переведён под управление FreeIPA;
- Будет создана и зарегистрирована доменная служба CIFS.
Информация |
---|
Отдельно выполнять команду добавления службы "ipa service-add ...", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически. |
Предупреждение |
---|
После установки ipa-adtrust-install чтение конфигурации samba на сервере будет доступно только суперпользователю. Монтирование и авторизация через samba на сервере для простых пользователей работать не будут. Монтировать разделяемые ресурсы следует только с компьютеров-клиентов. |
Службы samba и winbind теперь будут управляться командой ipactl, в списке служб появится службы smb и winbind:
Command | ||
---|---|---|
| ||
...Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING named Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING ntpd Service: RUNNING smb Service: RUNNING winbind Service: RUNNING ipa-otpd Service: RUNNING ipa-dnskeysyncd Service: RUNNING ipa: INFO: The ipactl command was successful... |
В конфигурационном файле сервиса samba /etc/samba/smb.conf останется только отсылка в БД "registry", куда будут перенесены все конфигурационные параметры:
Информация |
---|
### Added by IPA Installer ### |
Информация |
---|
Опция "config backend = registry" указывает, что все конфигурационные параметры будут храниться в БД registry, а параметры, указанные в файле /etc/samba/smb.conf после этой опции будут игнорироваться. Можно создать комбинированную конфигурацию, заменив "config backend = registry" на "include = registry", что позволит задавать параметры в файле /etc/samba/smb.conf. |
Проверить конфигурацию можно стандартной командой testparm, однако теперь только от имени суперпользователя:
Command |
---|
sudo testparm |
Предупреждение |
---|
Перед редактированием БД "registry" рекомендуем сохранить текущую конфигурацию (вывод команды sudo testparm), чтобы иметь возможность восстановить конфигурацию в случае ошибок. |
Редактировать БД "registry" можно с помощью специальной утилиты samba-regedit (устанавливается автоматически при установке пакета samba):
Command |
---|
sudo samba-regedit |
При этом параметры samba хранятся в ветке /HKEY_LOCAL_MACHINE/SOFTWARE/Samba/smbconf:
Все секции конфигурационного файла samba (в том числе разделяемые ресурсы, включая специальный ресурс homes) могут быть указаны в этой ветке. Все параметры имеют одинаковый тип REG_SZ.
При этом конфигурационные данные можно импортировать в registry из файлов с синтаксисом конфигурационного файла samba с помощью команды net.
Например, создадим разделяемые ресурсы homes и share, для чего:
- Создадим в любом редакторе файл homes.txt с описанием ресурса homes:
Информация |
---|
[homes] |
- Создадим в любом редакторе файл share.txt с описанием ресурса share:
Информация |
---|
[share] |
- Импортируем созданные описания ресурсов в конфигурацию samba:
Command |
---|
sudo net conf import homes.txt homes |
Информация |
---|
После внесения изменений в registry изменения применяются автоматически, и, в отличие от работы с конфигурационным файлом, службу samba перезапускать не нужно. |
Создание домашних каталогов
Для тестирования создадим на сервере условный домашний каталог пользователя admin (т.е. администратора FreeIPA, создаваемого "по умолчанию"):
Информация |
---|
sudo mkhomedir_helper admin |
Подключение/монтирование ресурса с клиентской доменной машины
После выполнения указанных выше действий ресурс (в данном примере - автоматически монтируемый домашний каталог пользователя см. специальный ресурс homes) будет доступен на клиентской машине с авторизацией через Kerberos:
Command |
---|
kinit admin |
Монтирование разделяемых ресурсов также будет доступно с авторизацией Kerberos (опции монтирования cruid, user, sec):
Command |
---|
sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5i |
Информация | ||
---|---|---|
Для использования опции монтирования sec=krb5i на сервере должен быть задан параметр:
|
или (устаревший вариант):
Command |
---|
sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5 |
Отдельный сервер Samba
В примере выше сервер Samba запускается непосредственно на контроллере домена. Далее рассмотрим действия по запуску файлового сервера Samba с авторизацией через доменную службу Kerberos на отдельном компьютере. Предполагается, что у нас уже есть работающий контроллер домена ipa0.ipadomain.ru.
- На контроллере домена:
Если при установке контроллера домена не была применена опция --setup-adtrust (установка компонент для работы с samba и Windows AD), то доустановить установить необходимые компоненты:
Command sudo kinit admin
sudo ipa-adtrust-install --add-sids --add-agents - На файловом сервере:
- Рекомендуется назначить файловому серверу статический IP-адрес;
Назначить файловому серверу полное доменное имя, например samba.ipadomain.ru:
Command sudo hostnamectl set-hostname samba.ipadomain.ru В файле /etc/hosts указать настройки IP для этого имени;
- В качестве сервера службы DNS указать контроллер домена;
Ввести файловый сервер в домен:
Command sudo apt install astra-freeipa-client
sudo astra-freeipa-client -d ipadomain.ruУстановить на файловом сервере необходимые пакеты:
Информация Для установки пакета libwbclient-sssd в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) необходимо подключить репозиторий установочного диска. Command sudo apt install libwbclient-sssd samba smbclient
После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена выполнить команды:
Command 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- После регистрации службы выполнить на файловом сервере
Создание разделяемого файлового ресурса (например /home/share) и назначение ему прав доступа:
Command sudo mkdir -p /home/share
sudo chown nobody:nogroup /home/shareПолучение таблицы ключей:
Command 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]
workgroup = IPADOMAIN
realm = IPADOMAIN.RU
dedicated keytab file = FILE:/etc/samba/samba.keytab
kerberos method = dedicated keytab
log file = /var/log/samba/log.%m[homes]
browsable = no
writable = yes[shared]
path = /home/share
writable = yes
browseable = yesПерезапуск службы samba:
Command sudo systemctl restart smbd
Ошибки и предупреждения
- Ошибка соединения NT_STATUS_BAD_NETWORK_NAME при попытке доступа к ресурсу говорит о том, что забыли создать на сервере каталог (в данном случае - домашний каталог пользователя).
- Ошибка соединения NT_STATUS_INVALID_PARAMETER при попытке доступа к ресурсу при авторизации Kerberos говорит о том, что неправильно получен билет Kerberos (чаще всего билет получен из-под sudo, а аутентификацию пытаются выполнить без sudo).
Сообщение "mkdir failed on directory /var/run/samba/msg.lock: Отказано в доступе" на работоспособность клиента Samba не влияет, можно это сообщение убрать на время до следующей перезагрузки системы просто создав на клиентской машине этот каталог командой:
Command 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 -":
Command 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 не влияет.