Разворачиваем файловый сервер 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]
Добрый вечер.
Скажите, от чего отталкиваться при расчёте выделения количества оперативной памяти и процессорных мощностей для VM, на которой хотел бы тестово поднять самбу на Debian и реализовать написанное в статье? Пользователей будет, доменных, в районе 50. Шар, около 20. Объём сложно предположить, ориентировочно 4 Тб.