Некоторое время назад на работе достался мне для работы ноутбук 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 [email protected]
Вместо 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
.
Если у тебя есть вопросы, комментарии и/или замечания – заходи в чат, а так же подписывайся на канал.