Ubuntu в домене Windows AD

Некоторое время назад на работе достался мне для работы ноутбук HP ProBook 6460b. Ну и пришла в голову идея поставить на него вместо надоевшей Windows 7 Pro давно понравившуюся мне Ubuntu 14.04 Trusty LTS. Выбор операционной системы связан с тем, что Ubuntu я использую на домашнем ноутбуке и мне захотелось иметь такую же систему на рабочем компьютере. Потому, что постоянное переключение между ОСями дома и на работе быстро надоело мне и я решился на установку Ubuntu на рабочем ноуте.
Начну по порядку#
Процесс установки Убунты на ноутбук не буду пересказывать потому, что не вижу в этом смысла из-за большого количества таких мануалов на просторах интернета. Скажу только то, что устанавливал с флешки, а образ на флешку писал на рабочем ноутбуке под Windows 7 Pro с помощью программы Rufus . Хватит про установку, перейдем к процессу введения в домен.
При вводе в домен Windows я пользовался стандартной инструкцией по вводу в домен. В процессе ввода в домен возникали проблемы самого разного характера (в основном связанные с моей невнимательностью и легкой кривизной рук :-) ). Да инструкция на русском языке есть и она довольно хороша, но я все же пользовался не только этой инструкцией, но и другими подсказками с прочих сайтов и форумов. Поэтому я решил собрать из всех одну свою.
Первое что необходимо сделать это - правильно и вполне логично! - обновиться:
sudo apt-get update
sudo apt-get upgradeДалее нас потребуется установить клиенты Kerberos, Samba и Winbind для нормальной и адекватной работы в домене Windows. Сделать это можно одной командой:
sudo apt-get install krb5-user
sudo apt-get install samba
sudo apt-get install winbindЛично я пробовал два варианта установки: первый - как указано выше - установка всех необходимых пакетов одной строкой, и второй - установка каждого паке в отдельности. Честно признаюсь, что меня больше устроил и больше понравился вариант отдельной установки каждого пакета. Поясню это тем, что при комплексной установке у меня начальная настройка пакета Kerberos не происходила, и я решил (точнее не решил, а мне пришлось из-за кривизны рук и невнимательности переустанавливать полностью Ubuntu и соответственно все необходимые пакеты) ставить все пакеты по отдельности в вышеуказанном порядке. Это дало свои плоды. На этапе установки пакеты Kerberos произошла его полная настройка где указывались все необходимые параметры для работы в домене (собственно сам домен, необходимые для авторизации DC, рабочие группы или зоны). Далее я поставил Самбу и Винбинд с которыми каких-либо заморочек не было. Так же я установил указанные желательными библиотеки libpam-krb5, libpam-winbind и libnss-winbind. Их я устанавливал одной командой, т.к. они не требуют никаких ручных настроек и просто желательно их присутствие в системе.
Для простоты и дальнейшей ясности процесса будем считать нашим доменом по умолчанию DOMAIN.RU, доменконтроллером которого будет first.domain.ru с ip-адресом 192.168.1.2. Он же будет нашим первичным DNS сервером домена. Коме того представим в нашем домене еще один доменконтроллер second.domain.ru с ip-адресом 192.168.1.3. Ну и компьютер наш будет называться work-ubuntu.
Настройка DNS#
Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS-сервера доменконтроллер и в качестве домена поиска - нужный домен. Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager
, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:
domain domain.ru
search domain.ru
nameserver 192.168.1.2
nameserver 192.168.1.1
nameserver 127.0.1.1
search domain.ru first.domain.ruВ современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно. Для получение нужного результата нужно добавить необходимые изменения в файл /etc/resolvconf/resolv.conf.d/head. Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf. Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться “неправильный” resolv.conf, например присутствует только один nameserver 192.168.1.1 и не указаны domain и search. Нужно отредактировать /etc/dhcp/dhclient.conf. Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:
supersede domain-name "domain.ru first.domain.ru"Можно было бы добавить еще один nameserver, но я этого делать не стал потому, что у нас в сети компании он единственный. Для применения изменений необходимо перезапустить службу:
/etc/init.d/networking restartТеперь необходимо проверить файл /etc/hostname и убедиться в том, что мы правильно задали имя нашего ноутбука.
work-ubuntuКроме всего прочего необходимо отредактировать файл /etc/hosts так, чтобы в нем была запись с полным доменным именем и обязательно с коротким именем. У меня получился такой формат:
127.0.0.1 localhost
127.0.1.1 work-ubuntu.domain.ru work-ubuntuСразу необходимо проверить, что наш контроллер домена пингуется нормально по короткому и по полному доменному именам:
ping first
ping first.domain.ruНе обязательно конечно, но как говорится в инструкции “желательно” при внесении каких-либо изменений делать перезагрузку. Лично я так и делал.
Настройка синхронизации времени#
Тут собственно говоря ничего сложного! Я просто единожды выполнил команду:
sudo net time set firstи забыл про это дело. Другие варианты развития я не вижу смысла освещать в статье т.к. они мне не понадобились.
Собственно переходим к самому основному: настройка авторизации через Kerberos
Настройка авторизации по протоколу Kerberos осуществляется простым редактированием файла /etc/krb5.conf. Вот примерный его вид:
[libdefaults]
default_realm = DOMAIN.RU
# The following krb5.conf variables are only for MIT Kerberos.
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
# The following libdefaults parameters are only for Heimdal Kerberos.
v4_instance_resolve = false
v4_name_convert = {
host = {
rcmd = host
ftp = ftp
}
plain = {
something = something-else
}
}
fcc-mit-ticketflags = true
[realms]
DOMAIN.RU = {
kdc = first.DOMAIN.RU
admin_server = first
default_domain = DOMAIN.RU
}
[domain_realm]
.domain.ru = DOMAIN.RU
domain.ru = DOMAIN.RU
[login]
krb4_convert = false
krb4_get_tickets = falseВы естественно указываете вместо DOMAIN.RU и first свои домен и контроллер домена. Особое внимание обращаю на соблюдение регистра - все что написано в верхнем регистре пишется в верхнем регистре!
Это конечно далеко не все, что настраивается но уже сейчас возможно проверить способность авторизации в домене. Для этого достаточно выполнить команду:
kinit vasya@DOMAIN.RUВместо vasya и DOMAIN.RU вы так же указываете свои имя пользователя и домен. Команда так же регистрозависима! Если вы после выполнения данной команды получаете завпрос на ввод пароля от указанного пользователя и не получаете никаких ошибок, значит у вас все прекрасно. В противном случае еще раз перепроверьте все измененные вами файлы на правильность (внимательно изменяйте все ваши файлы).
Убедиться в том, что билет получен, можно с помощью команды:
klistБудем считать, что авторизация вы настроили и билет получен. Теперь настроим вход в домен.
Настройка Samba и вход в домен#
Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf. На данном этапе нас интересуют только некоторые параметры секции [global]. Вот примерный вариант файла:
[global]
workgroup = DOMAIN
realm = DOMAIN.RU
# Эти две опции отвечают как раз за авторизацию через 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Теперь необходимо проверить внесенные изменения на правильность (точнее себя на внимательность и руки на кривость :-) ) следующей командой:
testparmВ случае правильного изменения файла /etc/samba/smb.conf вы увидите примерно следующее:
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 vasya -D DOMAINВ случае успешного входа вы увидите на экране примерно следующее:
Enter vasya's password:
Using short domain name -- DOMAIN
Joined 'WORK-UBUNTU' to realm 'domain.ru'Я снова не стану описывать все возможные ошибки, потому что и ежу понятно, что если появились ошибки значит ты сделал что-то не так. Поэтому скажу только одно: RTFM friend!
На данном этапе вы можете установить себе smbclient:
sudo apt-get install smbclientи проверить доступность ресурсов, хотя бы, на доменконтроллере:
smbclient -k -L firstВы должны будете увидеть список доступных ресурсов на доменконтроллере
Переходим к настройке Winbin#
Если вам необходимо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind - специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:
# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap config * : range = 5000-20000
idmap config * : backend = tdb
# Эти опции не стоит выключать.
winbind enum groups = yes winbind enum users = yes
# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
# будут использоваться с доменом, т.е. вместо username - DOMAINusername.
# Возможно именно это вам и нужно, однако обычно проще этот параметр включить.
winbind use default domain = yes
# Если вы хотите разрешить использовать командную строку для пользователей домена, то
# добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
winbind refresh tickets = yesСтроки с параметрами idmap config указаны с новыми параметрами не характерными для старых версий Samba, поэтому на данном этапе будьте внимательнее. Старый формат этих строк можно посмотреть в официальной инструкции по вводу в домен.
Теперь вам необходимо перезапустить демон Winbind и Samba. Для этого соблюдая порядок команд, выполните их поочередно:
sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind startЗапускаем:
sudo testparmСмотрим есть ли ошибки или предупреждения, если появится: rlimit_max: rlimit_max (1024) below minimum Windows limit (16384), то отредактировать файл /etc/security/limits.conf:
# Добавить в конец файла строки:
* - nofile 16384
root - nofile 16384После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой
wbinfo -t
checking the trust secret for domain DCN via RPC calls succeededА так же, что Winbind увидел пользователей и группы из AD командами:
wbinfo -u
wbinfo -gЭти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN, либо без него - в зависимости от того, какое значение вы указали параметру winbind use default domain в /etc/samba/smb.conf.
Итак, Winbind работает, однако в систему он еще не интегрировал.
Добавление Winbind в качестве источника пользователей и групп#
Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf:
passwd: compat
group: compatдобавив к ним в конце winbind:
passwd: compat winbind
group: compat winbindТак же рекомендую привести строку hosts: в файле /etc/nsswitch.conf к виду:
hosts: files dns mdns4_minimal [NOTFOUND=return] mdns4Теперь можно проверить, что Ubuntu запрашивает у Winbind информацию о пользователях и группах выполнив по очереди следующие команды:
getent passwd
getent groupПосле выполнения первой команды вы должны увидеть содержимое вашего файла /etc/passwd и пользователей вашего домена AD из указанного диапазона в файле /etc/samba/smb.conf. Вторая команда вернет все то же самое, только для групп.
Авторизация в Ubuntu через пользователей домена#
Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.
Он-лайн авторизация#
Для он-лайн авторизации я лично подредактировал парочку файлов. Первый файл, который я редактировал это /etc/pam.d/common-session и добавил в него всего одну строчку:
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077Вторым был файлик /etc/lightdm/user.conf. В него необходимо добавить строчку в самый конец файла:
greeter-show-manual-login=trueНа этом собственно говоря все готово! Перезагружаемся и входим под учетной записью доменного пользователя.
Офф-лайн авторизация#
Часто возникает ситуация, когда домен-контроллер недоступен по различным причинам — профилактика, отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее. Добавьте в секцию [global] файла /etc/samba/smb.conf следующие строки:
[global]
# Возможность оффлайн-авторизации при недоступности доменконтроллера
winbind offline logon = yes
# Период кэширования учетных записей, по умолчанию равен 300 секунд
winbind cache time = 300
# Необязательная настройка, но избавляет от нудных пауз, указываем контроллер
# домена dc, можно указать и ip, но это является плохим тоном
password server = dcОбычно этого достаточно. Если же возникают ошибки, то необходимо создать файл /etc/security/pam_winbind.conf со следующим содержанием:
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#
[global]
# turn on debugging
debug = no
# request a cached login if possible
# (needs "winbind offline logon = yes" in smb.conf)
cached_login = yes
# authenticate using kerberos
krb5_auth = yes
# when using kerberos, request a "FILE" krb5 credential cache type
# (leave empty to just do krb5 authentication but not have a ticket
# afterwards)
krb5_ccache_type = FILE
# make successful authentication dependend on membership of one SID
# (can also take a name)
;require_membership_of =
silent = yesФайл /etc/pam.d/gnome-screensaver в таком случае принимает вид:
auth sufficient pam_unix.so nullok_secure
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.soА также изменяется файл /etc/pam.d/common-auth:
auth optional pam_group.so
auth sufficient pam_unix.so nullok_secure use_first_pass
auth sufficient pam_winbind.so use_first_pass
auth required pam_deny.soНа этом вроде бы все :-)
Вместо заключения#
После всех проделанных операций наша машина на Ubuntu стала полноценным членом домена Windows и теперь с ней могу работать пользователи AD.
Было мягко говоря не легко. Тяжело было собрать информацию, относящуюся именно к моей Ubuntu 14.04 Trusty LTS.
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат , а так же подписывайся на канал .
О способах отблагодарить автора можно почитать на странице “Донаты ”.