|
Установка и настройка службы samba может быть выполнена при инициализации контроллера домена FreeIPA. Для этого:
При установке и настройке службы Samba также выполняется установка и настройка компонент для работы с Windows AD, но настраивать при этом доверительные отношения с доменом Windows AD не обязательно.
Если при инициализации контроллер домена (реплики) FreeIPA не была применена опция установки и настройки samba, то это можно сделать после инициализации:
Получить для суперпользователя билет Kerberos администратора домена:
| sudo kinit admin |
Действуя с правами суперпользователя выполнить установку:
| sudo ipa-adtrust-install --add-sids --add-agents |
После установки samba:
Отдельно выполнять команду добавления службы "ipa service-add ...", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически. |
| После установки ipa-adtrust-install чтение конфигурации samba на сервере будет доступно только суперпользователю. Монтирование и авторизация через samba на сервере для простых пользователей работать не будут. Монтировать разделяемые ресурсы следует только с компьютеров-клиентов. |
Службы samba и winbind теперь будут управляться командой ipactl, в списке служб, выводимом этой командой, появится службы smb и winbind:
| ... smb Service: RUNNING winbind Service: RUNNING ... |
В конфигурационном файле сервиса 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, однако теперь только от имени суперпользователя:
| sudo testparm |
| Перед редактированием БД registry рекомендуется сохранить текущую конфигурацию (вывод команды sudo testparm), чтобы иметь возможность восстановить конфигурацию в случае ошибок. |
Редактировать БД registry можно с помощью специальной утилиты samba-regedit (устанавливается автоматически при установке пакета samba):
| sudo samba-regedit |
При этом параметры samba хранятся в ветке /HKEY_LOCAL_MACHINE/SOFTWARE/Samba/smbconf:

Все секции конфигурации samba (в том числе разделяемые ресурсы, включая специальный ресурс homes) могут быть указаны в этой ветке. Все параметры имеют одинаковый тип REG_SZ.
При этом конфигурационные данные можно импортировать в registry из файлов с синтаксисом конфигурационного файла samba с помощью команды net. Например, для создания разделяемых ресурсов homes и share:
Создать в любом текстовом редакторе файл homes.txt с описанием ресурса homes:
[homes] |
Создать каталог для разделяемого файлового ресурса (например, каталог /srv/share/) и назначить ему владельца "никто:не_группа" (служебный пользователь nobody и служебная группа пользователей nogroup):
| sudo mkdir -p /srv/share sudo chown nobody:nogroup /srv/share |
Создать в любом текстовом редакторе файл share.txt с описанием ресурса share:
[share] |
Импортировать созданные описания ресурсов в конфигурацию samba:
sudo net conf import homes.txt homes |
Эти же действия можно выполнить командами без использования файлов для сохранения данных, например, для создания разделяемого ресурса homes:
| sudo net conf addshare "homes" "/home/%U" "writeable=y" "guest_ok=N" "Home Directories" sudo net conf setparm "homes" "browseable" "No" sudo net conf setparm "homes" "valid users" "%S" |
и т.д.
| После внесения изменений в registry изменения применяются автоматически, и, в отличие от работы с конфигурационным файлом, службу samba перезапускать не нужно. |
Создание домашних каталогов
Для тестирования можно создать на сервере условный домашний каталог пользователя admin (т.е. администратора FreeIPA, создаваемого "по умолчанию"):
sudo mkhomedir_helper admin |
После выполнения указанных выше действий ресурс (в данном примере - автоматически монтируемый домашний каталог пользователя см. специальный ресурс homes) будет доступен на клиентской машине после получения билета Kerberos:
kinit admin |
kinit admin |
Для использования опции монтирования sec=krb5i на сервере может понадобиться установить параметр:
|
| sudo kinit admin sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5i |
| sudo kinit admin sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5 |
В примере выше сервер samba запускается непосредственно на контроллере домена. Далее рассматриваются действия по запуску файлового сервера samba с аутентификацией через доменную службу Kerberos на отдельном компьютере, введенном в домен FreeIPA с использованием службы sssd.
Если при установке контроллера домена не была выполнена установка и настройка службы samba, то установить необходимые компоненты, выполнив на контроллере домена следующие команды:
| sudo kinit admin sudo ipa-adtrust-install --add-sids --add-agents |
Получить на контроллере домена идентификатор безопасности (SID) домена (SID for domain):
| sudo net getdomainsid |
пример вывода команды:
SID for local machine IPA0 is: S-1-5-21-2933183829-3187441131-1463459236 SID for domain IPADOMAIN is: S-1-5-21-2933183829-3187441131-1463459236 |
Идентификатор SID for domain понадобится на сервере samba, чтобы указать службе samba в каком домене работать;
Получить диапазон идентификаторов домена:
| sudo ipa idrange-find --raw |
пример вывода команды:
--------------- 1 range matched --------------- cn: IPADOMAIN.RU_id_range ipabaseid: 72000 ipaidrangesize: 1000000 ipabaserid: 1000 ipasecondarybaserid: 100000000 iparangetype: ipa-local --------------------------------- Количество возвращённых записей 1 --------------------------------- |
для настройки понадобятся значения полей ipabaseid и ipaidrangesize, точнее понадобится значение первого поля ipabaseid (начало диапазона идентификаторов) и значение последнего идентификатора, которое вычисляется как:
| ipabaseid + ipaidrangesize -1 |
Ввести компьютер в домен. См. Ввод Astra Linux в домен FreeIPA.
Установить на файловом сервере необходимые пакеты:
Особенности установки пакета libwbclient-sssd:
|
| sudo apt install libwbclient-sssd samba winbind |
| Для того, чтобы операции по регистрации службы samba могли быть выполнены на клиенте, в старых обновлениях Astra Linux необходимо установить пакет freeipa-admintools. В актуальных обновлениях необходимые для регистрации служб инструменты устанавливаются при вводе компьютера в домен. |
После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена (или на клиенте с установленным пакетом freeipa-admintools) выполнить команды:
Получить билет Kerberos администратора домена:
kinit admin |
Зарегистрировать службу (здесь и далее: cifs - фиксированное доменное имя службы для службы samba, samba.ipadomain.ru - имя компьютера в домене, на котором расположена служба):
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 role-add-member "CIFS server" --services=cifs/samba.ipadomain.ru |
Создать каталог для разделяемого файлового ресурса (например, каталог /srv/share/) и назначить ему владельца "никто:не_группа" (служебный пользователь nobody и служебная группа пользователей nogroup):
| 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 |
где:
ipa0.ipadomain.ru — имя контроллера домена, у которого запрашиваются ключи;
cifs/samba.ipadomain.ru — имя службы, для которой запрашиваются ключи;
/etc/samba/samba.keytab — имя файла, в котором будут сохранены полученные ключи;
Настроить конфигурацию службы samba, для чего привести файл /etc/samba/smb.conf к виду:
[global] [homes] [shared] |
где
realm = IPADOMAIN.RU — название области Kerberos, имя домена заглавными буквами;
workgroup = IPADOMAIN — имя рабочей группы, первая часть (до точки) имени области Kerberos;
в параметре idmap config IPADOMAIN : range через тире указываются ранее вычисленные первое и последнее значения диапазона идентификаторов FreeIPA;
секции [homes] и [shared] определяют разделяемые ресурсы и приведены для примере (при этом секция [homes] имеет специальное назначение, см. Автоматическое монтирование разделяемых ресурсов Samba);
Настроить идентификатор безопасности домена:
| sudo net setdomainsid <SID> |
где <SID> — полученный ранее идентификатор безопасности;
Перезапустить службы samba:
| sudo systemctl restart smbd winbind |
См. Настройка доступа к файловым объектам разделяемого ресурса.
Независимо от места размещения сервера samba (на контроллере домена или на клиенте) на любом компьютере, входящем в домен, должна успешно последовательность команд:
Получить билет любого доменного пользователя:
| kinit <имя_доменного_пользователя> |
Получить список разделяемых ресурсов сервера samba предъявив полученный билет Kerberos:
smbclient -N --use-kerberos=required -L <имя_сервера> |
В более ранних обновлениях:
| smbclient -kL <имя_сервера> |
После удаления билетов Kerberos в доступе к серверу samba должно быть отказано. Для проверки:
Удалить билеты Kerberos выполнив команду:
| kdestroy -A |
Попытаться получить доступ:
smbclient --use-kerberos=required -L <имя_сервера> |
В более ранних обновлениях:
| smbclient -kL <имя_сервера> |
Сообщение "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 |