Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Исходные данные

Предполагается, что у нас уже есть установленный сервер FreeIPA.
При стандартной установке FreeIPA на таком сервере уже установлены службы samba и winbind.


Информация
titleДанная статья применима к:
  • 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 при установке первого контроллера с помощью команды 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
Titlesudo ipactl status
...
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" указывает, что все конфигурационные параметры будут храниться в БД 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


Информация
После внесения изменений в registry изменения применяются автоматически, и, в отличие от работы с конфигурационным файлом, службу samba перезапускать не нужно.


Создание домашних каталогов

Для тестирования создадим на сервере условный домашний каталог пользователя admin (т.е. администратора FreeIPA, создаваемого "по умолчанию"):

Информация

sudo mkhomedir_helper admin

Подключение/монтирование ресурса с клиентской доменной машины

После выполнения указанных выше действий ресурс (в данном примере - автоматически монтируемый домашний каталог пользователя см. специальный ресурс homes) будет доступен на клиентской машине с авторизацией через Kerberos:

Command

kinit admin
smbclient -k //ipa0.ipadomain.ru/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
server signing = required



или (устаревший вариант):

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.

  1. На контроллере домена:

    Если при установке контроллера домена не была применена опция --setup-adtrust (установка компонент для работы с samba и Windows AD), то установить необходимые компоненты:

    Command
    sudo kinit admin
    sudo ipa-adtrust-install --add-sids --add-agents


  2. На файловом сервере:
    1. Рекомендуется  назначить файловому серверу статический IP-адрес;
    2. Назначить файловому серверу полное доменное имя, например samba.ipadomain.ru:

      Command
      sudo hostnamectl set-hostname samba.ipadomain.ru


    3. В файле /etc/hosts указать настройки IP для этого имени;

    4. В качестве сервера службы DNS указать контроллер домена;

    5. Ввести файловый сервер в домен:

      Command
      sudo apt install astra-freeipa-client
      sudo astra-freeipa-client -d ipadomain.ru


    6. Установить на файловом сервере необходимые пакеты:

      Информация
      Для установки пакета libwbclient-sssd в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) необходимо подключить репозиторий установочного диска.


      Command
      sudo apt install libwbclient-sssd samba smbclient



  3. После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена выполнить команды:

    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


  4. После регистрации службы выполнить на файловом сервере
    1. Создание разделяемого файлового ресурса (например /home/share) и назначение ему прав доступа:

      Command
      sudo mkdir -p /home/share
      sudo chown nobody:nogroup /home/share


    2. Получение таблицы ключей:

      Command
      sudo kinit admin
      sudo ipa-getkeytab -s ipa0.ipadomain.ru -p cifs/samba.ipadomain.ru -k /etc/samba/samba.keytab


    3. Настройку конфигурации службы 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


    4. Перезапуск службы 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  не влияет.