Контроллер домена и файловый сервер на одной машине
Samba4 в роли AD + файловый сервер
В этой статье я рассмотрю по шагам подготовку к использованию Samba4 в роли контроллера домена вкупе с дополнительным файловым сервером так же на базе Samba4. Что в итоге мы получим? Два настроенных сервера с samba4, первый в роли domain controller, второй в роли member server с файлами пользователей. Функционирования этой связки я добивался около месяца, за сим, не поделится конечным рецептом просто не имею права…
Немного предыстории: в компании используется файловый сервер на базе samba3.6 с LDAP Backend, который содержит список всех пользователей и групп с правами доступа. Права доступа на каталоги выставляются с помощью xattr_acl (Extended file attributes), в LDAP хранится список пользователей с соответствием группам доступа. Собственно требуется переехать с этой инфраструктуры на samba4…
1) Подготавливаем два сервера для samba4, я использую дистрибутив SUSE Linux Enterprise 11 Service Pack 3 (SLES11 SP3) как корпоративный стандарт, поэтому разворачивать все буду именно на его базе. Далее можно собрать самбу из исходников, это по желанию, я же использую готовую сборку от sernet, которую можно бесплатно получить просто зарегистрировавшись на портале — Portal Enterprise Samba
Sernet производит сборку самбы для нескольких дистрибутивов — Debian, Ubuntu, RHEL, CentOS, SLES, openSUSE.
Я использовал Samba4 версии 4.1.6
2) На первом сервере, который у нас выступит в роли DC, устанавливаем sernet-samba-ad. Если возникнут проблемы, можно заглянуть в официальную инструкцию — Samba AD DC HOWTO. Незабываем прописать имя нашего будущего домена в своем DNS сервере с указанием на наш новый сервер.
Далее выполняем создание домена с помощью samba-tools.
Система запросит несколько параметров, которые необходимо указать, например такие как имя домена и т.д., а так же попросит задать пароль. Собственно только имя домена и нужно указать, все остальные вопросы можно оставить с ответами по умолчанию. Пароль администратора должен соответствовать стандартным политикам паролей в Windows, т.е. иметь как минимум одну маленькую и одну большую буквы, а так же цифры, плюс минимум 8 символов.
Копируем вновь сконфигуренный самбой конфиг Kerberos в место по умолчанию.
Для проверки верной работы Kerberos можно установить krb5-client и проверить работу аутентификации.
klist должен показать информацию по тикетам, если все ок — идем дальше.
Нужно подправить файл /etc/default/sernet-samba
Правим строчку SAMBA_START_MODE= на следующую.
После этого можно запускать саму самбу
Если запуск прошел удачно можно считать, что наш контроллер домена уже развернут.
Редактируем файл /etc/nsswitch.conf для того, что бы система увидела пользователей домена и группы, а так же могла нормально выставлять права на файлы. Приводим эти две строки к следующему виду:
Перезапустим систему и проверим, работает ли… с помощью getent passwd и getent group. Мы должны увидеть группы и пользователей из нашего домена. Более подробно про этот шаг можно почитать официальную инструкцию — Samba4/Winbind
Осталось ввести в домен любую машину с Windows для администрирования, думаю с этим проблем не возникнет.
3) На машине с Windows, которую мы ввели в домен устанавливаем admin pack. Используем оснастку по управлению пользователями в AD.
Каждой группе и пользователю нужно присвоить unix uid\gid для будущей нормальной работы xattr_acl на нашем втором сервере.
4) Пора начать готовить наш второй сервер, который выступит в роли member server и будет являться файловым сервером в домене.
Устанавливаем sssd, в стандартном репозитории SLES11 имеется версия 1.9.4, она нам вполне подойдет. Так же устанавливаем sssd-tools. sssd нужен для получения пользователей с unix атрибутами с нашего домена. Более подробно про настройку можно почитать в официальной инструкции — Local user management and authentication/sssd
Мы будем настраивать связь с AD через Kerberos.
На первом сервере (DC) нужно экспортировать keytab из Kerberos.
Для безопасности обрубим лишние права. Копируем keytab файл на наш второй сервер по этому же пути.
Не забудьте исправить имя вашего DC и вашего домена на свои. Ставим sssd в автозапуск, перезагружаем сервер.
Далее можно сбросить кеш и проверяем наши группы с пользователями.
В списке должны быть наши группы и пользователями с uid\gid, которые мы задавали в AD остнастке в Windows.
5) Переходим к настройки samba4 на втором сервере, устанавливаем sernet-samba-nmbd, sernet-samba-smbd, sernet-samba-winbind и все зависимости для них. Более подробно про настройку можно почитать в официальной инструкции — Samba/Domain Member
Создаем smb.conf, мой файл выглядит вот так:
Не забываем подправить конфиг под себя, нужно сменить имя домена на ваш.
Правим наш файл hosts в нем необходимо прямо указать имя нашего member server, иначе зоны DNS не будут автоматически обновляться в AD.
Запустим процедуру входа в наш домен.
Потребуется ввести пароль администратора.
Собственно после этого наш member server уже находится в домене.
Можно попробовать с Windows машины подключится на него под своим логином паролем и создать какую-нибудь папку, для проверки прав…
Создали папку 123, проверяем права.
Как видим, все права верно выставляются.
Далее можно начинать перенос пользователей в наш новый домен, а так же выставлять права на папки в соответствии с вашими пожеланиями.
Так же можно использовать glusterfs вкупе с samba4 для создания отказоустойчивого файлового сервера, но это уже совсем другая история…
Если у кого-то есть вопросы, буду рад оказать помощь.
Контроллер домена и файловый сервер на одной машине
Сообщения: 3806
Благодарности: 822
у меня уже есть виндовс стандарт и 2 виртуальные машины в подарок, за чем мне на линукс 1с ставить. » |
потому что по-хорошему не надо совмещать гипервизор с другими ролями, а у вас дефицит лицензий
тогда физический хост нельзя вводить в домен а то без запущенного DC я на него не попаду » |
hyper-v ставлю на физ сервер, ВМ1 ставлю AD, ВМ2 ставлю файловый сервер и 1с8 » |
но только тогда когда есть ещё один контроллер домена находящийся (физически) на другом сервере » |
А вот постоянная полноценная работа с Hyper-V вне домена попросту невозможна.
Настройка файлового сервера Samba с интеграцией в Active Directory
Функционал обычного файлового сервера неизменно остается одним из самых популярных и востребованных в работе среднестатистического офиса. Сегодня я расскажу как установить и настроить файловый сервер Samba с авторизацией в AD и управлением доступом с помощью доменных учетных записей. Сразу скажу, что тема это достаточно трудная и хрупкая, очень часто что-то идет не так, нужно неплохо ориентироваться в теме, чтобы решать возникающие проблемы.
Введение
Ранее я рассказывал как сделать очень простую и быструю настройку самбы, когда доступ ограничивается либо внутренними пользователями самбы, либо с помощью ip. Если вас такой формат эксплуатации файлового сервера устраивает, то читать дальше не обязательно. Используйте приведенную статью, и у вас все получится очень быстро.
Для более сложной настройки самбы с авторизацией в Active Directory будем разбираться дальше. Существует как минимум 2 способа добавления linux сервера в домен Windows Server:
Пример добавления linux сервера в домен с помощью winbind я приводил в одной из своих статей по настройке sams с авторизацией в AD. Утилиту sssd я использовал, когда настраивал авторизацию в linux с помощью доменный учетных записей. В этой статье я воспользуюсь sssd для интеграции в виндовый домен.
Если у вас еще нет готового сервера, то можете воспользоваться моими материалами на эту тему — установка и настройка centos 7. Так же рекомендую настроить iptables для корректной работы сервера с доменом windows. Далее я не буду касаться этого вопроса, мы просто отключим фаерволл, потому что его настройка не тема этой статьи.
Настраивать файловую шару samba будем на сервере под управлением CentOS 7 следующей версии:
Вводные слова я все сказал. Начнем настройку самбы с ввода сервера в домен.
Добавляем сервер к домену через realm
Я не буду придумывать ничего нового, а полностью воспользуюсь инструкцией из приведенной выше статьи по настройке авторизации доменных учеток на сервере, но при этом не буду настраивать саму авторизацию. В данном случае мне это не нужно.
Итак, отключаем firewall и SELinux, если не сделали это раньше. Если не хотите отключать, то настройте сами. Данная настройка выходит за рамки статьи.
Выполняем команду, чтобы не ждать перезагрузки для применения изменений.
xs.local | название домена |
10.1.3.4 | ip адрес контроллера домена |
xs-winsrv.xs.local | полное имя контроллера домена |
xs-design | имя сервера centos, который вводим в домен |
admin51 | учетная запись администратора домена |
Настроим синхронизацию времени с контроллером домена. Это важно, у вас должно быть одинаковое время с контроллером домена. Проверьте его и убедитесь, что стоят одинаковые часовые пояса.
Устанавливаем утилиту для синхронизации времени chrony:
Добавляем в конфиг /etc/chrony.conf адрес контроллера домена. И делаем его единственным сервером для синхронизации, остальные удаляем.
Сохраняем конфиг, запускаем chrony и добавляем в автозагрузку.
Проверим, что с синхронизацией.
Устанавливаем софт, который понадобится для дальнейшей работы.
Делаем проверку перед вводом в домен.
Если не получили никакой ошибки, значит все прошло нормально. Можно зайти на контроллер домена и проверить, появился ли наш linux сервер в домене.
Проверьте на самом сервере, что он нормально обращается к домену и получает информацию об учетных записях. Показываю на примере доменной учетной записи control.
Еще несколько проверок.
Настройка Samba с интеграцией в AD через sssd
Устанавливаем сам файловый сервер самба.
Рисуем ему примерно такой конфиг.
Запускаем службу smb.service и добавляем в автозагрузку.
Теперь идем проверять подключение к сетевому диску с какой-нибудь виндовой машины. Здесь меня ждало полное разочарование. Ничего не работало. Я бился над решение проблемы примерно 2 дня, но не смог победить. Перелопатил весь гугл по запросу «sssd samba», но не смог заставить работать эту связку.
Через поиск нашел как людей, которые бились над решением проблемы с теми же ошибками, что и у меня, так и тех у кого все работало нормально. Я проверил все гайды и конфиги, где люди говорили, что такая связка работает, но у меня она все равно не работала. Видел сообщения людей, которые так же как я, не смогли победить ошибки. Думаю, проблема кроется в различных версиях софта.
Мне стало жаль тратить время на поиски готового решения с sssd, хотя мне очень хотелось получить рабочий вариант, так как с winbind достаточно часто возникают проблемы. Я надеялся от них избавиться переходом на sssd, но не получилось. Статью не стал переделывать, сохранив то, что уже настроил. Может быть у вас заработает.
Попутно узнал, что sssd не поддерживает NTLM авторизацию, только kerberos. Я не знаю, по какой причине, но у меня самба, судя по логам, упорно пыталась авторизовать пользователя по ntlm. В итоге, я прекратил попытки и вернулся к старому проверенному варианту с winbind. Далее расскажу, как настроить файловый сервер samba для работы в домене windows с помощью winbind.
Вводим CentOS 7 в домен с помощью winbind
Если у вас виртуальная машина, проще установить ее с нуля. Если не хочется по какой-то причине, можно просто удалить все установленные ранее пакеты через команду yum remove. Я поступил именно так.
Устанавливаем недостающие пакеты:
Не забудьте о настройке синхронизации времени, которую мы делали на предыдущих шагах. Надо это проделать, если вы сразу начали настройку с данного пункта. Так же убедитесь, что все в порядке с dns, и контроллеры домена пингуются по именам.
Формируем конфиг для kerberos.
Для удобства дублирую таблицу с информацией, чтобы не пришлось скролить страницу вверх.
xs.local | название домена |
10.1.3.4 | ip адрес контроллера домена |
xs-winsrv.xs.local | полное имя контроллера домена |
xs-design | имя сервера centos, который вводим в домен |
admin51 | учетная запись администратора домена |
Вывод после работы команды у меня такой:
Это не страшно, продолжаем настройку. Заводим сервер с CentOS в домен:
В принципе, ничего страшного. Нам придется самим создать A запись на DNS сервере. Я не понимаю, почему иногда она не создается автоматически. Во время написания статьи, я использовал один сервер, у него не было этой ошибки при вводе в домен. Когда проверял статью на втором сервере, получил эту ошибку. Проверяем на контроллере домена в списке компьютеров наш сервер и создаем руками А запись, соответствующую имени сервера и его IP адресу.
Теперь рисуем конфиг для самбы примерно такой.
У меня русский язык на контроллере домена, поэтому и имена групп на русском. Проблем с этим не возникает. Не забудьте создать директорию /mnt/shara.
Запускаем samba и winbind и добавляем в автозагрузку.
Выполняем ряд проверок, чтобы убедиться, что все в порядке, winbind работает и samba будет получать актуальную информацию о пользователях и группах домена.
Последние две команды должны вывести список всех пользователей и групп домена.
Проверим теперь авторизацию в домене.
В данном случае control — имя пользователя домена, pass — его пароль. Успешная проверка выглядит так, как у меня. В завершении проверок посмотрим, корректно ли система сопоставляет доменные учетные записи локальным.
Все в порядке. Теперь все готово для корректной работы файлового сервера на основе Samba с доменными учетными записями. В завершении настроек, сделаем администратора домена владельцем нашей шары.
Проверяем, что получилось.
Уберем доступ на чтение у всех остальных, оставим полные права для пользователя admin51 и на чтение у пользователей домена.
Идем на любую виндовую машину и пробуем зайти на шару по адресу \\ip-адрес-сервера. Попадаем на нашу шару.
Смотрим расширенные параметры безопасности:
Получилось то, что хотели. Управлять правами доступа можно через windows acl с любой машины windows, где учетная запись пользователя домена будет обладать необходимыми правами. Если по какой-то причине это не получится (а я с такими ситуациями сталкивался достаточно часто), на помощь придут консольные утилиты getfacl для проверки прав и setfacl для изменения прав. Документация по этим командам есть в сети и легко ищется. Я рекомендую всегда использовать эти команды, когда вы выполняете изменение прав по большому дереву каталогов. Через консоль выставление прав будет выполнено раз в 5-10 быстрее, чем через windows acl. На больших файловых архивах разница может быть в десятки минут или даже часы.
Настройка прав доступа на файлы в Samba
Сделаю небольшое пояснение по правам доступа в файловом сервере samba. Вопрос этот сложный и объемный. Ему можно посвятить и отдельную статью. Но для полноты картины по настройке самбы, расскажу самое основное.
Как я уже ранее сказал, изменять права доступа к каталогам на файловом сервере можно с помощью команды setfacl. Давайте сейчас посмотрим на права доступа, которые установлены:
Обращаю внимание, что иногда при копировании команд setfacl они не отрабатывают, выдавая не очень понятную ошибку:
Смотрим, что получилось:
То, что надо. Теперь пользователи группы gr_it имеют полные права на шару. Создадим одним таким пользователем папку test1 на нашей шаре и посмотрим, какие права она получит.
Права на папку имеет только ее создатель и больше никто. Для того, чтобы наследовались права с вышестоящего каталога, необходимо на этот вышестоящий каталог добавить дефолтные права доступа. Примерно вот так.
Смотрим, что получилось:
Создадим теперь тем же пользователем еще одну папку test2 и проверим ее права.
Применилось наследование с вышестоящих папок. Не забывайте про дефолтные права и учитывайте их при настройке прав доступа на файловом сервере.
Для удобной и корректной работы с правами доступа я обычно для крупных, корневых директорий выставляю права аккуратно через setfacl в консоли. Какие-то мелкие изменения по пользователям и группам в более низших иерархиях директорий делаю через windows acl с какой-нибудь виндовой машины.
Заключение
Если у вас есть возможность настроить файловый сервер на windows, либо обойтись линуксом без домена, то сделайте так. Существенно упростите настройку и дальнейшую эксплуатацию. Данную статью еще можно дополнить некоторыми моментами, которые я рассказал ранее, а что не рассказал, постараюсь раскрыть позже и добавить сюда ссылки на статьи:
Буду рад любым полезным замечаниям, исправлениям, советам по настройке файлового сервера samba. Я потратил значительное время, чтобы поделиться своими знаниями и опытом с остальными. Надеюсь, кто-то поделится чем-то полезным со мной. В том числе ради этого я и пишу статьи. Они расширяют мой кругозор и закрепляют полученные знания.
База знаний
Как развернуть контроллер Active Directory и терминальный сервер
Как развернуть контроллер Active Directory и терминальный сервер
Создание виртуальных машин
Установка ролей и компонентов Active Directory
В диспетчере серверов выбираем пункт «Добавить роли и компоненты». Запустится мастер установки ролей и компонентов.
Выбираем тип установки «Установка ролей и компонентов»
Для установки ролей выбираем по имени наш сервер DC 1.
Пропускаем выбор дополнительных компонентов и информационные сообщения.
Подтверждаем установку компонентов (кнопка «Установить») и дожидаемся окончания установки.
Настройка компонентов Active Directory
После установки необходимых ролей и компонентов необходимо настроить контроллер домена.
Перейти в мастер настройки домена можно по ссылке на странице хода установки, либо из диспетчера серверов через «Уведомления».
Выбираем операцию развертывания. Мы разворачиваем новый домен, поэтому выбираем пункт «Добавить новый лес» и задаем имя корневого домена.
Задаем пароль для режима восстановления служб каталогов
Оставляем предложенное имя домена NetBIOS и пути по умолчанию.
Перед настройкой можно еще раз проверить выбранные параметры.
Убедимся, что проверка готовности прошла. Жмем кнопку «Установить».
По окончании настройки система автоматически перезагрузится.
После перезапуска заходим с учетной записью администратора домена, пароль администратора домена будет совпадать с паролем локального администратора, который можно посмотреть в свойствах ВМ.
Установка компонентов терминального сервера
Для начала необходимо ввести будущий сервер терминалов в развернутый ранее домен.
Откроются свойства системы. Жмем кнопку «Изменить».
В открывшемся окне выбираем «Является членом»-«домена» и вводим название нашего домена.
Для присоединения к домену вводим учетные данные пользователя с правами администратора домена.
После присоединения сервера к домену перезапускаемся и все дальнейшие действия выполняем под учетной записью администратора домена.
В Мастере добавления ролей и компонентов выбираем тип установки «Установка служб удаленных рабочих столов».
Тип развертывания – «Быстрый запуск».
Сценарий развертывания – «Развертывание рабочих столов на основе сеансов»
Выбираем для установки локальный сервер TERM 1, разрешаем автоматический перезапуск и даем команду «Развернуть».
Откроется окно, у котором можно наблюдать за прогрессом установки компонентов. В процессе установки компонентов будет перезапускаться. Также не обращаем внимание на сообщение о сроке лицензирования, в дальнейшем мы настроим сервер лицензирования удаленных рабочих столов.
После успешной установки компонентов необходимо установить сервер лицензирования удаленных рабочих столов.
В Мастере добавления ролей и компонентов выбираем тип установки «Установка ролей и компонентов». В раскрывающемся меню «Службы удаленных рабочих столов» выбираем пункт «Лицензирование удаленных рабочих столов» и п одтверждаем установку компонентов для выбранных служб.
Соглашаемся с установкой компонентов.
Настройка компонентов терминального сервера
В контекстном меню сервера выбираем пункт «Проверить настройку». В настройках нажимаем кнопку «Добавить в группу».
Также проверяем область обнаружения «Домен». Если это не так заходим в «Изменить область» и выбираем «Этот домен».
Далее нужно настроить режим лицензирования.
Изменяем следующие параметры политики:
Далее нужно активировать сервер лицензирования.
Если все сделано правильно, сервер получит статус «Активирован». После этого сервер терминалов установлен и готов к работе.
Ещё не пробовали услугу «Облачный хостинг» от Cloud4Y?
Отправьте заявку сейчас и получите 14-ти дневный бесплатный доступ.
- Контроллер для управления стиральной машиной
- Контроллер домена на виртуальной машине hyper v