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

356053b3c1edb88c266d38cfa2c88fff

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

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

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

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

apt install sudo

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

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

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

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

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

Указываем 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

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

  1. nano /etc/krb5.conf

    [libdefaults]

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

                    dns_lookup_realm = false

                    dns_lookup_kdc = true

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

smbd  -b | grep CONFIGFILE

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

  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

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

smbcontrol all reload-config

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

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

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

username map = /etc/samba/user.map

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

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

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

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

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

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

  1. nano /etc/hosts

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

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

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

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

  1. nano /etc/nsswitch.conf

    passwd:         files winbind

    group:          files winbind

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

  1. systemctl start smbd

  2. systemctl start nmbd

  3. systemctl start winbind

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

poweroff –reboot

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

wbinfo --ping-dc

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

smbd -b | grep HAVE_LIBACL

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

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

  1. nano /etc/samba/smb.conf

    vfs objects = acl_xattr

    map acl inherit = yes

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

  1. nano /etc/samba/user.map

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

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

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

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

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

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

mkdir -p /srv/samba/Demo/

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

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

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

chmod 0770 /srv/samba/Demo/

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

  1. nano /etc/samba/smb.conf

[Demo]

        path = /srv/samba/Demo/

        read only = no

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

smbcontrol all reload-config

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

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

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

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

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

acl_xattr:ignore system acls = yes

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

getfacl /srv/samba/Demo/

© Habrahabr.ru