Как ввести windows 10 в домен samba

Обновлено: 07.07.2024

Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.

Перед установкой желательно обновиться:

Установить всё это добро можно командой:

Также может понадобиться установить следующие библиотеки:

Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.

Настройка DNS

Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер 2) и в качестве домена поиска - нужный домен.

Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:

Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:

Для применения изменений остается перезапустить службу:

Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname :

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

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

Не обязательно, но если вы что-то поменяете - перезагрузите компьютер для применения изменений.

Настройка синхронизации времени

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

Автоматическая же синхронизация настраивается с помощью ntpd , это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

Теперь исправьте файл /etc/ntp.conf , добавив в него информацию о вашем сервере времени:

После чего перезапустите демон ntpd :

Теперь пора настраивать непосредственно взаимодействие с доменом.

Настройка авторизации через Kerberos

Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf . В общем случае он выглядит так:

Обратите особое внимание на регистр написания имени домена - везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.

Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.

Теперь настало время проверить, что мы можем авторизоваться в домене. Для этого выполните команду

Вместо username естественно стоит вписать имя существующего пользователя домена.

Если вы не получили никаких ошибок - значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.

Убедиться в том, что билет получен, можно выполнив команду

Удалить все билеты (они вам вообще говоря не нужны) можно командой

Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit .

Распространённые ошибки kinit

Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).

Вы ввели неверный пароль.

Самая странная ошибка. Убедитесь, что имя realm в krb5.conf , а так же домен в команде kinit введены большими буквами:

Указанного пользователя не существует в домене.

Настройка Samba и вход в домен

Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf . На данном этапе вас должны интересовать только некоторые опции из секции [global] . Ниже - пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:

После того, как вы отредактируете smb.conf выполните команду

Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:

Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:

И в случае успеха вы увидите что-то похожее на:

Используемые параметры команды net

-U username%password : Обязательный параметр, вместо username необходимо подставить имя пользователя с правами администратора домена, и указать пароль.

-D DOMAIN : DOMAIN - собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать - хуже не будет.

-S win_domain_controller : win_domain_controller , можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.

createcomputer=«OU/OU/…» : В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».

Так же можно набрать команду:

Если все хорошо, можно увидеть:

Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient :

Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation :

Вы должны увидеть список общих ресурсов на этом компьютере.

Настройка Winbind

Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind - специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.

Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.

Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf . Добавьте в секцию [global] следующие строки:

idmap uid = 10000 - 40000

idmap gid = 10000 - 40000

в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm будет выдваться предупреждение:

WARNING: The «idmap uid» option is deprecated

WARNING: The «idmap gid» option is deprecated

Чтобы убрать предупреждения нужно заменить эти строки на новые:

idmap config * : range = 10000-20000

idmap config * : backend = tdb

Теперь перезапустите демон Winbind и Samba в следующем порядке:

Смотрим есть ли ошибки или предупреждения, если появится:

«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

Без перезагрузки можно устранить так:

Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf

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

А так же, что Winbind увидел пользователей и группы из AD командами 4) :

Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN\ , либо без него - в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf .

Итак, Winbind работает, однако в систему он ещё не интегрирован.

Добавление Winbind в качестве источника пользователей и групп

Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.

Для этого измените две строчки в файле /etc/nsswitch.conf :

добавив к ним в конец winbind :

также рекомендую привести строку files в файле /etc/nsswitch.conf к виду:

ubuntu server 14.04, файл /etc/nsswitch.conf не содержал строку «files: dns mdns4_minimal[NotFoud=return] mdns4» вместо неё было: «hosts: files mdns4_minimal [NOTFOUND=return] dns wins» Которую я преобразовал в: «hosts: dns mdns4_minimal[NotFoud=return] mdns4 files» после чего всё заработало

Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd , то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.

Теперь вы можете взять любого пользователя домена и сделать его, например, владельцем какого-нибудь файла.

Авторизация в Ubuntu через пользователей домена

Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.

Он-лайн авторизация

Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session , т.к. PAM и так неплохо справляется с авторизацией:

Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/ снизу добавить строку:

Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 - он тоже работает):

И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:

Что эквивалентно запуску для каждого уровня (в примере - 4) команды:

В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, вполнив команду «ls /etc/rc<2,3,4,5>.d/ | grep winbind» (без кавычек).

Готово, все настройки завершены. Перезагружайтесь и пытайтесь войти с учетной записью пользователя домена.

В сегодняшней статье я опишу и продемонстрирую процесс подключения Samba к доменной сети Windows в качестве рядового участника.

Поскольку этот сайт посвящен Ubuntu, я пропущу все, что касается настройки контроллера домена и подключения прочих компьютеров. Скажу лишь, что доменная сеть подразумевает использование машин с Windows, одна или несколько из которых будут считаться контроллерами. Контроллер служит центром авторизации, хранит учетные записи пользователей других компьютеров и позволяет ими управлять. Локальные учетные записи при этом хотя и не исключаются как таковые, но становятся необязательными. Кроме того, контроллер предоставляет ряд других возможностей по управлению прочими компьютерами.

Для демонстрации я буду использовать виртуальные машины, подключенные к единой внутренней сети, тоже виртуальной.

Так как Linux и Windows хранят данные об учетных записях и группах по-разному, нам понадобится Winbind, чтобы пользователи разных ОС могли благополучно пройти аутентификацию. Нам также понадобится Kerberos (клиентская часть). Kerberos представляет собой сетевой протокол, необходимый для авторизации клиента и сервера и использующийся в самых разных ОС.

Установим несколько пакетов:

В процессе установки Kerberos задаст несколько вопросов. Для начала он попросит указать область. Впишите сюда имя домена вместе с доменной зоной (те, которые вы указывали при настройке контроллера), обязательно в верхнем регистре.

Устанавливаем пакеты

Далее нужно указать сервер Kerberos. Смело вписывайте сюда полное имя контроллера домена, поскольку он по совместительству является и указанным сервером.

Устанавливаем пакеты

Затем нужно ввести имя управляющего хоста области. Если контроллер домена у вас один, просто впишите его имя еще раз. После этого установка необходимых пакетов будет завершена.

Обязательным условием успешной настройки является одинаковое время на контроллере и подключаемом компьютере. Можно проверить и настроить время вручную, но гораздо лучше позаботиться о том, чтобы наш компьютер синхронизировал время с контроллером автоматически. Для этого установим еще один пакет:

Связываемся с контроллером.

Если вы правильно настроили DHCP на контроллере домена, Ubuntu будет автоматически получать IP и подключаться к сети. Загляните в /etc/resolv.conf и убедитесь, что напротив параметра nameserver стоит IP нашего контроллера, а напротив параметра search — имя домена.

Если у вас, как и у меня, напротив nameserver указан адрес 127.0.1.1, не пытайтесь изменить его напрямую, все ваши правки исчезнут после первой же перезагрузки.

Связываемся с контроллером

Связываемся с контроллером

Содержимое /etc/resolv.conf должно измениться на правильное. Чтобы убедиться, что связь налажена, можно попробовать пропинговать контроллер:

Если на каждый отправленный запрос был получен ответ, значит, все в порядке.

Теперь, когда мы убедились, что связь установлена, перезапустим ntp, чтобы одновременно применить внесенные ранее изменения и синхронизировать время с контроллером:

В старых руководствах говорится о необходимости отредактировать конфигурационный файл Kerberos /etc/krb5.conf. Сейчас этот шаг в большинстве случаев не нужен, поскольку необходимые параметры мы уже ввели на этапе установки.

Пробуем запросить тикет у Kerberos на контроллере:

Если вы не получили ошибку — скорее всего, аутентификация прошла успешно. Проверить можно так:

Если все получилось, вы увидите нечто подобное:

Связываемся с контроллером

То, что вы видите на скриншоте, означает, что Kerberos на контроллере домена аутентифицировал пользователя и выдал разрешение на подключение. Осталось внести корректировки в настройки Samba и позаботиться о соответствии пользователей Windows и Linux с помощью Winbind.

Вот мы и сделали компьютер с Samba участником доменной сети. Мы установили необходимые пакеты, позаботились о синхронизации времени с контроллером домена, изменили параметры Network Manager, убедились в том, что связь установлена и, более того, контроллер выдает пропуск нашему компьютеру. Теперь продолжим работу, настроив Samba и Winbind, а в конце убедимся, что наш компьютер виден с контроллера как участник Active Directory.

Редактируем конфигурационный файл Samba.

Еще в первой статье из этой серии я рекомендовал создать резервную копию конфига Samba. В этом нет острой необходимости, но если что-то пойдет не так, у вас будет возможность быстро вернуться к исходному варианту. Если вы не создали копию ранее, рекомендую сделать это сейчас:

Теперь можно переходить к редактированию:

Найдите секцию [global] — все изменения мы будем выполнять в ней.

Для начала замените значение параметра workgroup на имя (только имя сервера, т. е. то, что находится до точки) вашего контроллера домена в верхнем регистре. Поскольку в моем случае контроллер домена имеет полное имя LINUXRUSSIA.LABS, получится следующее:

Далее добавляем (или меняем, если он есть) параметр security, выставляя ему значение ADS. Таким способом мы даем понять Samba, что заниматься аутентификацией и авторизацией пользователей будет контроллер домена.

Следующий обязательный параметр — realm. Он определяет область Kerberos. Впишите сюда полное имя контроллера домена. Параметр encrypt passwords должен иметь значение yes, поскольку Windows не допускает использование не зашифрованных паролей. Samba по умолчанию тоже предпочитает шифрование, но лучше указать это явно.

После этого добавьте еще несколько опций для Winbind.

Редактируем конфигурационный файл Samba

Положительное значение winbind use default domain необходимо для того, чтобы можно было указывать имена пользователей без имени домена, которое будет подставляться автоматически. Необязательный, но полезный параметр. Будьте с ним осторожны при использовании локальных учетных записей или двух и более контроллеров.

Idmap config * : range определяет диапазоны идентификаторов пользователей и групп, которые выделяются для учетных записей Windows. Очень важно проследить, чтобы id из указанного диапазона не пересекались с существующими и возможными локальными пользователями и группами.

Если вы посмотрите в файл /etc/login.defs в Ubuntu 16.04, то заметите, что максимально возможный id для useradd и groupadd — 60000, то есть пересечение с указанными нами значениями теоретически может случиться. Но в реальности очень маловероятно, что в вашей системе когда-нибудь будет около 10000 локальных пользователей или групп — именно это число мы указали в качестве минимального id для Winbind.

Редактируем конфигурационный файл Samba

Сохраняем smb.conf и запускаем testparm, чтобы проверить, не допустили ли мы ошибку. Если все в порядке, вывод будет примерно таким:

Редактируем конфигурационный файл Samba

Еще одна небольшая правка. В /etc/hosts необходимо указать следующее:

В моём случае это выглядит так:

Редактируем конфигурационный файл Samba

Если вы не знаете, где найти имя компьютера, загляните в терминал - оно указано после имени пользователя и символа @.

Введение Samba в домен и проверка результата.

Если вы все настроили правильно, осталось выполнить всего одну команду. Вот она:

Введение Samba в домен и проверка результата

Чтобы убедиться, посмотрим на результат с точки зрения сервера Windows. Идем в диспетчер серверов, там выбираем Пользователи и компьютеры Active Directory (в вашей версии названия могут немного отличаться), далее из списка слева выбираем Computers. Вот она, наша машина с Ubuntu:

Введение Samba в домен и проверка результата

Если вы захотите создать общедоступную папку на компьютере с Samba, повторите те же действия, которые мы выполняли в первых статьях. Никаких принципиальных отличий в этом случае не будет. Есть только одна особенность: учетные записи. О том, как ими управлять при использовании сервера с Samba в качестве участника доменной сети мы поговорим в другой раз.

Одна из важнейших задач Active Directory — централизованное управление пользователями. Единое хранилище учетных записей и единый центр аутентификации дают массу преимуществ: возможность быстро и легко заменить одну или несколько рабочих станций, доступ администратора и пользователей к своей учетной записи с любого места, быстрое подключение нового участника и т. д. Но как все это реализовать? Сегодня я расскажу об этом.

Учетные записи домена в Ubuntu.

Прежде всего, необходимо сообщить Ubuntu, что помимо локальной базы данных пользователей существует еще одна, за связь с которой отвечает Winbind. Для этого откройте файл /etc/nsswitch.conf и найдите следующие строки:

В обеих после compat добавьте winbind. Больше ничего трогать не нужно (во всяком случае, мне не потребовалось, хотя в документации официальном сайте Ubuntu есть другая информация). Для проверки я поищу пользователя Администратор, который точно существует на контроллере домена и отсутствует на локальном компьютере:

Учетные записи домена в Ubuntu

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

Но радоваться еще рано — залогиниться, используя имя и пароль, созданные на контроллере домена, сейчас не выйдет. Сначала необходимо внести еще одну правку. Откройте /etc/pam.d/common-session и вставьте туда следующую строку:

Учетные записи домена в Ubuntu

Дело в том, что на каждого пользователя в Linux приходится набор обязательных файлов. Для пользователя, созданного на сервере с Windows, таких файлов, разумеется, не существует. Для решения этой проблемы мы вызываем модуль PAM (системы аутентификации в Linux) pam_mkhomedir.so, который отвечает за создание пользовательских директорий. Параметр skel (skeleton directory) определяет путь к папке с необходимыми файлами. Как только будет создана директория для подключившегося пользователя, в нее будет скопировано содержимое скелетной (отсюда и название) папки. Созданные таким образом домашние директории сохраняются и после выхода пользователя. Кстати, если вы хотите, чтобы каждый подключившийся пользователь имел в своей папке инструкцию или что-либо еще, вы можете разместить это в /etc/skel.

И вот теперь… вы все еще не можете залогиниться, поскольку видите нечто вроде этого:

Учетные записи домена в Ubuntu

Как сменить имя пользователя, если поля для его ввода просто нет, а среди перечисленных вариантов есть только локальные учетные записи? Для этого создайте файл /etc/lightdm/lightdm.conf.d/50-user-config.conf и поместите в него следующее:

После следующей загрузки на экране приветствия появится поле для логина.

Учетные записи домена в Ubuntu

Введите сюда имя пользователя, созданного на контроллере домена, а затем и пароль. Давайте посмотрим в домашнюю директорию. Кроме стандартных папок и файлов здесь присутствует и файл, который я предварительно поместил в /etc/skel.

Учетные записи домена в Ubuntu

Оболочка командной строки и домашние директории для пользователей домена.

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

Если сеть имеет сложную структуру и большое количество пользователей, это очень удобно. Такая структура позволяет избежать хаоса, а кроме того — не допустит проблем при совпадении имен пользователей разных доменов.

Но вы можете создать собственную структуру.

Кроме обычных названий папок можно использовать переменные:

%D название домена
%U имя пользователя
%N имя сервера домашних директорий

Например, вариант, используемый по умолчанию (приведен выше), записывается так:

В качестве оболочки командной строки по умолчанию используется /bin/false. На практике это означает, что подключившийся пользователь домена в принципе не будет иметь доступа к командной строке. Если точнее, он будет автоматически выброшен из нее сразу же после входа. Даже если вы попробуете залогиниться в командной строке, ничего не выйдет. Это поведение можно изменить, указав в качестве оболочки командной строки bash. Добавьте в /etc/samba/smb.conf:

Имейте в виду, что это затронет всех пользователей контроллера. Каждый из них теперь получит доступ к командной строке, а заодно — и возможность входить без графического интерфейса.

Функционал обычного файлового сервера неизменно остается одним из самых популярных и востребованных в работе среднестатистического офиса. Сегодня я расскажу как установить и настроить файловый сервер Samba с авторизацией в AD и управлением доступом с помощью доменных учетных записей. Сразу скажу, что тема это достаточно трудная и хрупкая, очень часто что-то идет не так, нужно неплохо ориентироваться в теме, чтобы решать возникающие проблемы.

Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «DevOps практики и инструменты» в OTUS. Курс не для новичков, для поступления нужно пройти . Прежде чем начинать настройку файлового сервера samba, прочитайте полностью материал, чтобы решить, каким способом будете настраивать. По ходу написания статьи у меня получились 2 принципиально разных решения.

Введение

Ранее я рассказывал как сделать очень простую и быструю настройку самбы, когда доступ ограничивается либо внутренними пользователями самбы, либо с помощью ip. Если вас такой формат эксплуатации файлового сервера устраивает, то читать дальше не обязательно. Используйте приведенную статью, и у вас все получится очень быстро.

Для более сложной настройки самбы с авторизацией в Active Directory будем разбираться дальше. Существует как минимум 2 способа добавления linux сервера в домен Windows Server:

  • Использовать известное и универсальное средство winbind.
  • Либо воспользоваться менее популярным, но как мне кажется, более удобным и простым в настройке - sssd.

Пример добавления linux сервера в домен с помощью winbind я приводил в одной из своих статей по настройке sams с авторизацией в AD. Утилиту sssd я использовал, когда настраивал авторизацию в linux с помощью доменный учетных записей. В этой статье я воспользуюсь sssd для интеграции в виндовый домен.

Если у вас еще нет готового сервера, то можете воспользоваться моими материалами на эту тему — установка и настройка centos 7. Так же рекомендую настроить iptables для корректной работы сервера с доменом windows. Далее я не буду касаться этого вопроса, мы просто отключим фаерволл, потому что его настройка не тема этой статьи.

Настраивать файловую шару samba будем на сервере под управлением CentOS 7 следующей версии:

Версия CentOS 7

Вводные слова я все сказал. Начнем настройку самбы с ввода сервера в домен.

Добавляем сервер к домену через realm

Я не буду придумывать ничего нового, а полностью воспользуюсь инструкцией из приведенной выше статьи по настройке авторизации доменных учеток на сервере, но при этом не буду настраивать саму авторизацию. В данном случае мне это не нужно.

Итак, отключаем firewall и SELinux, если не сделали это раньше. Если не хотите отключать, то настройте сами. Данная настройка выходит за рамки статьи.

Выполняем команду, чтобы не ждать перезагрузки для применения изменений.

Информационная таблица
xs.local название домена
10.1.3.4 ip адрес контроллера домена
xs-winsrv.xs.local полное имя контроллера домена
xs-design имя сервера centos, который вводим в домен
admin51 учетная запись администратора домена

Перед дальнейшей настройкой, убедитесь, что с вашего сервера centos вы без проблем пингуете и резолвите контроллер домена по полному имени. Если есть какие-то проблемы, исправьте это либо указанием нужного dns сервера, либо правкой файла hosts.

Настроим синхронизацию времени с контроллером домена. Это важно, у вас должно быть одинаковое время с контроллером домена. Проверьте его и убедитесь, что стоят одинаковые часовые пояса.

Устанавливаем утилиту для синхронизации времени chrony:

Добавляем в конфиг /etc/chrony.conf адрес контроллера домена. И делаем его единственным сервером для синхронизации, остальные удаляем.

Сохраняем конфиг, запускаем chrony и добавляем в автозагрузку.

Проверим, что с синхронизацией.

Синхронизация времени с доменом windows

Устанавливаем софт, который понадобится для дальнейшей работы.

Делаем проверку перед вводом в домен.

Заводим в домен.

Если не получили никакой ошибки, значит все прошло нормально. Можно зайти на контроллер домена и проверить, появился ли наш linux сервер в домене.

Добавление сервера centos 7 в домен

Проверьте на самом сервере, что он нормально обращается к домену и получает информацию об учетных записях. Показываю на примере доменной учетной записи control.

Еще несколько проверок.

Информация о домене через realm

Подробная информация о домене

Сервер завели в домен. Приступаем к основному - настройке samba с интеграцией в AD.

Настройка 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-адрес-сервера. Попадаем на нашу шару.

Если не получилось зайти, проверьте настройки iptables. На время отладки можно их отключить. Так же убедитесь, что у вас запущена служба smb.service.

Смотрим расширенные параметры безопасности:

Права в Samba через windows acl

Получилось то, что хотели. Управлять правами доступа можно через windows acl с любой машины windows, где учетная запись пользователя домена будет обладать необходимыми правами. Если по какой-то причине это не получится (а я с такими ситуациями сталкивался достаточно часто), на помощь придут консольные утилиты getfacl для проверки прав и setfacl для изменения прав. Документация по этим командам есть в сети и легко ищется. Я рекомендую всегда использовать эти команды, когда вы выполняете изменение прав по большому дереву каталогов. Через консоль выставление прав будет выполнено раз в 5-10 быстрее, чем через windows acl. На больших файловых архивах разница может быть в десятки минут или даже часы.

Настройка прав доступа на файлы в Samba

Сделаю небольшое пояснение по правам доступа в файловом сервере samba. Вопрос этот сложный и объемный. Ему можно посвятить и отдельную статью. Но для полноты картины по настройке самбы, расскажу самое основное.

Как я уже ранее сказал, изменять права доступа к каталогам на файловом сервере можно с помощью команды setfacl. Давайте сейчас посмотрим на права доступа, которые установлены:

С такими правами что-то создавать в папке сможет только пользователь admin51, а пользователи домена смогут только просматривать файлы и каталоги. Сделаем более прикладной вариант. Добавим права доступа на чтение и запись еще одной доменной группе - gr_it.

Обращаю внимание, что иногда при копировании команд setfacl они не отрабатывают, выдавая не очень понятную ошибку:

Наберите команду с клавиатуры, либо просто удалите и наберите снова ключ -m, он почему-то при копировании часто дает эту ошибку.

Смотрим, что получилось:

То, что надо. Теперь пользователи группы gr_it имеют полные права на шару. Создадим одним таким пользователем папку test1 на нашей шаре и посмотрим, какие права она получит.

Права на папку имеет только ее создатель и больше никто. Для того, чтобы наследовались права с вышестоящего каталога, необходимо на этот вышестоящий каталог добавить дефолтные права доступа. Примерно вот так.

Смотрим, что получилось:

Создадим теперь тем же пользователем еще одну папку test2 и проверим ее права.

Применилось наследование с вышестоящих папок. Не забывайте про дефолтные права и учитывайте их при настройке прав доступа на файловом сервере.

Для удобной и корректной работы с правами доступа я обычно для крупных, корневых директорий выставляю права аккуратно через setfacl в консоли. Какие-то мелкие изменения по пользователям и группам в более низших иерархиях директорий делаю через windows acl с какой-нибудь виндовой машины.

Еще важно знать одну особенность выставления прав доступа в linux. В моей практике часто требуется дать какому-нибудь пользователю доступ в одну директорию, которая располагается там, где у пользователя нет вообще никаких прав. В windows эта проблема решается просто - даются права на конкретную папку, а пользователю кладется ярлык на эту папку. В итоге он имеет доступ к нужной директории и больше никуда.

В linux так сделать не получится. Для того, чтобы дать таким образом доступ на отдельную директорию пользователю, необходимо, чтобы по всем вышестоящим директориям у него были права на исполнение, то есть X. Их придется выставлять вручную по всем вышестоящим папкам. Результат будет такой же, как и в винде - пользователь получит доступ на чтение только в указанную папку, но для этого придется выполнить больше действий. Если не знаешь этот нюанс, можно потратить много времени, прежде чем поймешь, в чем проблема.

Заключение

Скажу откровенно - мне не нравится, как работают файловые сервера samba с интеграцией в виндовом домене. Но настраивать их приходится часто, так как востребованный функционал. Востребован в первую очередь потому, что не требует вообще никаких денег за лицензии, и работает на минимальной конфигурации железа. Вот список типичных проблем при работе самбы в домене:

  • Иногда через windows acl права перестают выставляться, возникают неинформативные ошибки, по которым невозможно понять, что не так.
  • Я достаточно регулярно наблюдаю ситуацию, когда слетают соответствия доменных учеток линуксовым UID. В итоге права доступа превращаются в ничего не значащий набор цифр и перестают работать.
  • При переносе данных с одного сервера на другой трудно сохранить права доступа. Можно поступить вот так для копирования прав доступа, либо как-то заморочиться, чтобы на всех серверах у вас были одинаковые UID доменных учетных записей. Я не разбирал этот вопрос подробно.

Если у вас есть возможность настроить файловый сервер на windows, либо обойтись линуксом без домена, то сделайте так. Существенно упростите настройку и дальнейшую эксплуатацию. Данную статью еще можно дополнить некоторыми моментами, которые я рассказал ранее, а что не рассказал, постараюсь раскрыть позже и добавить сюда ссылки на статьи:

    .
  1. Настройка корзины для сетевых дисков samba. . .

Буду рад любым полезным замечаниям, исправлениям, советам по настройке файлового сервера samba. Я потратил значительное время, чтобы поделиться своими знаниями и опытом с остальными. Надеюсь, кто-то поделится чем-то полезным со мной. В том числе ради этого я и пишу статьи. Они расширяют мой кругозор и закрепляют полученные знания.

Постановка задачи

Методы присоединения в домен Windows 10

Для того, чтобы присоединить Windows 10 к домену Active Directory, лично я знаю 4 метода, о которых мы подробно с вами поговорим:

  1. Ввод Windows 10 в домен, через новый интерфейс параметров Windows
  2. Классический, я его называю, так как он самый старый и всем хорошо известный, через свойства системы, в окне с переименовыванием компьютера
  3. Подключить вашу десятку к Active Directory можно с помощью командлетов PowerShell
  4. Оффлайн ввод в домен, через утилиту djoin, редкий случай, но знать его нужно

Практика подключения Windows 10 к домену

Ввод через новый интерфейс

Данный метод можно разделить на два, объясню почему. Текущая политика компании Microsoft, заключается в том, что она хочет привести внешний вид операционной системы Windows 10 к общему виду на всех устройствах, чтобы все действия, где бы их пользователь не совершал, выполнялись одинаково. С одной стороны это хорошо и наверное правильно, но с другой стороны, это влечет к постоянному и глобальному изменению интерфейса с каждым новым релизом и выпиливание классических оснасток, в виде панели управления.

В виду этого десятка у которой версия до 1511 имеет одно расположение кнопки, а вот уже релизы начиная с 1607 и заканчивая текущим 1809, уже этой кнопки не имеют, так как концепция изменилась и была переработана (Если вы не знаете, как узнать версию Windows 10, то перейдите по ссылке слева)

Подключаем к домену Windows 10 до 1511

Для десятки с релизом Threshold 1 и 2 (1507 и 1511) процедура добавления компьютера в Active Directory имеет такой алгоритм. Вы нажимаете сочетание клавиш Win и I одновременно (Это одна из многих горячих комбинаций в Windows), в результате у вас откроется меню "Параметры". В параметрах вы находите пункт

ввод в домен windows 10 1511-01

Далее вы находите раздел "О системе", тут вы увидите сводную информацию, видно, что в моем примере у меня Windows 10 1511, и обратите внимание, что есть две удобные кнопки:

  • Присоединение к домену предприятия
  • Присоединиться к Azure AD

ввод в домен windows 10 1511-02

Ввод имени домена при присоединении

Следующим шагом у вас будет форма авторизации, где вам предстоит представится от чьего имени вы будите производить подключение к домену Active Directory вашей Windows 10, обычно, это учетная запись администратора домена или пользователя, кому делегированы права.

Ввод учетных данных при вводе в домен

Следующим шагов, вас спросят чтобы вы указали сведения, о учетной записи, которая будет использовать данный компьютер, я этот этап пропускаю.

ввод в домен windows 10

и последним этапом нужно выполнить перезагрузку рабочей станции, после этого ввод в домен Windows 10, можно считать успешным.

Перезагрузка сервера

Подключаем к домену Windows 10 выше 1607

С версией 1511 мы разобрались, на мой взгляд там были удобно расположены кнопки, не знаю что не понравилось разработчикам. Теперь я вам приведу пример присоединения в Active Directory Windows 10 1607 и выше, в моем примере, это будет версия 1803. Вы также открываете "Параметры Windows". Если вы зайдете в систему и "О системе", то не обнаружите там нужных кнопок для подключения к AD предприятия, туше. Как я и писал выше функционал перенесли.

Сведения о системе Windows 10

В параметрах Windows найдите и перейдите в пункт "Учетные записи"

Учетные записи Windows 10

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

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

добавление в домен Windows 10-2

У вас откроется окно "Настройка рабочей или учебной записи". В самом низу нас будет интересовать два пункта:

  • Присоединить это устройство к Azure Active Directory
  • Присоединить это устройство к локальному домену Active Directory, наш вариант

Присоединить к локальному Active Directory

У вас откроется окно с вводом FQDN имени вашего домена Active Directory.

Присоединение к домену Windows 10 1803

Далее вас попросят указать учетные данные для присоединения рабочей станции к AD.

Присоединение к домену Windows 10 1803-02

Пропускаем шаг с добавлением учетной записи.

Присоединение к домену Windows 10 1803-03

Когда все готово, то делаем обязательную перезагрузку, и ваша Windows 10, теперь является членом Active Directory.

Присоединение к домену Windows 10 1803-04

После перезагрузки мы видим префикс домена.

Авторизация в Windows 10

Классический метод ввода в домен Windows 10

Модным способом мы с вами загнали десятку в домен, теперь я напомню, а для кого-то покажу, что из себя представляет классический метод.

Откройте окно выполнить и введите команду:

Обычный метод ввода в домен Windows 10-01

У вас откроется окно "Свойства системы", в него можно так же попасть если щелкнуть по значку "Этот компьютер" и перейти в его свойства, далее выбрать "Изменить параметры"

Обычный метод ввода в домен Windows 10-02

Классический способ ввода в домен

Если вашей рабочей станции удалось обратиться с запросом к контроллеру домена, то у вас появится форма авторизации, где для ввода Windows 10 в домен, вам нужно указать логин и пароль учетной записи у которой есть на это права.

авторизация при вводе в домен Windows 10

Далее вас уведомят, что необходимо произвести перезагрузку, "Чтобы изменения вступили в силу, нужно перезагрузить компьютер"

перезагрузка после ввода в домен Windows 10

На выходе получаем присоединенную рабочую станцию с Windows 10 Pro к Active Directory.

введенная в домен Windows 10

Как подключить Windows 10 к домену с помощью PowerShell

Данный метод ввода в домен Active Directory, будет быстр и полезен, особенно для начинающих системных администраторов. Открываете оболочку PowerShell от имени администратора и пишите вот такую команду:

У вас появится окно авторизации, где вы должны указать учетные данные пользователя, у которого есть права на ввод в рабочей станции Windows 10 в домен.

Ввод Windows10 в домен через PowerShell-01

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

Ввод Windows10 в домен через PowerShell-02

Если открыть оснастку ADUC на контроллере домена, то в контейнере Computers, вы обнаружите вашу рабочую станцию.

Читайте также: