Включение Samba-сервера на базе Ubuntu в домен AD

OSzone.net » Microsoft » ИТ-инфраструктура » Планирование, управление и контроль » Включение Samba-сервера на базе Ubuntu в домен AD
Автор: Хорьков Сергей Николаевич, Коркин Владислав Сергеевич, Тютиков Дмитрий Алексеевич
Иcточник: TechNet
Опубликована: 13.12.2012
В нашей предыдущей работе было рассмотрено, что такое 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

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/   можно узнать все об этом пакете и скачать его. Посмотрим на интерфайс пакета:

*

Рис. 1. Общий вид главной вкладки.

Здесь отображаются статусы winbind, smb и nmb, и присутствует индикация подключения компьютера к домену.

*

Рис. 2. Запуск smb и nmb.

*

Рис. 3.
Вкладка «Данные».

Здесь мы должны указать данные, которые будут использоваться для подключения к домену. По умолчанию поля заполнены разработчиками, для примера. Разработчики пакета — французы, так что пусть вас не смущают примеры вроде «administrateur» вместо привычного «Administrator».

*
Увеличить

Рис. 4. Автоматический захват части параметров.

Щелкаем по «Определить» — и часть параметров подхватывается автоматически. Остальные придется заполнять вручную. Все эти параметры использовались при настройке из командной строки.

*
Увеличить

Рис. 5. Заполнение остальных полей.

Заполняем поля. Здесь обратите особое внимание: Netbios имя домена должно быть прописано БОЛЬШИМИ буквами, иначе получим ошибку Kerberos, как вышло в данном случае. Если все заполнено правильно, щелкаем по «Установить» — и SADMS включает машину в домен.

*
Увеличить

*
Увеличить

Рис. 7. Меню «Проверки».

Из меню «Проверки» мы можем выполнить тесты на выполнение различных операций. Также можно провести все тесты из командной строки, как это описывалось ранее.

*
Увеличить

Рис. 8. Пример выводатеста на членство в домене.

*
Увеличить

Рис. 9. Результаты теста сети.

*
Увеличить

Рис. 10. Проверка наличия машинына контролере домена.

Сервер находится в списке доменных машин вместе с другими нашими серверами.

Итак, мы рассмотрели установку Samba и включение ее в домен — с использованием как командной строки, так и графического интерфейса. Использование графического интерфейса позволяет серьезно ускорить и упростить настройку, но вместе с тем не позволяет понять всю механику процесса, а также может серьезно затруднить процесс поиска ошибки. С другой стороны, CLI (Command Line Interface), хоть и предоставляет абсолютный контроль над всем, гораздо менее дружелюбен к пользователю и подразумевает у него наличие некоторых навыков работы. Какой способ использовать — решать вам.


Ссылка: http://www.oszone.net/19383/Samba