Предположим у нас есть уже существующая среда Windows с Аctive Directory и в этой середе находятся несколько компьютеров с Ubuntu. Нужно что бы пользователи Windows могли без труда войти на компьютер с Ubuntu используя свой логин и пароль, и без проблем получить доступ к ресурсам сети.
Самый простой способ интеграции Ubuntu в сеть Active Directory – использовать Likewise-open, но увы он не всегда корректно работает и пока не понимаешь досконально как он функционирует решать возникающие проблемы очень трудно. Другой способ о котором пойдет речь в статье – настройка через samba и winbind.
Операционная система Ubuntu-Desktop 10.4 LTS, DNS: Linux-04.mydomain.local, IP: 192.168.3.104, домен MYDOMAIN.LOCAL, контроллер домена srv-dc.mydomain.local.
1. Настройка NTP
Многие не уделяют настройке синхронизации времени должного внимания, но по своему опыту скажу что лучше один раз настроить и забыть, а не вспоминать об этом раз в полгода.
root@Linux-04:~# apt-get install ntp
Открываем для редактирования файл /etc/ntp.conf, коментируем все имеющиеся теги server и добавляем свой сервер времени:
# You do need to talk to an NTP server or two (or three). #server ntp.ubuntu.com server srv-dc.mydomain.local
Перезапускаем сервис ntp для применения новых параметров.
root@Linux-04:~# service ntp restart
2. Настройка Kerberos
Удаляем avahi-daemon – службу обнаружения сетевых сервисов через mDNS/DNS-SD, в корпоративной среде пользы от нее не много, кроме того она мешает разрешать DNS имена заканчивающиеся local.
root@Linux-04:~# apt-get remove avahi-daemon
Устанавливаем необходимые пакеты
root@Linux-04:~# apt-get install krb5-user winbind samba
Во время установки kerberos 5 попросит задать область по умолчанию (имя домена) MYDOMAIN.LOCAL, обязательно в верхнем регистре.
Приводим /etc/krb5.conf к следующему виду:
[libdefaults] default_realm = MYDOMAIN.LOCAL # Realm используемый по умолчанию # имя нашего домена, в верхнем # регистре [realms] MYDOMAIN.LOCAL = { kdc = srv-dc.mydomain.local # Список контроллеров домена для # нашего realm admin_server = srv-dc.mydomain.local # Контроллер домена на котором # выполняются все модификации - # для win2k3 не принципиально. default_domain = MYDOMAIN.LOCAL # Имя домена по умолчанию } [domain_realm] # Настройка отображения DNS-области .mydomain.local = MYDOMAIN.LOCAL # в область Kerberos, при написании mydomain.local = MYDOMAIN.LOCAL # нужно соблюдать регистр
Получаем тикет:
root@Linux-04:~# kinit admin Password for admin@MYDOMAIN.LOCAL:
Проверяем:
root@Linux-04:~# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin@MYDOMAIN.LOCAL Valid starting Expires Service principal 05/01/11 17:46:23 05/02/11 03:46:20 krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL renew until 05/02/11 17:46:23
3. Настройка SAMBA
Редактируем файл /etc/samba/smb.conf
[global] workgroup = MYDOMAIN # Имя рабочей группы realm = MYDOMAIN.LOCAL # Имя домена security = ADS # ADS - режим работы samba-сервера # как члена домена password server = srv-dc.mydomain.local # список контроллеров домена local master = No # Не использовать samba как локальный # мастер-браузер для подсети. domain master = No # Не использовать samba как мастер- # браузер для домена dns proxy = Yes # Если имя не найдено в WINS, разрешаем его # поиск на DNS-сервере. idmap uid = 10000 - 40000 # Определяем диапазон uid для сопоставления # с SID пользователей домена idmap gid = 10000 - 40000 # Определяем диапазон gid для сопоставления # с группами домена template shell = /bin/bash # Разрешаем доменным пользователям исполь- # зовать командную строку winbind enum users = Yes # Разрешаем Winbind перечислять доменных # пользователей winbind enum groups = Yes # Разрешаем Winbind перечислять доменные # группы winbind use default domain = Yes # Позволяет не использовать доменное имя при # аутентификации пользователей, актуально при # использовании одного домена. winbind refresh tickets = Yes # Разрешаем Winbind обновлять тикеты # Стандартная процедура отключения принтеров load printers = No # Отключаем загрузку принтеров printcap name = /dev/null disable spoolss = Yes # Отключаем spoolss show add printer wizard = No # Отключаем отображение "Мастера установки # принтеров".
Проверяем правильность конфигурационного файла samba:
root@Linux-04:~# testparm
Вводим машину в домен:
root@Linux-04:~# net ads join -U admin Enter admin's password: Using short domain name -- MYDOMAIN Joined 'LINUX-04' to realm 'mydomain.local'
Добавляем в автозагрузку и запускаем сервисы winbind и smbd:
root@Linux-04:~# update-rc.d winbind defaults root@Linux-04:~# service winbind start root@Linux-04:~# update-rc.d smbd defaults root@Linux-04:~# service smbd start
Проверяем может ли winbind получить список пользователей из Active Directory:
root@Linux-04:~# wbinfo -u
Затем точно такая же проверка для групп:
root@Linux-04:~# wbinfo -g
4. Настройка авторизации
Правим /etc/nsswitch.conf, добавляем winbind после «passwd: comapt» и «group: compat»
passwd: compat winbind group: compat winbind shadow: compat hosts: files dns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
Проверяем, в результате мы должны увидеть весь список пользователей, локальных и пользователей из Active Directotry:
root@Linux-04:~# getent passwd
Такая же проверка для групп пользователей:
root@Linux-04:~# getent group
Что бы автоматически создавать домашние папки для пользователей домена, добавляем в конец файла /etc/pam.d/common-session следующую строчку:
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
Все.
12 Коммент. : “Интеграция Ubuntu в домене Windows”
Трекбеки/Пинги
- Блог «Админа-Маньяка» – Интеграция Unbutu в домене Windows | Блогеры о юниксах - [...] Читать далее: http://www.alsigned.ru/?p=1429 [...]
Интересно.
А почем в убунте не сделали как в opensuse где подобная интеграция идет изкаропки и настраивается в yast ?
@guyver
У каждого дистрибутива свои особенности.
Я склоняюсь к тому что linux все-таки должен работать в linux-подобной среде, думаю такого же мнения придерживаются и разработчики Ubuntu. Если уж сильно хочется из графической оболочки подключиться к домену или не хочется заморачиваться с настройкой – можно воспользоваться Likewise-open. Включать же возможность подключения к Active Directory в дистрибутив на мой взгляд не целесообразно, потому что linux в домене Windows используется не так часто и в подавляющем большинстве случаев он окажется бесполезным.
Автор, в качестве FQDN сервера NTP можно, да правильнее с т.з. обеспечения высокодоступности, указывать имя корневого домена AD (т.е. «»mydomain.local» в Вашем случае), а не конкретный контроллер домена.
Моя практика показывает, что Linux-клиенты «не любят» AES в Kerberos, подписание сообщений SMB и входящий NTLMv2. Автор, Вы можете подтвердить это?..
Добрый день, @Дмитрий Пономарев
Идея не плохая, правда с учетом того что разница во времени по умолчанию может составлять 5мин, реальную выгоду от нее мы получим только в случае если контроллер домена умрет минимум на неделю. Честно говоря, samba в домене тема заезженная, странно что я раньше не натыкался на такое решение.
1. AES kerberos – о проблемке слышал, но сам на граблях из-за нее не стоял.
2. Подписание сообщений SMB – не сталкивался.
3. Входящий NTLMv2 – немножко не понятное описание, для нормальной поддержки NTLMv2 нужна samba >= 3.3, в данном примере используется версия 3.4.7.
Смоделируй ситуацию где возникают первые две проблемы, охота покопаться.
В ubuntu для настройки pam используется pam-auth-update. Поэтому для создания каталогов пользователей нужно добавить в файл /usr/share/pam-configs/winbind строки:
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Session-Initial:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Далее, если не планируется предоставлять доступ к самому компьютеру по smb то нет необходимости запускать smbd и nmbd. Достаточно только winbindd. Если нет клиентов под Windows 9x то можно отключить netbios:
disable netbios = yes
И наконец, для маппинга unix uid и sid домена лучше использовать nss модуль hash. Он более надежен, не требует хранения tdb файлов и позволяет иметь одинаковые uid на всех unix компьютерах.
idmap backend = hash
idmap uid = 10000-4000000000
idmap gid = 10000-4000000000
winbind nss info = hash
idmap cache time = 1800
А вот вводить в домен обязятельно
net ads join -U admin
если у меня уже есть там учетка?
> Добавляем в автозагрузку … сервисы winbind и smbd:
Зачем? при установке пакетов они автоматически добавляются туда? или это так, «на всякий пожарный»?
> # Стандартная процедура отключения принтеров
во многих мануалах вижу это действо. опятьже не понимаю зачем? а если понадобиться расшарить принтер?
u[b]nb[/b]utu? Как так можно слажать ?
@vadim
Спасибо за дополнения, обязательно поразбираюсь и поправлю в статье.
@Lightnin_Hopkins
Не понял твой вопрос. Учетная запись у тебя или у компьютера?
На самом деле можно вообще этим всем не заморачиваться, для входа в систему используешь локальную учетку, при подключении к виндовым шарам виндовую, дополнительно ставишь галочку «Запомнить пароль навсегда», а на контроллере домена в свойствах пользователя устанавливаешь галочку «Срок действия пароля не ограничен»
@ViT
Ты совершенно прав – на «всякий пожарный», и из-за недоверия к немножко новой для меня операционной системе. В статье обязательно поправлю.
Это делается для того что бы не использовать бесполезный сервис, а в подавляющем большинстве случаев что бы избавиться от ошибок в логах Расшарить на несколько пользователей USB/LPT принтер можно при помощи железного принт-сервера, такое решение намного лучше нежели чем подключать его через компьютер.
@winterheart
Я почти к каждой статье получаю 1-2 подобных комментарев. Поэтому активно ищу человека который займется на волонтерских началах проверкой орфографии и опечаток. Пока безрезультатно
PS: Кроме меня так слажали еще 580 000 раз – http://www.google.ru/search?q=Unbutu