Оглавление |
---|
Исходные данные
Предполагается, что у нас уже есть установленный сервер FreeIPA.
При стандартной установке FreeIPA на таком сервере уже установлены службы samba и winbind.
Информация | |
---|---|
|
|
- ОС ОН Орёл 2.12
- ОС СН Смоленск 1.6
- ОС СН Ленинград. 8.1
|
Установка samba при инициализации сервера FreeIPA
Установка и настройка службы samba может быть выполнена при инициализации контроллера домена FreeIPA. Для этого:
- при инициализации первого в домене контроллера домена FreeIPA командой astra-freeipa-server — использовать опцию -s;
- при установке реплик (команда astra-freeipa-replica) — использовать опцию --setup-adtrust .
При установке и настройке службы Samba также выполняется установка и настройка компонент для работы с Windows AD, но настраивать при этом доверительные отношения с доменом Windows AD не обязательно.
Установка samba после инициализации сервера FreeIPA
Если при инициализации контроллер домена (реплики) FreeIPA не была применена опция установки и настройки samba, то это можно сделать после инициализации:
Получить для суперпользователя билет Kerberos администратора домена
Донастройка сервера FreeIPA
Если при установке сервера не была применена опция --setup-adtrust (установка компонент для работы с samba и Windows AD), то доустановить необходимые компоненты:
Command sudo kinit admin Действуя с правами суперпользователя выполнить установку:
Command sudo ipa-adtrust-install --add-sids --add-agents
Особенности работы связки FreeIPA - samba
После установки sambaПосле этого:
- samba получит роль ROLE_DOMAIN_PDC;
- Сервис служба samba будет переведён переведена под управление контроллера домена FreeIPA;
- Будет будет создана и зарегистрирована доменная служба CIFS.;
Информация |
---|
Отдельно выполнять команду добавления службы "ipa service-add ...", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически. |
Особенности работы связки FreeIPA - Samba
Предупреждение |
---|
После установки 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]
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:
Command sudo net conf import homes.txt homes
sudo net conf import share.txt share
Эти же действия можно выполнить командами без использования файлов для сохранения данных, например, для создания разделяемого ресурса homes:
Command |
---|
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:
Command |
---|
kinit admin |
Монтирование разделяемых ресурсов а аутентификацией Kerberos также будет доступно при наличии билета 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 |
Отдельный сервер
Sambasamba
В примере выше сервер Samba samba запускается непосредственно на контроллере домена. Далее рассмотрим рассматриваются действия по запуску файлового сервера Samba samba с авторизацией аутентификацией через доменную службу Kerberos на отдельном компьютере. Предполагается, что у нас уже есть работающий контроллер домена ipa0.ipadomain.ru., введенном в домен FreeIPA с использованием службы sssd.
- Действия на На контроллере домена:
Если при установке контроллера домена не была
выполнена установка и настройка службы samba, то установить необходимые компоненты, выполнив на контроллере домена следующие команды:
Command sudo kinit admin
sudo ipa-adtrust-install --add-sids --add-agents
Получить на контроллере домена идентификатор безопасности (SID) домена (SID for domain):Якорь GETSID GETSID Command 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 в каком домене работать;
Получить диапазон идентификаторов домена:Якорь GETID GETID Command 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 (начало диапазона идентификаторов) и значение последнего идентификатора, которое вычисляется как:
Command ipabaseid + ipaidrangesize -1
- Настройка файлового сервера:
- Рекомендуется назначить файловому серверу статический IP-адрес (см. Настройка сетевых подключений в Astra Linux).
Ввести компьютер в домен. См. Ввод Astra Linux в домен FreeIPA.
- Рекомендуется назначить файловому серверу статический IP-адрес;
Назначить файловому серверу полное доменное имя, например samba.ipadomain.ru:
и в файле /etc/hosts указать настройки IP для этого имени;Command sudo hostnamectl set-hostname samba.ipadomain.ru Ввести файловый сервер в домен:
sudo apt install astra-freeipa-clientCommand
sudo astra-freeipa-client -d ipadomain.ruУстановить на файловом сервере необходимые пакеты:
Информация Для установки пакета libwbclient-sssd:
- в Astra Linux Special Edition x.7 достаточно использовать основной репозиторий;
- в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) необходимо подключить репозиторий диска со средствами разработки.
Command sudo apt install libwbclient-sssd samba samba-clientwinbind freeipa-admintools Установка пакета freeipa-admintools не является обязательной, но, если пакет установлен, то операции по регистрации службы samba могут быть выполнены на клиенте;
После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена (или на клиенте с установленным пакетом freeipa-admintools) выполнить команды:
Получить билет Kerberos администратора домена:
Command
kinit admin
Зарегистрировать службу (здесь и далее: cifs - фиксированное доменное имя службы для службы samba, samba.ipadomain.ru - имя компьютера в домене, на котором расположена служба):
Command ipa service-add cifs/samba.ipadomain.ru
Создать структуру ролей и привилегий для службы (требуется только при настройке первого сервер, следующие серверы добавляются в созданную структуру):
Command 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"Добавить сервер в созданную структуру ролей и привилегий:
Command ipa role-add-member "CIFS server" --services=cifs/samba.ipadomain.ru
- После регистрации службы выполнить на файловом сервере:
Создание Создать каталог для разделяемого файлового ресурса (например, каталог /homesrv/share/) и назначение ему прав доступаназначить ему владельца "никто:не_группа" (служебный пользователь nobody и служебная группа пользователей nogroup):
Command sudo mkdir -p /homesrv/share
sudo chown nobody:nogroup /homesrv/shareПолучение таблицы ключейПолучить и сохранить таблицу ключей для службы (требуются права суперпользователя):
Command 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, для чего привести Настройку конфигурации службы 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
realm = IPADOMAIN.RU
security = ads
workgroup = IPADOMAIN
idmap config IPADOMAIN : range = <первое_значение_диапазона>-<последнее_значение_диапазона>
idmap config IPADOMAIN : backend = sss
idmap config * : range = 0 - 0[homes]
browsable = no
writable = yes[shared]
path = /homesrv/share
writable = yes
browseable = yesгде:
- realm = IPADOMAIN.RU — название области Kerberos, имя домена заглавными буквами;
- workgroup = IPADOMAIN — имя рабочей группы, первая часть (до точки) имени области Kerberos;
-
в параметре idmap config IPADOMAIN : range чрез тире указываются ранее вычисленные первое и последнее значения диапазона идентификаторов FreeIPA;Якорь SETID SETID
- секции [homes] и [shared] определяют разделяемые ресурсы и приведены для примере (при этом секция [homes] имеет специальное назначение, см. Автоматическое монтирование разделяемых ресурсов Samba);
Настроить идентификатор безопасности домена:Якорь SETSID SETSID Command sudo net setdomainsid <SID> где <SID> — полученный ранее идентификатор безопасности;
Перезапустить Перезапуск службы samba:
Command sudo systemctl restart smbd winbind
Якорь | ||||
---|---|---|---|---|
|
См. также Настройка доступа к файловым объектам разделяемого ресурса.
Для того, чтобы ограничить доступ доменных пользователей к разделяемому ресурсу samba можно использовать следующую процедуру:
Получить билет администратора домена:
Command kinit admin Создать отдельную группу, участником которой будет далее предоставлено права доступа к ресурсу. Например, группу с именем shareaccess:
Command ipa group-add shareaccess Включить в созданную группу пользователей, которым будет предоставлено право доступа. Например, доменных пользователей с именами ipauser01 и ipauser02:
Command ipa group-add-member shareaccess --users=ipauser01 --users=ipauser02 В параметрах разделяемого ресурса для параметра valid users указать имя группы (можно также указывать имена пользователей. Имена групп предваряются символом "@", разделителем имен служит запятая или пробел). Например, предоставить доступ к ресурсу share группе shareaccess и пользователю admin. Если конфигурация samba хранится в реестре samba, то для задания значения параметра следует использовать команду:
Command sudo net conf setparm "share" "valid users" "@shareaccess,admin" Если конфигурация samba хранится в файле, то для внесения изменений использовать текстовый редактор (при этом после внесения изменения потребуется перезапустить службу smbd).
Простые проверки
Независимо от места размещения сервера samba (на контроллере домена или на клиенте) на любом компьютере, входящем в домен, должна успешно последовательность команд:
Получить билет любого доменного пользователя:
Command kinit <имя_доменного_пользователя> Получить список разделяемых ресурсов сервера samba предъявив полученный билет Kerberos:
Command smbclient -kL <имя_сервера> После удаления билетов Kerberos в доступе к серверу samba должно быть отказано. Для проверки:
Удалить билеты Kerberos выполнив команду:
Command kdestroy -A Попытаться получить доступ:
Command smbclient -kL <имя_сервера>
Ошибки и предупреждения
- Ошибка соединения NT_STATUS_BAD_NETWORK_NAME при попытке доступа к ресурсу говорит о том, что забыли создать на сервере каталог (в данном случае при доступе к ресурсу homes - домашний каталог пользователя).;
- Ошибка соединения NT_STATUS_INVALID_PARAMETER при попытке доступа к ресурсу при авторизации Kerberos говорит о том, что неправильно получен билет Kerberos (чаще всего билет получен из-под sudo, а аутентификацию пытаются выполнить без sudo).;
Сообщение "mkdir failed on directory /var/run/samba/msg.lock: Отказано в доступе" на работоспособность клиента Samba 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
- Сообщение "open_internal_pipe: Could not connect to dssetup pipe: NT_STATUS_RPC_INTERFACE_NOT_FOUND" является некритичным предупреждением и на работоспособность службы winbind не влияет;
- Сообщение "Unable to initialize messaging context" на работоспособность клиента Samba samba не влияет.;