Для примера использован следующие исходные данные:
дистрибутив: UBUNTU 16.04.4
имя сервера Linux: 2UBUNTU-16
домен Windows: TESTDOMAIN.LOCAL
контроллеры домена: 2SRV1.TESTDOMAIN.LOCAL, 2SRV2.TESTDOMAIN.LOCAL
администратор контроллера домена: adm
Подготовка
После установки дистрибутива выполняем обновление информации о пакетах и сами пакеты:
sudo apt-get update
sudo apt-get upgrade
Для удобства работы с сервером можно дополнительно установить Webmin (систему управления сервером LINUX через web-интерфейс).
Если есть необходимость, то меняем имя сервера:
hostnamectl set-hostname 2UBUNTU-16
Добавляем доменное имя сервера в файл hosts
sudo nano /etc/hosts
127.0.0.1 localhost
127.0.1.1 2ubuntu-16 2ubuntu-16.testdomain.local
После этого перезагружаем сервер:
sudo reboot
Установка Samba
Помимо установки Samba, так же устанавливаем пакеты Kerberos и Winbind (для возможности подключения и взаимодействия с доменом на Windows):
sudo apt install krb5-user winbind samba libnss-winbind libpam-winbind
При установке Kerberos будет запрошена область по умолчанию - нужно указать адрес домена (в нашем случае TESTDOMAIN.LOCAL)
Проверяем доступность контроллера домена:
ping -c 5 TESTDOMAIN.LOCAL
Для успешной работы с доменом нужно установить синхронизацию времени с контроллером домена.
Устанавливаем пакет:
sudo apt install ntp
Настраиваем файл конфигурации службы ntp
sudo nano /etc/ntp.conf
Нужно закомментировать все текущие указанные серверы проверки время и добавить свой домен ( pool TESTDOMAIN.LOCAL)
Перезапускаем службу времени и проверяем статус синхронизации:
sudo systemctl restart ntp
ntpq -p
Запрашиваем тикет у Kerberos у контроллера домена:
kinit Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
Если не отобразилась информация об ошибке, то запрос прошёл верно и можно проверить результат:
klist
Настройка Samba
Сохраним резервную копию файла конфигурации:
sudo cp /etc/samba/smb.conf /etc/samba/smb.default.conf
Далее редактируем файл конфигурации:
sudo nano /etc/samba/smb.conf
Пример заполнения раздела [global]
[global]
security = ADS
workgroup = TESTDOMAIN
realm = TESTDOMAIN.LOCAL
encrypt passwords = yes
# Default idmap config for local BUILTIN accounts and groups
idmap config * : backend = tdb
idmap config * : range = 3000-7999
# idmap config for the TESTDOMAIN domain
idmap config TESTDOMAIN : backend = rid
idmap config TESTDOMAIN : range = 10000-999999
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
После сохранения изменений в файле smb.conf выполняем проверку:
testparm
Взаимодействие Samba с доменом Windows
Если ошибок не обнаружено, то подключаем сервер к домену:
sudo net ads join -U Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
В случае отсутствия ошибок проверяем наличия сервера в списке компьютеров домена на стороне контроллера.
Перезагружаем сервис Winbind:
service winbind restart
Проверяем связь с контроллером домена, а затем список пользователей и групп домена Windows:
wbinfo --ping-dc
wbinfo -u
wbinfo -g
Чтобы UBUNTU могла использовать не только локальные группы и пользователей, но и доменные данные, нужно отредактировать настройки диспетчера службы имен NSS (Name Services Switch)
sudo nano /etc/nsswitch.conf
Необходимо дописать следующие значения:
passwd: compat winbind
group: compat winbind
После этого можно проверить возможность просмотра пользователей и групп:
getent passwd adm
getent group "пользователи домена"
Добавляем папку общего ресурса:
sudo mkdir -p /srv/samba/public
Назначаем имя владельца и группу для созданной папки:
sudo chown "adm":"пользователи домена" /srv/samba/public
Редактируем файл конфигурации Samba, чтобы добавить поддержку Windows ACLs и сетевую папку public
sudo nano /etc/samba/smb.conf
[global]
# Windows ACLs Support
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes
[Public]
path = /srv/samba/public/
read only = no
Перезапустим службу Samba (чтобы применить изменения):
service smbd restart && service nmbd restart
Для удобства удалённой настройки разрешений сетевых ресурсов добавим администраторам домена привилегию SeDiskOperatorPrivilege:
net rpc rights grant "TESTDOMAIN\администраторы домена" SeDiskOperatorPrivilege -U "TESTDOMAIN\adm"
Проверяем подключение привилегий:
net rpc rights list privileges SeDiskOperatorPrivilege -U "TESTDOMAIN\adm"
Теперь управлять разрешениями для общих ресурсов можно удалённо с сервера Windows. Для этого запускаем оснастку «Управление компьютером» от имени администратора домена, выбираем «Подключиться к другому компьютеру…» и выбираем имя сервера Linux ( 2UBUNTU-16.TESTDOMAIN.LOCAL)
В разделе «Служебные программы» - «Общие папки» - «Общие ресурсы» будут отображаться сетевые ресурсы, доступные на сервере Linux.
Дополнительно:
Дополнительно можно подключать "корзину" для отдельных ресурсов (чтобы сохранять удалённые файлы и папки).
Проверяем наличие соответствующего модуля:
dpkg -l |grep samba-vfs-modules
Устанавливаем, если он отсутствует:
apt install samba-vfs-modules
Добавляем поддержку корзины для общего ресурса Public
sudo nano /etc/samba/smb.conf
[Public]
path = /srv/samba/public/
read only = no
vfs object = recycle
recycle: repository = .recycle/%U
recycle: touch = yes
recycle: keeptree = yes
recycle: versions = yes
«vfs object = recycle» – включение корзины для общего ресурса;
«recycle: repository = .recycle/%U» – папка, куда будут перемещаться удаленные файлы;
«recycle: touch = yes» – обновлять дату при перемещении файла в корзину;
«recycle: keeptree = yes» – сохранять структуру каталогов удаленного файла;
«recycle: versions = yes» – при перемещении в корзину файла с существующим именем, добавлять к началу имени файла префикс «Copy #».
Для создания статьи использовались следующие материалы:
http://www.linuxrussia.com/samba-as-domain-controller.html
https://4skill.ru/fajlovyj-server-samba-v-domene-windows/