- Главная
- Блог
- Администрирование
- Мастер-класс подключение Linux к Windows Server
Мастер-класс подключение Linux к Windows Server
Команды:
resolvectl status - просмотр назначенного DNS
sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y - установка всех необходимых компонентов для подключения Linux к домену
sudo realm (область) discover (обнаружить) office.loc
sudo realm discover office.loc - обнаружение нужного домена
sudo realm join (присоединить) -U Администратор (User от имени пользователя Администратор) office.loc (к домену office.loc)
sudo realm join -U Администратор office.loc - подключение машины к домену
sudo realm list - вывод информации о подключении машины к домену
id user-windows-dc@office.loc - вывод информации о доменном пользователе
sudo pam-auth-update - применить изменения в параметрах аутентификации
В данном видео хотел бы рассказать и показать, как рабочую станцию под управлением Linux Ubuntu можно добавить в Windows домен, чтобы организовать работу офиса с разными версиями операционных систем.
В данном случае, если вы все же не планируете добавлять Linux машину в Windows домен, то взаимодействие в сети будет по правилам одноранговой сети, т.е. при подключении к файловому ресурсу, который располагается на Windows, нам необходимо будет указать учетные данные пользователя, который известен системе, к которой мы собираемся подключаться.
Попробуем подключиться к сетевому ресурсу на сервере (Linux \ Файлы\ smb://windows-dc.office.loc
.jpg)
, в Linux нам необходимо указывать полное доменное имя машины, к которой мы собираемся подключиться \ Ошибка: В соединении отказано)
.jpg)
Почему?
Дело в том, что когда мы подключаемся из под Windows, система видит, что идет попытка подключиться под неизвестным пользователем и она выдает окно ввода имени пользователя и пароля, при подключении с Linux машины, она не выдает это окно при обращении непосредственно к серверу, так как политикой запрещено отображать содержимое общедоступных ресурсов сервера для неизвестных пользователей, поэтому, чтобы нам подключиться, необходимо указать конкретный сетевой ресурс, т.е. полный путь к нему (smb://windows-dc.office.loc/0БМЕН, вот, теперь система запрашивает логин, домен и пароль \ Зарегистрированный пользователь \ Имя пользователя: user-windows-dc \ Домен:office.loc \ Пароль: ВАШ_ПАРОЛЬ \ Запомнить пароль до выхода из системы \ Подключиться)
.jpg)
Отлично, доступ мы получили, давайте попробуем переименовать файл в "Привет с Linux.txt" и посмотрим, переименовался ли он на сервере? Да, все прошло успешно, значит мы можем подключаться под доменными учетными записями к сетевым ресурсам и работать с ними.
Понятно, что подобным образом работать не удобно, каждый раз вводить учетные данные пользователей, поэтому необходимо подключить данную машину к домену, чтобы аутентификация выполнялась автоматически.
Перед тем как подключать Linux машину к домену, нужно убедиться, что она видит контроллер домена (Пуск \ Терминал \ ping windows-dc.office.loc \ пинги идут, значит DNS работает корректно и мы видим контроллер домена)
.jpg)
На всякий случай давайте проверим, какой DNS используется, так как у нас ранее было указано 2, это 192.168.0.15 и 8.8.8.8
resolvectl status
Global
Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Link 2 (ens33)
Current Scopes: DNS
Protocols: +DefaultRoute -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.0.15
DNS Servers: 192.168.0.15
.jpg)
Далее, необходимо установить ряд необходимых пакетов для подключения и работы машины в домене, вот какие это пакеты:
sudo apt update
sudo apt install realmd sssd sssd-tools libnss-sss libpam-sss adcli samba-common-bin oddjob oddjob-mkhomedir packagekit -y
Эти утилиты взаимодействуют друг с другом при подключении и работе в доменной сети.
.jpg)
Итак, приступаем к подключению Linux-овой машины к Windows домену.
sudo realm (область) discover (обнаружить) office.loc
sudo realm discover office.loc
Данная утилита предназначена как раз для целей обнаружения и присоединения к домену, а данная команда проверяет, видит ли она наш домен office.loc
office.loc
type: kerberos
realm-name: OFFICE.LOC
domain-name: office.loc
configured: no
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
.jpg)
Если вы видите подобный вывод, значит все нормально, система видит домен, говорит, что данная машина к данному домену не подключена (configured: no) а так же видит, что он основан на базе Active Directory, если появляется ошибка, проверьте DNS и связь с сервером.
Теперь самое главное ввод машины в домен. Нам понадобятся учётные данные пользователя, который имеет права на добавление компьютеров в домен (у нас это Администратор) поэтому вводим следующую команду:
sudo realm join (присоединить) -U Администратор (User от имени пользователя Администратор) office.loc (к домену office.loc)
sudo realm join -U Администратор office.loc
Вводим пароль для данной учетной записи
Если никакого сообщения об ошибке не выдалось, значит все нормально и мы присоединили компьютер к домену. Проверим, подключились ли мы к домену?
sudo realm list
office.loc
type: kerberos
realm-name: OFFICE.LOC
domain-name: office.loc
configured: kerberos-member
server-software: active-directory
client-software: sssd
required-package: sssd-tools
required-package: sssd
required-package: libnss-sss
required-package: libpam-sss
required-package: adcli
required-package: samba-common-bin
login-formats: %U@office.loc
login-policy: allow-realm-logins
И тут мы уже видим, что в пункте configured значение с no изменилось на kerberos-member, что говорит о том, что данная машина является членом этого домена, т.е. office.loc.
.jpg)
Проверим, может ли система получать данные от домена о его пользователях?
id user-windows-dc@office.loc
uid=1366001102(user-windows-dc@office.loc) gid=1366000513(пользователи домена@office.loc) группы=1366000513(пользователи домена@office.loc)
.jpg)
Да, в данном выводе мы видим идентификатор пользователя и группы, в которых он состоит.
Далее, крайне важный момент, при первом входе в систему, для пользователя должна создаваться домашняя директория, так как это учетные записи не просто для каких-то служб, а для людей, которые будут работать с документами и т.д.
Поэтому, нам необходимо объяснить системе, что такие директории нужно создавать и какие права им необходимо назначать. И данные настройки находятся в следующем файле
cd /usr/share/pam-configs/
ll
drwxr-xr-x 2 root root 4096 июн 22 11:00 ./
drwxr-xr-x 244 root root 12288 июн 22 11:00 ../
-rw-r--r-- 1 root root 124 фев 22 2024 capability
-rw-r--r-- 1 root root 178 апр 4 2024 fprintd
-rw-r--r-- 1 root root 152 мар 22 2024 gnome-keyring
-rw-r--r-- 1 root root 154 мар 5 2025 mkhomedir
-rw-r--r-- 1 root root 218 янв 21 2024 pwquality
-rw-r--r-- 1 root root 524 мая 23 21:27 sss
-rw-r--r-- 1 root root 206 мая 23 21:27 sss-smart-card-optional
-rw-r--r-- 1 root root 221 мая 23 21:27 sss-smart-card-required
-rw-r--r-- 1 root root 182 ноя 21 2025 systemd
-rw-r--r-- 1 root root 672 мар 5 2025 unix
.jpg)
как следует из названия данного файла mkhomedir (make home directory - создание домашнего каталога)
На всякий случай, создадим бэкап этого конфига, возможно, если это уже рабочая система, данный файл как-то был сконфигурирован.
sudo cp mkhomedir mkhomedir.bak
sudo nano mkhomedir
Удаляем все содержимое и добавляем следующее:
Name: activate mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0027 skel=/etc/skel
.jpg)
Здесь один интересный нюанс, параметр umask=0027 говорит о том, какие права будут назначаться домашнему каталогу пользователя, но более подробно о параметре umask я расскажу в следующем видео.
По сути, по умолчанию у нас система именно такие права и назначает для домашних каталогов новых пользователей.
Применяем внесенные изменения
sudo pam-auth-update
Выбираем параметр activate mkhomedir \ Space \ Tab \ OK
.jpg)
Ура, теперь мы можем пробовать авторизоваться на Linux-овой машине под доменным пользователем на базе Windows Server, но все это мы уже сделаем в следующем уроке!
Давайте зайдем на сервер и убедимся, что данная машина появилась в списке компьютеров домена (Windows Server \ Диспетчер серверов \ Средства \ Пользователи и компьютеры Active Directory \ Компьютеры \ UBUNTU-CLIENT) Отлично! Мы действительно подключили машину к домену.
Давайте попробуем выполнить вход под доменной учетной записью на Linux-овую машину, а для этого создадим доменного пользователя для входа на Linux машину (Windows Server \ Диспетчер серверов \ Средства \ Пользователи и компьютеры Active Directory \ Пользователи \ ПКМ \ Создать \ user-ubuntu-dc \ Имя входа пользователя: user-ubuntu-dc \ Далее \ Пароль \ Подтверждение \ Запретить смену пароля \ Срок действия не ограничен \ Далее \ Готово)
.jpg)
Выполним вход в Linux систему под этой учетной записью (Ubuntu-client \ Завершение работы \ Выйти \ Нет в списке \ user-ubuntu-dc@office.loc \ Пароль
.jpg)
\ Создание каталога \home\user-ubuntu-dc@office.loc как раз говорит о том, что мы все правильно настроили и для доменного пользователя так же автоматически создается домашний каталог).
.jpg)
Давайте попробуем подключиться к серверу через проводник (Файлы \ smb://windows-dc.office.loc и здесь мы уже можем не указывать конкретный ресурс, нас пускает на прямую на сервер, так как сервер нас знает
.jpg)
\ 0БМЕН, недостаточно прав для просмотра содержимого объекта и это логично, так как данной учетной записи не разрешено подключаться к данному сетевому ресурсу)
Давайте предоставим права для всех пользователей домена подключаться к сетевому ресурсу 0БМЕН на сервере (0БМЕН \ ПКМ \ Свойства \ Доступ \ Общий доступ \ Добавить \ Пользователи домена \ Чтение и запись)
Попробуем еще раз (Файлы \ smb://windows-dc.office.loc \ 0БМЕН, отлично, доступ есть, давайте создадим файл "Привет с Linux от user-ubuntu-dc" \ ОК)
.jpg)
Добавим в закладки наш (0БМЕН \ Файлы \ ПКМ \ Добавить в закладки) теперь мы всегда будем иметь быстрый доступ к файлообменнику.
.jpg)
Но, то, что я показал это лишь начало, далее необходимо:
- - Разграничить права доступа, чтобы каждый пользователь имел свою папку и не мог заглядывать в чужие.
- - Предоставить доменным администраторам права sudo, чтобы они могли полноценно управлять Linux-машинами так же, как это работает в Windows.
- - Организовать доступ к сетевым ресурсам: настроить автоматическое монтирование общих папок Windows при входе пользователя в систему.
- - Создать централизованное управление Linux-клиентами через скрипты как аналог групповых политик.
- - Обеспечить удалённое администрирование через RDP с Linux-клиента (Remmina) с пробросом локальных дисков и сохранением профилей.
- - Уделить внимание безопасности.
И, конечно, протестировать и отладить все эти механизмы, чтобы инфраструктура работала стабильно.
.jpg)
Но, об этом я расскажу на живом мастер-классе только для участников 16 потока "Комплексного обучения системному администрированию"
Успевайте, пока действуют специальный условия для участников 😉