В нашей предыдущей работе было рассмотрено, что такое Active Directory и Samba и в чем состоят преимущества их совместной работы. Также был рассмотрен процесс сборки Samba из исходников и включение ее в домен, и все это — из командной строки. Следует признать, что сборка чего-либо из исходников не является распространенной практикой в современных дистрибутивах Линукс. Гораздо чаще для установки программного обеспечения используются репозитории. Это позволяет сделать процесс установки более дружелюбным и простым для пользователя. Также могут автоматически устанавливатьсявовлекаться дополнительные пакеты, необходимые для работы устанавливаемого ПО, что опять же серьезно облегчает жизнь и избавляет от необходимости изучать списки необходимых предустановленных пакетов. В настоящее время наблюдается тенденция к повсеместному использованию графических интерфейсов. Можно долго обсуждать доводы «за» и «против», но факт остается фактом: все большее количество пользователей и даже системных администраторов предпочитает для значительного числа задач использовать GUI. В рамках этой статьи мы постараемся рассмотреть процесс установки и включения в домен Samba при помощи командной строки и репозиториев, а также включение Samba в домен при помощи графического интерфейса утилиты SADMS. Для более глубокого понимание процесса рекомендуется ознакомиться со статьей, в
которой рассматривалась вся теоретическая основа работы AD и Samba. По статистике, Openstat Ubuntu является 4-й в списке самых популярных ОС для веб-серверов, и её популярность быстро растёт. В нашем случае это дистрибутив Ubuntu Server 12.04 LTS. Найти дистрибутив можно на официальном сайте Ubuntu http://www.ubuntu.com/download/server .
Включение Samba-сервера на базе Ubuntu в домен AD при помощи командной строки:
Для начала рассмотрим включение сервера на базе Ubuntu в домен AD средствами командной строки. Процесс подробно описан в документации на сайте Ubuntu. http://help.ubuntu.ru/wiki/ввод_в_домен_windows
Установка обновлений и необходимых пакетов.
Нам понадобятся Kerberos, Samba и Winbind. Пережде тчем, как их устанавливать, рекомендуется обновить систему:
sudo apt-get update
sudo apt-get upgrade
После успешной установки обновлений ставим Kerberos, Samba и Winbind:
sudo apt-get install install krb5-user samba winbind
В этой команде,
krb5-user — пакет для протокола Kerberos, который используется для аутентификации в Windows;
samba — позволяет стать членом домена;
winbind — позволяет использовать учетную запись пользователя из ActiveDirectory.
При использовании графического интерфейса можно использовать менеджер пакетов Synaptic. Стоит заметить, что по умолчанию в Ubuntu Server 12.04 LTS графического интерфейса нет, его при необходимости можно установить отдельно:
sudo apt-get install ubuntu-desktop
После этого необходимо сконфигурировать все компоненты для работы с доменом. Тестовый домен называется LAB.LOCAL, контроллер домена — lab-dc1.lab.local, c IP 192.168.7.2, имя сервера — testubuntu.
Настройка DNS
В первую очередь необходимо настроить DNS на хосте под управлением Ubuntu (сервером DNS будет контролер домена), а также прописать правильный домен поиска. Для этого необходимо отредактировать файл /etc/resolv.conf, чтобы он содержал следующую информацию:
domain lab.local
search lab.local
nameserver 192.168.7.2
Для их применения изменений необходимо перезапустить сетевую службу:
/etc/init.d/networking restart
Также следует убедиться, что имя сервера в файле /etc/hostname задано верно:
testubuntu
Необходимо еще отредактировать файл /etc/hosts таким образом, чтобы в нём была запись с полным доменным именем компьютера и обязательно с коротким именем хоста, ссылающаяся на один из внутренних IP:
# Имена этого компьютера
127.0.0.1 localhost
127.0.1.1 testubuntu.lab.local testubuntu
Настройка синхронизации времени.
Следующий шаг — настройка синхронизации по времени с контролером домена. Очень важно не забыть про этот момент, так как если расхождение по времени составит более пяти минут, мы не сможем получить тикет от Kerberos.
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd, этот демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo apt-get install ntp
Теперь необходимо внести правки в файл /etc/ntp.conf, добавив в него информацию о сервере времени:
# You do need to talk to an NTP server or two (or three).
server lab-dc1.lab.local
После чего нужно перезапустить демон ntpd:
sudo /etc/init.d/ntp restart
Настройка Kerberos.
Следующий этап — настройка авторизации через протокол Kerberos. Нужно будет отредактировать файл /etc/krb5.conf. Ниже приведен результат правок:
[libdefaults]
default_realm = LAB.LOCAL
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
LAB.LOCAL = {
kdc = lab-dc1
admin_server = lab-dc1
default_domain = LAB.LOCAL
}
[domain_realm]
.lab.local = LAB.LOCAL
lab.local = LAB.LOCAL
[login]
krb4_convert = false
krb4_get_tickets = false
На данном этапе можно проверить, что мы можем авторизоваться в домене. Для этого используем следующую команду:
kinit user@LAB.LOCAL
Вместо user, естественно, стоит вписать имя существующего пользователя домена. Имя домена необходимо писать заглавными буквами!
Если выполнение команды не привело к возникновению ошибок — значит, всё верно, и домен отдаёт вам тикет Kerberos. Убедиться в том, что тикет получен, можно, выполнив команду:
klist
Удалить все тикеты можно командой
kdestroy
Итак, будем считать, что авторизация прошла успешно; пора настроить непосредственно вход в домен.
Еще один файл, который нас интересует — /etc/samba/smb.conf. В нем нам нужна секция [global]. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:
[global]
# Эти две опции нужно писать именно в заглавном регистре, причём workgroup без
# последней секции после точки, а realm - полное имя домена
workgroup = LAB
realm = LAB.LOCAL
# Эти две опции отвечают как раз за авторизацию через AD
security = ADS
encrypt passwords = true
# Просто важные
dns proxy = no
socket options = TCP_NODELAY
# Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,
# или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде
domain master = no
local master = no
preferred master = no
os level = 0
domain logons = no
# Отключить поддержку принтеров
load printers = no
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes
Отредактировав smb.conf, выполните команду
testparm
Она проверит конфигурацию на ошибки и выдаст суммарную сводку о нём:
# 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
Как видно, были заданы правильные параметры для того, чтобы компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого используется следующая команда:
net ads join -U admin -D LAB
И в случае успеха вывод команды должен быть примерно таким:
# net ads join -U admin -D LAB
Enter admin's password:
Using short domain name — LAB
Joined 'testubuntu' to realm 'lab.local'
Параметры, используемые командой net
- U username%password — обязательный параметр, вместо admin необходимо подставить имя пользователя с правами администратора домена и указать пароль.
- 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».
Если больше никаких сообщений нет, значит, всё прошло успешно.
Попробуйте использовать ping по имени с другого члена домена, чтобы убедиться, что в домене всё отработало как следует.
Можно также использовать команду
net ads testjoin
Если проблем не возникло, то вывод команды будет следующим:
#net ads testjoin
Join is OK
Но иногда после сообщения о присоединении к домену выдаётся такая ошибка:
DNS update failed!
Прежде чем выяснять, почему же не обновляется DNS, перезагрузите компьютер после введения в домен! Вполне возможно, что это решит проблему.
Если это не помогло, рекомендуется ещё раз проверить настройки DNS: с большой долей вероятности причина будет в них. После этого нужно удалить компьютер из домена и попытаться повторить процесс заново.
Если всё прошло без ошибок, то компьютер успешно включен в домен. Можно зайти на домен-контроллер и убедиться в этом.
Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то кроме самой Samba вам понадобится ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря, Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux-систему, присвоив им ID из заданного диапазона. Таким образом, вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:
# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
# Эти опции не стоит выключать.
winbind enum groups = yes
winbind enum users = yes
# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
# будут использоваться с доменом, т.е. вместо user - DOMAIN\user.
# Возможно именно это вам и нужно, однако обычно проще этот параметр включить.
winbind use default domain = yes
# Если вы хотите разрещить использовать командную строку для пользователей домена, то
# добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
winbind refresh tickets = yes
Теперь перезапустите демон Winbind и Samba в следующем порядке:
sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start
После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой
# wbinfo -t
а также, что Winbind увидел пользователей и группы из AD, командами
wbinfo -u
wbinfo -g
Эти две команды должны выдать список пользователей и групп из домена соответственно.
Итак, Winbind работает, однако в систему он ещё не интегрирован.
Чтобы ваша Ubuntu прозрачно работала с пользователями домена (в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов), необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf:
passwd: compat
group: compat
добавив к ним в конец winbind:
passwd: compat winbind
group: compat winbind
Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив
getent passwd
getent group
Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.
Включение Samba-сервера на базе Ubuntu в домен AD при помощи графического интерфейса и SADMS.
Возможно, скажем в домашних условиях или в спешке, вам захочется произвести все эти манипуляции в графическом режиме. Для этих целей существует пакет SADMS, о котором есть информация на сайте Ubuntu: https://help.ubuntu.com/community/ActiveDirectoryWinbind-SADMS .
А на сайте http://sadms.sourceforge.net/ можно узнать все об этом пакете и скачать его. Посмотрим на интерфайс пакета:
.png)
Рис. 1. Общий вид главной вкладки.
Здесь отображаются статусы winbind, smb и nmb, и присутствует индикация подключения компьютера к домену.
.png)
Рис. 2. Запуск smb и nmb.
.png)
Рис. 3.
Вкладка «Данные».
Здесь мы должны указать данные, которые будут использоваться для подключения к домену. По умолчанию поля заполнены разработчиками, для примера. Разработчики пакета — французы, так что пусть вас не смущают примеры вроде «administrateur» вместо привычного «Administrator».
_mini_oszone.png)
Увеличить
Рис. 4. Автоматический захват части параметров.
Щелкаем по «Определить» — и часть параметров подхватывается автоматически. Остальные придется заполнять вручную. Все эти параметры использовались при настройке из командной строки.
_mini_oszone.png)
Увеличить
Рис. 5. Заполнение остальных полей.
Заполняем поля. Здесь обратите особое внимание: Netbios имя домена должно быть прописано БОЛЬШИМИ буквами, иначе получим ошибку Kerberos, как вышло в данном случае. Если все заполнено правильно, щелкаем по «Установить» — и SADMS включает машину в домен.
_mini_oszone.png)
Увеличить
_mini_oszone.png)
Увеличить
Рис. 7. Меню «Проверки».
Из меню «Проверки» мы можем выполнить тесты на выполнение различных операций. Также можно провести все тесты из командной строки, как это описывалось ранее.
_mini_oszone.png)
Увеличить
Рис. 8. Пример выводатеста на членство в домене.
_mini_oszone.png)
Увеличить
Рис. 9. Результаты теста сети.
_mini_oszone.jpg)
Увеличить
Рис. 10. Проверка наличия машинына контролере домена.
Сервер находится в списке доменных машин вместе с другими нашими серверами.
Итак, мы рассмотрели установку Samba и включение ее в домен — с использованием как командной строки, так и графического интерфейса. Использование графического интерфейса позволяет серьезно ускорить и упростить настройку, но вместе с тем не позволяет понять всю механику процесса, а также может серьезно затруднить процесс поиска ошибки. С другой стороны, CLI (Command Line Interface), хоть и предоставляет абсолютный контроль над всем, гораздо менее дружелюбен к пользователю и подразумевает у него наличие некоторых навыков работы. Какой способ использовать — решать вам.