|
Установка и настройка службы 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] |
Создать в любом текстовом редакторе файл 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 |
Монтирование разделяемых ресурсов а аутентификацией Kerberos также будет доступно при наличии билета Kerberos (опции монтирования cruid, user, sec):
| sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5i |
Для использования опции монтирования sec=krb5i на сервере должен быть задан параметр:
|
или (устаревший вариант):
| 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 freeipa-admintools |
Установка пакета freeipa-admintools не является обязательной, но, если пакет установлен, то операции по регистрации службы samba могут быть выполнены на клиенте;
После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена (или на клиенте с установленным пакетом 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 admin |
Создать отдельную группу, участником которой будет далее предоставлено права доступа к ресурсу. Например, группу с именем shareaccess:
| ipa group-add shareaccess |
Включить в созданную группу пользователей, которым будет предоставлено право доступа. Например, доменных пользователей с именами ipauser01 и ipauser02:
| ipa group-add-member shareaccess --users=ipauser01 --users=ipauser02 |
В параметрах разделяемого ресурса для параметра valid users указать имя группы (можно также указывать имена пользователей. Имена групп предваряются символом "@", разделителем имен служит запятая или пробел). Например, предоставить доступ к ресурсу share группе shareaccess и пользователю admin. Если конфигурация samba хранится в реестре samba, то для задания значения параметра следует использовать команду:
| sudo net conf setparm "share" "valid users" "@shareaccess,admin" |
Если конфигурация samba хранится в файле, то для внесения изменений использовать текстовый редактор (при этом после внесения изменения потребуется перезапустить службу smbd).
Независимо от места размещения сервера samba (на контроллере домена или на клиенте) на любом компьютере, входящем в домен, должна успешно последовательность команд:
Получить билет любого доменного пользователя:
| kinit <имя_доменного_пользователя> |
Получить список разделяемых ресурсов сервера samba предъявив полученный билет Kerberos:
| smbclient -kL <имя_сервера> |
После удаления билетов Kerberos в доступе к серверу samba должно быть отказано. Для проверки:
Удалить билеты Kerberos выполнив команду:
| kdestroy -A |
Попытаться получить доступ:
| 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 |