Некоторое время назад на работе достался мне для работы ноутбук 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 свои домен и контроллер домена. Особое внимание обращаю на соблюдение регистра - все что написано в верхнем регистре пишется в верхнем регистре!

Это конечно далеко не все, что настраивается но уже сейчас возможно проверить способность авторизации в домене. Для этого достаточно выполнить команду:

Вместо 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.


Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.