SCROLL
Среднее время на прочтение: 5 мин.

Разворачиваем файловый сервер Samba 4.5 с интеграцией Active Directory на Debian 9 Stretch

Как известно система лицензирования Microsoft штука не дешевая и поэтому рассмотрим как установить файловый сервер Samba 4.5 с интеграцией Active Directory на Debian 9 Stretch.

 

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

  • Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
  • Система по файловый сервер (datastore1) на Debian 9 Stretch

 

Подготовка системы (Debian 9 Stretch)

Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:

apt-get update && apt-get upgrade -y

 

Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле (/etc/hostname):

datastore1.jakonda.local

 

Так же файл (/etc/hosts) приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:

127.0.0.1	localhost
127.0.1.1	datastore1.jakonda.local datastore1

 

Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:

apt-get install ntp ntpdate

ntpdate dc1.jakonda.local

[stextbox id=’info’]Более подробно о синхронизации времени на Debian 8 Jessie/Ubuntu Server 14.04 можно почитать в этой статье[/stextbox]

 

Настройка Active Directory (Windows Server 2012 R2)

В DNS зону (JAKONDA.LOCAL), добавляем A-запись файлового сервера:

 

Создаем служебного пользователя (прим. datastore1), с бесконечным срок действия пароля.

 

Создаем KEYTAB-файл (необходим для аутентификации пользователей в Active Directory). В командной строке с правами администраторы выполняем команду (соблюдая регистр):

ktpass -princ HTTP/datastore1.jakonda.local@JAKONDA.LOCAL -mapuser datastore1@JAKONDA.LOCAL -pass Aa1234567 -crypto RC4-HMAC-NT -ptype KRB5_NT_PRINCIPAL -out C:\datastore1.keytab

 

Полученный KEYTAB-файл, передаем любым удобным способом на файловый сервер (расположение KEYTAB-файла на моем файловом сервере — /root/datastore1.keytab). Как передать файл посредством утилиты PuTTY можно прочитать тут

 

Настройка Kerberos

Установка пакетов для поддержки аутентификации Kerberos:

apt-get install krb5-user

[stextbox id=’info’]В ходе установки может появится запрос указать область по-умолчанию для Kerberos, область необходимо его указать в заглавном виде (прим. JAKONDA.LOCAL)[/stextbox]

 

Файл конфигурации Kerberos (/etc/krb5.conf), приводим к виду:

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = JAKONDA.LOCAL
 default_keytab_name = /root/datastore1.keytab
 dns_lookup_kdc = false
 dns_lookup_realm = false
 forwardable = true
 ticket_lifetime = 24h

[realms]
 JAKONDA.LOCAL = {
 kdc = dc1.jakonda.local
 default_domain = JAKONDA.LOCAL
 admin_server = dc1.jakonda.local
 }

[domain_realm]
 .jakonda.local = JAKONDA.LOCAL
 jakonda.local = JAKONDA.LOCAL

[stextbox id=’warning’]Соответственно подставляем название своего домена вместо jakonda.local/JAKONDA.LOCAL[/stextbox]

 

Проверка работы Kerberos, выполним авторизацию в Active Directory:

kinit -kV -p HTTP/datastore1.jakonda.local

Using default cache: /tmp/krb5cc_0
Using principal: HTTP/datastore1.jakonda.local@JAKONDA.LOCAL
Authenticated to Kerberos v5

Удаляем полученный билет:

kdestroy

 

Установка и настройка Samba, Winbind

Устанавливаем необходимые пакеты:

apt-get install samba cifs-utils winbind libnss-winbind -y

 

Конфигурационный файл Samba (/etc/samba/smb.conf) приводим к виду:

[global]
#       ОБЩИЕ ПАРАМЕТРЫ СЕТЕВОЙ ШАРЫ
        realm = JAKONDA.LOCAL
        workgroup = JAKONDA

        security = ads
        encrypt passwords = yes

        netbios name = DATASTORE1
        server string = %h server

        domain master = no
        local master = no
        preferred master = no
        os level = 0
        domain logons = no

        dns proxy = no

        socket options = TCP_NODELAY

        unix charset = UTF-8
        dos charset = 866

#       Конфигурация по-умолчанию для локальных пользователей и групп
        idmap config * : backend = tdb
        idmap config * : range = 3000-7999

#       Конфигурация для домена JAKONDA и его пользователей и групп
        idmap config JAKONDA : backend = rid
        idmap config JAKONDA : range = 10000-999999

#       ПАРАМЕТРЫ WINBIND
        winbind enum users = yes
        winbind enum groups = yes
        winbind refresh tickets = yes
        winbind use default domain = yes

#       ПОДКЛЮЧЕНИЕ МОДУЛЕЙ VFS (Virtual File System)
        vfs objects = acl_xattr

#       Поддержка Windows ACLs
        map acl inherit = yes
        store dos attributes = yes

#       ОТКЛЮЧЕНИЕ ПОДДЕРЖКИ СЕТЕВЫХ ПРИНТЕРОВ
        load printers = no
        show add printer wizard = no
        printcap name = /dev/null
        disable spoolss = yes

#       ПАРАМЕНТЫ ЛОГИРОВАНИЯ
        log level = 0 vfs:1

[stextbox id=’warning’]Обращаю внимание что в параметрах realm, workgroup указываем название своего домена. Подробное описание используемых параметров можно по этой ссылке. [/stextbox]

 

Так как в Linux по-умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384, поэтому увеличим лимит в Debian до значения 16384.

 

В файле (/etc/security/limits.conf) дописываем в самый конец строки:

*               -       nofile          16384
root            -       nofile          16384

Перезагружаем систему для применения изменений:

reboot

 

Выполним проверку конфигурации на ошибки, командой:

testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

 

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

net ads join -U jakonda@jakonda.local

Вывод об успешном присоединении к домену:

Enter jakonda@jakonda.local's password:
Using short domain name -- JAKONDA
Joined 'DATASTORE1' to dns domain 'jakonda.local'

 

Теперь чтобы система использовала winbind для поиска пользователей и групп в файле (/etc/nsswitch.conf) к параметрам passwd, group добавляем параметр winbind:

# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat winbind
group:          compat winbind
shadow:         compat
gshadow:        files

hosts:          files dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

 

Перезапускаем службы Samba и Winbind для применения изменений:

/etc/init.d/smbd restart
/etc/init.d/winbind restart

 

Проверим, что Winbind установил доверительные отношения с Active Directory, выполним команду:

wbinfo -t

checking the trust secret for domain JAKONDA via RPC calls succeeded

Для проверки видит ли Winbind пользователей и группы из Active Directory, выполним команды:

wbinfo -u
wbinfo -g

Если в ходе выполнения данных команд в консоль были выведены пользователи и группы из Active Directory, то это значит что Winbind работает правильно.

 

Так же удостоверится в корректной работе Winbind можно запросив данные по доменному пользователю (прим. ранее созданного пользователя datastore1):

id datastore1
uid=14389(datastore1) gid=10513(пользователи домена) группы=10513(пользователи домена),14389(datastore1),10001(BUILTIN\users)

 

 

Общие папки (Shared Folders)

Так как мы интегрируем Samba с Active Directory, то и управление правами доступа на общие папки будет гораздо удобней назначать из ОС Windows.

 

Учетные записи которые могут настраивать права на общие папки, нуждаются в привилегиях SeDiskOperatorPrivilege. Чтобы посмотреть текущий список привилегий на хосте, выполним команду:

net rpc rights list accounts -U'JAKONDA\jakonda'

Результат выполнения:

BUILTIN\Print Operators
No privileges assigned

BUILTIN\Account Operators
No privileges assigned

BUILTIN\Backup Operators
No privileges assigned

BUILTIN\Server Operators
No privileges assigned

BUILTIN\Administrators
SeMachineAccountPrivilege
SeTakeOwnershipPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeRemoteShutdownPrivilege
SePrintOperatorPrivilege
SeAddUsersPrivilege
SeDiskOperatorPrivilege
SeSecurityPrivilege
SeSystemtimePrivilege
SeShutdownPrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeSystemProfilePrivilege
SeProfileSingleProcessPrivilege
SeIncreaseBasePriorityPrivilege
SeLoadDriverPrivilege
SeCreatePagefilePrivilege
SeIncreaseQuotaPrivilege
SeChangeNotifyPrivilege
SeUndockPrivilege
SeManageVolumePrivilege
SeImpersonatePrivilege
SeCreateGlobalPrivilege
SeEnableDelegationPrivilege

Everyone
No privileges assigned

 

Выдадим разрешение SeDiskOperatorPrivilege группе «Администраторы домена» (Domain Admins), командой:

net rpc rights grant 'JAKONDA\Domain Admins' SeDiskOperatorPrivilege -U'JAKONDA\jakonda'

ENTER JAKONDA\JAKONDA'S PASSWORD:
SUCCESSFULLY GRANTED RIGHTS.

 

Теперь можно приступать к созданию общих папок. Для примера рассмотрим создание общей папки PUBLIC.

 

Создаем папку и выставляем права доступа на нее:

mkdir -p /samba/public

chown "администраторы домена":"пользователи домена" /samba/public
chmod 770 /samba/public

 

В файле конфигурации Samba (/etc/samba/smb.conf) описываем параметры общей папки:

[PUBLIC]
       path = /samba/public
       read only = no

#      Аналог технологии Access-based Enumeration(ABE — Перечисление на основании доступа)
       hide unreadable = yes
#      hide unwriteable files = yes

[stextbox id=’info’]Если необходимо сделать общую папку невидимой, то в параметрах необходимо в название общей папки символ $ — [PUBLIC$]. В этом случае общая папка не будет видна при обзоре сети и войти в нее можно будет указав полный путь к ней.[/stextbox]

[stextbox id=’warning’]Если необходимо задать наследование владельца от родительской папки для создаваемых файлов и папок, то делается это параметром: inherit owner = yes[/stextbox]

 

Для применения изменений перечитываем конфигурацию Samba, командой:

/etc/init.d/smbd reload

 

Далее все настройку прав доступа выполняем из оснастки Управление компьютером (Computer Manager).

 

Запускаем от администратора Управление компьютером (Computer Manager) (Меню ПУСК -> Выполнить -> compmgmt.msc). Подключится к другому компьютеру… и указываем компьютер

 

После подключения к системе, переходим в «Общие папки» — «Общие ресурсы» и видим нашу общую папку PUBLIC, далее привычным методом выставляем все необходимые права доступа на нее.

[stextbox id=’info’]Так же через оснастку Управление компьютером (Computer Manager) удобно смотреть активные пользовательские сеансы и какие файлы открыты в общих папках. При необходимости можно завершить пользовательский сеанс или закрыть открытый файл.[/stextbox]

Обсуждение

1 комментариев
  • Добрый вечер.
    Скажите, от чего отталкиваться при расчёте выделения количества оперативной памяти и процессорных мощностей для VM, на которой хотел бы тестово поднять самбу на Debian и реализовать написанное в статье? Пользователей будет, доменных, в районе 50. Шар, около 20. Объём сложно предположить, ориентировочно 4 Тб.