Pull to refresh

Установка и настройка Samba с доменной авторизацией и аутентификацией (файловый сервер)

Level of difficultyEasy
Reading time4 min
Views22K

Статья чисто для того, чтобы молодые коллеги, которые столкнутся с подобной задачей, могли быстрее с ней справиться. Всю информацию по развёртыванию брал почти только
из оф. документации Samba, ибо русскоязычные статьи скудны и неинформативны.

Всё описанное ниже можно даже назвать листингом по настройке. Создана статья с целью привести последовательность действий по базовой настройке на русском языке, т.к. не все могут сходу разобраться в англоязычной документации (понятное дело, можно сразу идти в официальную документацию Samba и там рыться)

Стенд: Debian 12, 1 ЦП, 1 ГБ ОЗУ (машина чистая, только создана)


  1. Устанавливаем программу sudo

    apt install sudo

  2. Добавляем созданного пользователя в процессе установки в группу sudo

    usermod -aG sudo имя_вашего_пользователя

  3. Устанавливаем все необходимые сервисы для работы samba, как члена домена

    sudo apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitle

  4. Далее все команды выполняется либо с применением sudo, либо в привилегированном режиме sudo – i

  5. Указываем NTP-сервер

    1. nano /etc/systemd/timesyncd.conf

      [Time]

      NTP=ваш_NTP_сервер

      FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org

    2. systemctl enable systemd-timesyncd

    3. systemctl start systemd-timesyncd

    4. systemctl status systemd-timesyncd

  6. Указываем настройки для Kerberos

    1. nano /etc/krb5.conf

      [libdefaults]

      default_realm = полное_название_вашего_домена

                      dns_lookup_realm = false

                      dns_lookup_kdc = true

  7. Команда для просмотра, где находится основной конфигурационный файл samba:

    smbd  -b | grep CONFIGFILE

  8. Редактируем конфигурационный файл, добавляя необходимые строчки

    1. nano /etc/samba/smb.conf

      min domain uid = 0

      security = ADS

      workgroup = краткое_имя_домена

      realm = полное_название_вашего_домена

       

      log file = /var/log/samba/%m.log

      log level = 1

       

      # Default ID mapping configuration for local BUILTIN accounts

      # and groups on a domain member. The default (*) domain:

      # - must not overlap with any domain ID mapping configuration!

      # - must use a read-write-enabled back end, such as tdb.

      idmap config * : backend = tdb

      idmap config * : range = 3000-7999

      # - You must set a DOMAIN backend configuration

      # idmap config for the краткое_имя_домена domain

      idmap config краткое_имя_домена : backend = rid

      idmap config краткое_имя_домена : range = 10000-999999

      # Template settings for login shell and home directory

      template shell = /bin/bash

      template homedir = /home/%U

  9. Перечитываем конфигурационные файлы

    smbcontrol all reload-config

  10. Создаём папку

    mkdir -p /usr/local/samba/etc/

  11. Добавляем в smb.conf строчки

    username map = /etc/samba/user.map

    username map = /usr/local/samba/etc/user.map

  12. Создаём файл сопоставления root с доменным пользователем

    nano /usr/local/samba/etc/user.map

    !root = краткое_имя_домена\логин_пользователя

  13. Команда для проверки синтаксиса основного конфигурационного файла - testparm

  14. В файл hosts заносим соответствие IP-адреса и доменного имени

    1. nano /etc/hosts

      X.X.X.X      share-test.полное_название_вашего_домена  share-test

  15. Присоединяем машину к домену

    net ads join -U логин_пользователя (должен иметь права для присоединения к домену)

  16. В nsswitch.conf приводим первые две строчки к следующему виду для того, чтобы доменные пользователи видели локальную систему

    1. nano /etc/nsswitch.conf

      passwd:         files winbind

      group:          files winbind

  17. Запускаем службы

    1. systemctl start smbd

    2. systemctl start nmbd

    3. systemctl start winbind

  18. Перезагружаемся

    poweroff –reboot

  19. Проверяем, что можем подключиться к контроллеру домена

    wbinfo --ping-dc

  20. Проверяем поддерживает ли наша samba расширенные ACL

    smbd -b | grep HAVE_LIBACL

    Если вывод HAVE_LIBACL, то всё ок

  21. Добавляем ещё пару строчек в конфигурационный файл

    1. nano /etc/samba/smb.conf

      vfs objects = acl_xattr

      map acl inherit = yes

  22. Добавляем в ещё один файл сопоставление пользователя домена с root

    1. nano /etc/samba/user.map

      !root = Домен\логин_пользователя

  23. Назначаем права на изменение прав для общих папок для доменных администраторов или другой группы (можно и пользователя поставить)

    net rpc rights grant "Домен\Domain Admins" SeDiskOperatorPrivilege -U "Домен\логин_пользователя"

  24. Проверяем список тех, кто может менять права

    net rpc rights list privileges SeDiskOperatorPrivilege -U "Домен\логин_пользователя"

  25. Создаём папку для общего использования

    mkdir -p /srv/samba/Demo/

  26. Меняем владельца и группу папки

    chown root:"Домен\Domain Admins" /srv/samba/Demo/

  27. Ставим права на папку

    chmod 0770 /srv/samba/Demo/

  28. Вносим информацию про нашу папку в конфигурационный файл samba

    1. nano /etc/samba/smb.conf

    [Demo]

            path = /srv/samba/Demo/

            read only = no

  29. Перечитываем конф. Файл

    smbcontrol all reload-config

  30. Настраиваем права для общей папки через Windows

    1. Нажимаем Win+X -> Управлением компьютером

    2. Вкладка Действие и «Подключиться к другом компьютеру», вводим имя нашей машины, например, share-test

    3. В Инструментах системы открываем Общие папки и уже через ПКМ по нашей папке -> Свойства -> Безопасность, настраиваем права

  31. Добавляем в файл smb.conf в раздел нашей папки строчку

    acl_xattr:ignore system acls = yes

  32. Проверяем права на папку

    getfacl /srv/samba/Demo/


Источники:

Tags:
Hubs:
Total votes 5: ↑4 and ↓1+5
Comments7

Articles