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

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

Ключ

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

Оглавление

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

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


Информация
titleДанная статья применима к:
  • ОС ОН Орёл 2.12
  • ОС СН Смоленск 1.6
    • 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

    ОС СН Ленинград. 8.1



    Донастройка сервера FreeIPA

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

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

    После этого:

    • samba получит роль ROLE_DOMAIN_PDC;
    • Сервис samba будет переведён под управление FreeIPA;
    • Будет создана и зарегистрирована доменная служба CIFS.
    Информация

    Отдельно выполнять команду добавления службы "ipa service-add ...", как рекомендуется во многих Интернет-инструкциях, не нужно: служба добавится автоматически.

    Особенности работы связки FreeIPA - Samba

    Предупреждение
    После установки ipa-adtrust-install чтение конфигурации samba на сервере будет доступно только суперпользователю.
    Монтирование и авторизация через samba на сервере для простых пользователей работать не будут.
    Монтировать разделяемые ресурсы следует только с компьютеров-клиентов.

    Службы samba и winbind теперь будут управляться командой ipactl, в списке служб появится службы smb и winbind:

    Command
    Titlesudo ipactl status
    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 ###
    [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=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

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

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

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


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

        Command
        sudo apt install libwbclient-sssd samba samba-client



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

      Command

      sudo kinit admin
      sudo ipa service-add cifs/samba.ipadomain.ru
      sudo ipa permission-add "CIFS server can read user passwords" --attrs={ipaNTHash,ipaNTSecurityIdentifier} --type=user --right={read,search,compare} --bindtype=permission
      sudo ipa privilege-add "CIFS server privilege"
      sudo ipa privilege-add-permission "CIFS server privilege" --permission="CIFS server can read user passwords"
      sudo ipa role-add "CIFS server"
      sudo ipa role-add-privilege "CIFS server" --privilege="CIFS server privilege"
      sudo 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  не влияет.