Добавление Ubuntu в домен Windows (AD)

обновлено 8 мин

Статья написана в 2015 году. Команды и версии программ могли устареть — проверяйте по документации.

Содержание
  1. Добавление вручную
  2. Общие настройки
  3. Настройка сети и DNS
  4. Настройка синхронизации времени
  5. Настройка авторизации через Kerberos
  6. Настройка Samba и вход в домен
  7. Настройка Winbind
  8. Добавление Winbind в качестве источника пользователей и групп
  9. Авторизация в Ubuntu через пользователей домена
  10. Вход в систему
  11. Добавление с помощью domainjoin-gui
  12. Предварительная настройка
  13. Вход в систему

На самом деле добавить Ubuntu в AD можно двумя способами вручную или с помощью domainjoin-gui


Добавление вручную

Общие настройки

Первое, что мы делаем обновляем пакеты командами:

bash
apt-get update
apt-get upgrade

Затем установим основные команды

bash
apt-get install install krb5-user samba winbind 
bash
apt-get install libpam-krb5 libpam-winbind libnss-winbind

Настройка сети и DNS

  1. Необходимо отредактировать файлик hosts
bash
       nano /etc/hosts
       192.168.0.5 ub.study.local ub #Имя локальной машины
       192.168.0.2 dc1.study.local dc1 #Пример ip сервера, прописать обязательно!
  1. Настройки сети локальной машины.
  • Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:
                                             domain study.local
                                           search study.local                                           nameserver 192.168.0.1  #IP Вашего шлюза
                                           nameserver  192.168.0.2  #IP Вашего сервера 

Если редактировали файл /etc/resl.conf на прямую, то после перезагрузки сервера все данные пропадут. Чтобы данные сохранялись нужно отредактировать /etc/resolvconf/resolv.conf.d/head Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf

  • Если IP динамический, полученный по DHCP, то:

                                         редактируем /etc/dhcp/dhclient.conf
bash
                                           nano /etc/dhcp/dhclient.conf
                                       редактируем строки
                                         supersede domain-name "study.local dc1.study.local";
                                         prepend domain-name-servers 192.168.0.2;

Перезапускаем компьютер командой:

bash
reboot  

После перезагрузки проверим доступность сервера командой пинг

bash
ping dc1
ping dc1.study.local

Настройка синхронизации времени

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos. Для единовременной синхронизации можно воспользоваться командой:

bash
sudo net time set dc

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

ntpdate ntp2.stratum2.ru

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

bash
sudo apt-get install ntp

Теперь исправьте файл /etc/ntp.conf, добавив в него информацию о вашем сервере времени:

# You do need to talk to an NTP server or two (or three).
server dc1.study.local

После чего перезапустите демон ntpd:

bash
sudo /etc/init.d/ntp restart

Настройка авторизации через Kerberos

Прежде чем редактировать конфигурационный файл, сохраним его резервную копию

bash
mv /etc/krb5.conf /etc/krb5.conf.old

Редактируем новый файл /etc/krb5.conf. Делаем точно так же как и на представленном конфиге!

bash
nano /etc/krb5.conf

GNU nano 2.2.6 Файл: /etc/krb5.conf

[libdefaults]
default_realm = STUDY.LOCAL

# 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

# default_tgs_enctypes = des3-hmac-sha1

# default_tkt_enctypes = des3-hmac-sha1

# permitted_enctypes = des3-hmac-sha1

# default_tgs_enctypes = des3-hmac-sha1

# default_tkt_enctypes = des3-hmac-sha1
# permitted_enctypes = des3-hmac-sha1

# 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]

STUDY.LOCAL = {
 kdc = dc1.STUDY.LOCAL
 admin_server = dc1.STUDY.LOCAL
 default_domain = STUDY.LOCAL
 }
ini
[domain_realm]
 .opc.local = STUDY.LOCAL
 opc.local = STUDY.LOCAL
[login]

krb4_convert = false
krb4_get_tickets = false

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

bash
kinit username@STUDY.LOCAL #Например kinit alexey@STUDY.LOCAL

Если не выдал ошибок, значит все получилось

Теперь проверим полученный билет

klist
Результат будет такой
Ticket cache: FILE:/tmp/krb5cc_10000
Default principal: alexey@STUDY.LOCAL

Valid starting Expires Service principal
14.12.2015 10:33:27 14.12.2015 20:33:27 krbtgt/STUDY.LOCAL@STUDY.LOCAL
 renew until 15.12.2015 10:33:20

Удалить все билеты

kdestroy

Настройка Samba и вход в домен

Сохраним конфигурационный файл samba

bash
mv /etc/samba/smb.conf /etc/samba/smb.conf.old

Редактируем новый файл

bash
nano /etc/samba/smb.conf
ini
[global]
workgroup = STUDY
realm = STUDY.LOCAL
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 выполните команду

bash
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
bash
net ads join -U alexey -D STUDY.LOCA -S dc1, Где alexey и dc1, STUDY.LOCAL, необходимо заменить на свои данные 
Результат
Enter username's password:
Using short domain name -- STUDY.LOCAL
Joined 'ub' to dns 'study.local'
Проверим результат добавления в домен
#net ads testjoin
Join is OK

Настройка Winbind

Редактируем nano /etc/samba/smb.conf
ini
[global]
workgroup = STUDY
realm = STUDY.LOCAL
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
#winbind
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
template shell = /bin/bash
winbind refresh tickets = yes
winbind offline logon = yes
winbind cache time = 300

Теперь перезапустите демон Winbind и Samba в следующем порядке:

bash
sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start 

Запускаем
bash
sudo testparm

Смотрим есть ли ошибки или предупреждения, если появится:

«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

Без перезагрузки можно устранить так:

ulimit -n 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

Добавление Winbind в качестве источника пользователей и групп

Редактируем /etc/nsswitch.conf

bash
nano /etc/nsswitch.conf

Для этого измените две строчки в файле /etc/nsswitch.conf:

passwd:         compat
group:          compat

добавив к ним в конец winbind:

passwd:         compat winbind
group:          compat winbind

также рекомендую привести строку files в файле /etc/nsswitch.conf к виду:

files:          dns mdns4_minimal[NotFoud=return] mdns4

Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

getent passwd
getent group 

Авторизация в Ubuntu через пользователей домена

Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session, т.к. PAM и так неплохо справляется с авторизацией:

session  optional  pam_mkhomedir.so skel=/etc/skel/ umask=0077

Вход в систему

Редактируем файл /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

bash
nano /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

Добавляем

allow-guest=falsegreeter-show-manual-login=true

Сохраняемся и перезапускаем машину

bash
reboot

После перезагрузки нажимаем войти и вводим

Пользователь: STUDY\alexey
Пароль: *********

Все вы в доменной учетной записи!!!

Добавление с помощью domainjoin-gui

Предварительная настройка

Необходимо отредактировать файлик hosts

bash
       nano /etc/hosts
       192.168.0.5 ub.study.local ub #Имя локальной машины
       192.168.0.2 dc1.study.local dc1 #Пример ip сервера, прописать обязательно!

Скачиваем необходимые пакеты. Пакеты скачиваем по необхдимости (в зависимости от архитектуры)

Устанавливаем скаченные пакеты

  • dpkg -i likewise-open-gui_6.1.0.406-0ubuntu5.1_amd64.deb
  • dpkg -i libglade2-0_2.6.4-2_amd64.deb
  • dpkg -i likewise-open-gui_6.1.0.406-0ubuntu5.1_amd64.deb

В случает если появляются ошибки, то запускаем команду

apt-get insall -f

Затем повторяем установку dpkg

После установки запускаем

bash
 sudo domainjoin-gui

Вводим имя компьютера (к которому подключаемся),домен, пользователя и пароль(Доменный Администратор или администратор) и нажимаем

Join Domain

Перезапускаем машину

bash
reboot

Должно все получиться

Вход в систему

Редактируем файл /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

bash
nano /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

Добавляем

allow-guest=falsegreeter-show-manual-login=true

Сохраняемся и перезапускаем машину

bash
reboot

После перезагрузки нажимаем войти и вводим

Пользователь: STUDY\alexey
Пароль: *********

Добавляем пользователя sudo

bash
sudo usermod -a -G sudo AD_administrative_user
Статья помогла?

Нашли ошибку или устаревшую команду? Выделите текст и нажмите Ctrl+Enter.