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

Ключ

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

Оглавление

Информация
titleДанная статья применима к:

Установка samba при инициализации сервера FreeIPA

Установка и настройка службы samba может быть выполнена при инициализации контроллера домена FreeIPA. Для этого:

  • при инициализации первого в домене контроллера домена FreeIPA командой astra-freeipa-server — использовать опцию -s;
  • при установке реплик (команда astra-freeipa-replica) — использовать опцию --setup-adtrust .

При установке и настройке службы Samba также выполняется установка и настройка компонент для работы с Windows AD, но настраивать при этом доверительные отношения с доменом Windows AD не обязательно.

Установка samba после инициализации сервера FreeIPA

Если при инициализации контроллер домена (реплики) FreeIPA не была применена опция установки и настройки samba, то это можно сделать после инициализации:

  1. Получить для суперпользователя билет Kerberos администратора домена:

    Command
    sudo kinit admin
  2. Действуя с правами суперпользователя выполнить установку:

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

Якорь
FreeIPA+Samba
FreeIPA+Samba
Особенности работы связки 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:

  1. Создать в любом текстовом редакторе файл 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

  2. Создать в любом текстовом редакторе файл share.txt с описанием ресурса share:каталог для разделяемого файлового ресурса (например, каталог /srv/share/) и назначить ему владельца "никто:не_группа" (служебный пользователь nobody и служебная группа пользователей nogroup):

    Command
    sudo mkdir -p /srv/share
    sudo chown nobody:nogroup /srv/share
  3. Создать в любом текстовом редакторе файл share.txt с описанием ресурса share:

    Информация

    [share]
        comment = anonymous share

    Информация

    [share]
        comment = anonymous share
        create mask = 0666
        directory mask = 0777
        guest ok = yes
        guest only = yes
        path = /srv/share
        read only = no

  4. Импортировать созданные описания ресурсов в конфигурацию 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:

  • В актуальных обновлениях Astra Linux Special Edition использовать опцию --use-kerberos:
    Command

    kinit admin
    smbclient --useruse-kerberos=required //ipa0.ipadomain.ru/admin

    При этом будет запрошен пароль, который будет игнорироваться. Для исключения запроса пароля использовать опцию -N.
  • В более ранних обновлениях использование билета Kerberos задается опцией -k:
    Command

    kinit admin
    smbclient -k //ipa0.ipadomain.ru/admin

  • В зависимости от используемой версии samba при использовании Kerberos может быть запрошен пароль, который не используется. Для исключения запроса пароля в дополнение к опциям -k или --use-kerberos использовать опцию -N.
Монтирование разделяемых ресурсов c аутентификацией Kerberos также будет доступно при наличии билета Kerberos (опции монтирования cruid, user, sec): Command. Для выполнения монтирования с помощью команды mount требуются привилегии суперпользователя. Если при этом билет Kerberos получен от имени простого пользователя, то необходимо указать пользователя, которым получен билет. Для этого используется опция монтирования cruid. Примеры команд получения билета и монтирования:sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=admin,user=admin,sec=krb5i
  • С использованием подписания пакетов (параметр krb5i):

  • Информация

    Для использования опции монтирования sec=krb5i на сервере

должен быть задан
  • может понадобиться установить параметр:

command
  • Блок кода
    server signing = required

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

command
  • В примере ниже билет доменного пользователя admin получает текущий пользователь (не обязательно admin). При монтировании используется опция cruid, указывающая, что для монтирования надо использовать билет текущего пользователя, и опция uid, указывается, что монтирование должно выполняться для текущего пользователя:
    Command
    kinit admin
    sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=
admin
  • $USER,
user
  • uid=
admin
  • $USER,sec=krb5i
  • или без подписания пакетов (менее безопасный, но более быстрый вариант):
    Command
    kinit admin
    sudo mount -t cifs //ipa0.ipadomain.ru/share /media/share -o cruid=$USER,uid=$USER,sec=krb5

Отдельный сервер samba

В примере выше сервер samba запускается непосредственно на контроллере домена. Далее рассматриваются действия по запуску файлового сервера samba с аутентификацией через доменную службу Kerberos на отдельном компьютере, введенном в домен FreeIPA с использованием службы sssd.

  1. Действия на контроллере домена:
    1. Если при установке контроллера домена не была выполнена установка и настройка службы samba, то установить необходимые компоненты, выполнив на контроллере домена следующие команды:

      Command
      sudo kinit admin
      sudo ipa-adtrust-install --add-sids --add-agents
    2. Якорь
      GETSID
      GETSID
      Получить на контроллере домена идентификатор безопасности (SID) домена (SID for domain):

      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 в каком домене работать;

    3. Якорь
      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
  2. Настройка файлового сервера:. Выполняется на файловом сервере.
    1. Рекомендуется назначить файловому серверу статический IP-адрес (см. Настройка сетевых подключений в Astra Linux).
    2. Ввести компьютер в домен. См. Ввод Astra Linux в домен FreeIPA.

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

      Информация

      Для Особенности установки пакета libwbclient-sssd:

      • в Astra Linux Special Edition x.8 пакет libwbclient-sssd не используется и его установка не требуется;
      • в Astra Linux Special Edition x.7 и более поздних обновлениях достаточно использовать основной репозиторий;
      • в Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6 ) для установки пакетов необходимо подключить репозиторий диска со средствами разработки.
      Command
      sudo apt install libwbclient-sssd samba winbind freeipa-admintools
      Установка пакета  freeipa-admintools не является обязательной, но, если пакет установлен, то операции
      Информация
      Для того, чтобы операции по регистрации службы samba
      могут
      могли быть выполнены на клиенте
      ;
      , в старых обновлениях Astra Linux необходимо установить пакет freeipa-admintools. В актуальных обновлениях необходимые для регистрации служб инструменты устанавливаются при вводе компьютера в домен.
  3. Регистрация и настройка доменной службы. Выполняется либо на контроллере домена, либо на файловом сервере После ввода файлового сервера в домен зарегистрировать службу и предоставить этой службе права на чтение паролей, для чего на контроллере домена (или на клиенте с установленным пакетом freeipa-admintools) выполнить команды. Зарегистрировать службу и предоставить этой службе права на чтение паролей:

    1. Получить билет Kerberos администратора домена:

      Command

      kinit admin

    2. Зарегистрировать службу (здесь и далее: cifs - фиксированное доменное имя службы для службы samba, samba.ipadomain.ru - имя компьютера в домене, на котором расположена служба):

      Command

      ipa service-add cifs/samba.ipadomain.ru

    3. Создать структуру ролей и привилегий для службы (требуется только при настройке первого сервер, следующие серверы добавляются в созданную структуру):

      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"

    4. Добавить сервер в созданную структуру ролей и привилегий:

      Command

      ipa role-add-member "CIFS server" --services=cifs/samba.ipadomain.ru

  4. После регистрации службы Создание каталога для разделяемого файлового ресурса. Выполняется на файловом сервере. Например:
    1. Создать каталог для разделяемого файлового ресурса (например, каталог /srv/share/) и назначить ему владельца "никто:не_группа" (служебный пользователь nobody и служебная группа пользователей nogroup):

      Command
      sudo mkdir -p /srv/share
      sudo chown nobody:nogroup /srv/share
    2. Получить и сохранить таблицу ключей для службы (требуются права суперпользователя):

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

      где:- ipa0

      • ipa0.ipadomain.ru — имя контроллера домена, у которого запрашиваются ключи;

      - cifs
      • cifs/samba.ipadomain.ru — имя службы, для которой запрашиваются ключи;

      • /etc/samba/samba.keytab — имя файла, в котором будут сохранены полученные ключи;

    3. Настроить конфигурацию службы samba, для чего привести файл /etc/samba/smb.conf к виду:

      Информация

      [global]
      dedicated keytab 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 = /srv/share
      writable = yes
      browseable = yes

      где:- realm

      • realm = IPADOMAIN.RU — название области Kerberos, имя домена заглавными буквами;

      - workgroup
      • workgroup = IPADOMAIN — имя рабочей группы, первая часть (до точки) имени области Kerberos;


      -
      • Якорь
        SETID
        SETID
        в параметре idmap config IPADOMAIN : range через тире указываются ранее вычисленные первое и последнее значения диапазона идентификаторов FreeIPA; 

      -
    4. Якорь
      SETSID
      SETSID
      Настроить идентификатор безопасности домена:

      Command
      sudo net setdomainsid <SID>

      где <SID> — полученный сохраненный ранее идентификатор безопасности;

    5. Перезапустить службы samba:

      Command
      sudo systemctl restart smbd winbind

Якорь
access
access
Разграничение доступа к разделяемым ресурсам в домене

См. также Настройка доступа к файловым объектам разделяемого ресурса.

Для того, чтобы ограничить доступ доменных пользователей к разделяемому ресурсу 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. См.  Особенности работы связки FreeIPA - samba.
    Простые проверки

    Независимо от места размещения сервера samba (на контроллере домена или на клиенте) на любом клиентском компьютере, входящем в домен, должна успешно выполняться последовательность команд:

    1. Получить билет любого доменного пользователя:

      Command
      kinit <имя_доменного_пользователя>
    2. Получить список разделяемых ресурсов сервера samba предъявив полученный билет Kerberos:

      1. В Astra Linux Special Edition 1.8:
        Command

        smbclient -N --useruse-kerberos=required -L <имя_сервера>

      2. В более ранних обновлениях:

        Command
        smbclient -kL <имя_сервера>
    3. После удаления билетов Kerberos в доступе к серверу samba должно быть отказано. Для проверки:

      1. Удалить билеты Kerberos выполнив команду:

        Command
        kdestroy -A
      2. Попытаться получить доступ:

        1. В актуальных обновлениях Astra Limux Special Edition 1.8:
          Command

          smbclient --use_-kerberos=required -L <имя_сервера>

        2. В более ранних обновлениях:

          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 не влияет, можно это сообщение убрать на время до следующей перезагрузки системы просто создав на клиентской машине этот каталог командой:

      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  не влияет.