В нашей предыдущей работе было рассмотрено, что такое Active Directory и Samba и в чем состоят преимущества их совместной работы. Также был рассмотрен процесс сборки Samba из исходников и включение ее в домен, и все это — из командной строки. Следует признать, что сборка чего-либо из исходников не является распространенной практикой в современных дистрибутивах Линукс. Гораздо чаще для установки программного обеспечения используются репозитории. Это позволяет сделать процесс установки более дружелюбным и простым для пользователя. Также могут автоматически вовлекаться дополнительные пакеты, необходимые для работы устанавливаемого ПО, что опять же серьезно облегчает жизнь и избавляет от необходимости изучать списки необходимых предустановленных пакетов. В настоящее время наблюдается тенденция к повсеместному использованию графических интерфейсов. Можно долго обсуждать доводы «за» и «против», но факт остается фактом: все большее количество пользователей и даже системных администраторов предпочитает для значительного числа задач использовать GUI. В рамках этой статьи мы постараемся рассмотреть процесс установки и включения в домен Samba при помощи командной строки и репозиториев, а также включение Samba в домен при помощи графического интерфейса утилиты SADMS.
По статистике, Openstat Ubuntu является 4-й в списке самых популярных ОС для веб-серверов, и её популярность быстро растёт. В нашем случае это дистрибутив Ubuntu Server 12.04 LTS. Найти дистрибутив можно на официальном сайте Ubuntu.
1.Включение Samba-сервера на базе Ubuntu в домен AD при помощи командной строки
Для начала рассмотрим включение сервера на базе Ubuntu в домен AD средствами командной строки. Процесс подробно описан в документации на сайте Ubuntu.
2.Установка обновлений и необходимых пакетов.
Нам понадобятся 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.
3.Настройка 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
4.Настройка синхронизации времени.
Следующий шаг — настройка синхронизации по времени с контролером домена. Очень важно не забыть про этот момент, так как если расхождение по времени составит более пяти минут, мы не сможем получить тикет от Kerberos.
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:
ntpdate ntp.mobatime.ru
Автоматическая же синхронизация настраивается с помощью ntpd, этот демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:
sudo ap<i>t-get</i> 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
5.Настройка 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.con
f. В нем нам нужна секция [global]
. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:
[global]
# Эти две опции нужно писать именно в заглавном регистре, причём <code>workgroup</code> без
# последней секции после точки, а <code>realm</code> - полное имя домена
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 <i>admin</i> -D LAB
Enter admin's password:
Using short domain name — LAB
Joined 'testubuntu' to realm 'lab.local'
6.Параметры, используемые командой 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 - DOMAINuser.
# Возможно именно это вам и нужно, однако обычно проще этот параметр включить.
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. А на сайте можно узнать все об этом пакете и скачать его. Посмотрим на интерфайс пакета:
Рис. 1. Общий вид главной вкладки.
Здесь отображаются статусы winbind, smb и nmb, и присутствует индикация подключения компьютера к домену.
Рис. 2. Запуск smb и nmb.
Рис. 3. Вкладка «Данные».
Здесь мы должны указать данные, которые будут использоваться для подключения к домену. По умолчанию поля заполнены разработчиками, для примера. Разработчики пакета — французы, так что пусть вас не смущают примеры вроде «administrateur» вместо привычного «Administrator».
Рис. 4. Автоматический захват части параметров.
Щелкаем по «Определить» — и часть параметров подхватывается автоматически. Остальные придется заполнять вручную. Все эти параметры использовались при настройке из командной строки.
Рис. 5. Заполнение остальных полей.
Заполняем поля. Здесь обратите особое внимание: Netbios имя домена должно быть прописано БОЛЬШИМИ буквами, иначе получим ошибку Kerberos, как вышло в данном случае. Если все заполнено правильно, щелкаем по «Установить» — и SADMS включает машину в домен.
Рис. 6. Машина включена в домен успешно.
Рис. 7. Меню «Проверки».
Из меню «Проверки» мы можем выполнить тесты на выполнение различных операций. Также можно провести все тесты из командной строки, как это описывалось ранее.
Рис. 8. Пример вывода теста на членство в домене.
Рис. 9. Результаты теста сети.
Рис. 10. Проверка наличия машины на контролере домена.
Сервер находится в списке доменных машин вместе с другими нашими серверами.
Итак, мы рассмотрели установку Samba и включение ее в домен — с использованием как командной строки, так и графического интерфейса. Использование графического интерфейса позволяет серьезно ускорить и упростить настройку, но вместе с тем не позволяет понять всю механику процесса, а также может серьезно затруднить процесс поиска ошибки. С другой стороны, CLI (Command Line Interface), хоть и предоставляет абсолютный контроль над всем, гораздо менее дружелюбен к пользователю и подразумевает у него наличие некоторых навыков работы. Какой способ использовать — решать вам.
Автор: SergeyKhorkov