Разворачиваем файловый сервер Samba 4.5 с интеграцией Active Directory на Debian
Как известно система лицензирования Microsoft штука не дешевая и поэтому рассмотрим как установить файловый сервер Samba 4.5 и создавать общие папки с интеграцией Active Directory на Debian.
Исходные данные:
- Контроллер домена (DC1) на Windows Server 2012 R2, домен JAKONDA.LOCAL
- Система по файловый сервер (datastore1) на Debian 9 Stretch
Подготовка системы (Debian)
Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:
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
192.168.1.2 datastore1.jakonda.local datastore1
Синхронизация времени
Для корректной аутентификации по протоколу Kerberos необходимо синхронизировать время сервера и клиента. Если системные часы расходятся более чем на 5 минут, то аутентификация не будет выполнена.
Установим NTP сервер и выполним синхронизацию времени с контроллером домена:
apt-get install ntp ntpdate -y
ntpdate dc1.jakonda.local
этой
статьеНастройка лимитов
Так как в Linux по-умолчанию установлен лимит на 1024
одновременно открытых файлов, а в Windows он 16384
, поэтому увеличим лимит в Debian до значения 16384
.
В файле /etc/security/limits.conf
дописываем в самый конец строки:
* - nofile 16384
root - nofile 16384
Настройка Active Directory (Windows)
В DNS зону JAKONDA.LOCAL
, добавляем A-запись файлового сервера:
Создаем служебного пользователя (прим. datastore1
), с бесконечным срок действия пароля.
Создание keytab-файла
Создаем keytab-файл (необходим для аутентификации пользователей в Active Directory). В командной строке с правами администраторы выполняем команду (соблюдая регистр):
ktpass -princ HTTP/datastore1.jakonda.local@JAKONDA.LOCAL -mapuser datastore1@JAKONDA.LOCAL -pass Aa1234567 -crypto ALL -ptype KRB5_NT_PRINCIPAL -out C:\datastore1.keytab
Полученный keytab-файл, передаем любым удобным способом на файловый сервер. Как передать файл посредством утилиты PuTTY можно прочитать в этой статье
Настройка Kerberos
Установка пакетов для поддержки аутентификации Kerberos:
apt-get install krb5-user -y
Файл конфигурации 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
jakonda.local/JAKONDA.LOCAL
Проверка работы 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
Устанавливаем необходимые пакеты:
apt-get install samba cifs-utils winbind libnss-winbind -y
Конфигурационный файл Samba /etc/samba/smb.conf
приводим к виду:
[global]
# ОБЩИЕ ПАРАМЕТРЫ СЕТЕВОЙ ШАРЫ
realm = JAKONDA.LOCAL
workgroup = JAKONDA
security = ads
netbios name = DATASTORE1
server string = %h server
domain master = no
local master = no
preferred master = no
os level = 0
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
realm
, workgroup
указываем название своего домена. Подробное описание используемых параметров можно по этой ссылке
.Выполним проверку конфигурации на ошибки, командой:
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
Чтобы система использовала 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)
Так как мы интегрируем 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.
Создание общей папки
Теперь можно приступать к созданию общих папок в samba. Для примера рассмотрим создание общей папки PUBLIC
. Создаем папку и выставляем права доступа на нее:
mkdir -p /samba/public
chown 'domain admins':'domain users' /samba/public
chmod 770 /samba/public
wbinfo --group-info='domain admins'
В файле конфигурации /etc/samba/smb.conf
описываем параметры общей папки:
[PUBLIC]
path = /samba/public
read only = no
# Аналог технологии Access-based Enumeration(ABE — Перечисление на основании доступа)
hide unreadable = yes
# hide unwriteable files = yes
$
в название общей папки - [PUBLIC$]
. В этом случае общая папка не будет видна при обзоре сети и войти в нее можно будет указав полный путь к ней.Для применения изменений перечитываем конфигурацию Samba, командой:
/etc/init.d/smbd reload
Далее все настройки прав доступа выполняем из оснастки Управление компьютером (Computer Manager) в ОС Windows.
Запускаем от администратора Управление компьютером
(Computer Manager). Нажимаем правой кнопкой мыши на Управление компьютером (локальным)
и выбираем Подключится к другому компьютеру...
и указываем компьютер на котором вы создали общую папку в samba.
После подключения к системе, переходим в Общие папки
> Общие ресурсы
и видим нашу общую папку PUBLIC
, далее привычным методом выставляем все необходимые права доступа на нее.
ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ
Добрый вечер.
Скажите, от чего отталкиваться при расчёте выделения количества оперативной памяти и процессорных мощностей для VM, на которой хотел бы тестово поднять самбу на Debian и реализовать написанное в статье? Пользователей будет, доменных, в районе 50. Шар, около 20. Объём сложно предположить, ориентировочно 4 Тб.