Ввод в домен на базе Windows 2003: различия между версиями
Mad max (обсуждение | вклад) (Новая страница: «== Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux == === Задача: === Ввести в ...») |
Нет описания правки |
||
(не показано 45 промежуточных версий 12 участников) | |||
Строка 1: | Строка 1: | ||
{{Historical}} | |||
{{Attention|Статья устарела. Более новая статья: [[ActiveDirectoryLogin]]}} | |||
== Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux == | == Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux == | ||
=== Задача | === Задача === | ||
Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux. | Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux. | ||
=== Дано | === Дано === | ||
# Windows Server 2003; | |||
# Simply Linux (обновленный до бранча 5.1); | |||
# Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена). | |||
=== Устанавливаем необходимые пакеты === | |||
samba-swat | samba-swat | ||
samba-client | samba-client | ||
samba-winbind | |||
krb5-kinit | krb5-kinit | ||
libkrb5 | libkrb5 | ||
Строка 20: | Строка 23: | ||
pam_mount | pam_mount | ||
=== Настраиваем сетевое соединение === | |||
Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена DC3.OFFICE.DOMEN.LOCAL, а его ip адрес 192.168.10.11. Он же является DNS и WINS сервером в сети. | Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена -- DC3.OFFICE.DOMEN.LOCAL, а его ip-адрес -- 192.168.10.11. Он же является DNS- и WINS-сервером в сети. | ||
Проверяем его доступность по ip адресу: | Проверяем его доступность по ip-адресу: | ||
ping 192.168.10.11 | ping 192.168.10.11 | ||
Строка 36: | Строка 39: | ||
ping: unknown host DC3 | ping: unknown host DC3 | ||
Для того | Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить. | ||
Проверяем его доступность по имени узла: | Проверяем его доступность по имени узла: | ||
Строка 50: | Строка 53: | ||
127.0.0.1 wslinux.office.domen.local wslinux | 127.0.0.1 wslinux.office.domen.local wslinux | ||
По имени DC3 узел отвечает, но вот если попробовать его пинговать указав полное имя домена DC3.OFFICE.DOMEN.LOCAL | По имени DC3 узел отвечает, но вот если попробовать его пинговать, указав полное имя домена DC3.OFFICE.DOMEN.LOCAL -- получим ошибку: | ||
ping DC3.OFFICE.DOMEN.LOCAL | ping DC3.OFFICE.DOMEN.LOCAL | ||
Строка 72: | Строка 75: | ||
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms | 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms | ||
=== Настраиваем сервисы самбы === | |||
Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута: | Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута: | ||
Строка 80: | Строка 83: | ||
Смотрим на каких уровнях запускается самба, если ничего не задано | Смотрим, на каких уровнях запускается самба, если ничего не задано -- включаем нужные уровни: | ||
# chkconfig --levels 2345 smb on | # chkconfig --levels 2345 smb on | ||
Строка 87: | Строка 90: | ||
# chkconfig --list | grep smb | # chkconfig --list | grep smb | ||
smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off | smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off | ||
Делаем то же самое для winbind: | |||
# chkconfig --list | grep winbind | |||
winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off | |||
# chkconfig --levels 2345 winbind on | |||
Запускаем сервис самба: | Запускаем сервис самба: | ||
Строка 93: | Строка 103: | ||
# service smb start | # service smb start | ||
Чтобы сервис swat запускался автоматически: в файле /etc/ | Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу: | ||
# service xinetd restart | # service xinetd restart | ||
Запускаем swat в браузере: http://localhost:901 | Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно) | ||
Во вкладке GLOBALS ставим следующие значения: | Во вкладке GLOBALS ставим следующие значения: | ||
Workgroup = OFFICE (указываем первую часть имени домена) | Workgroup = OFFICE (указываем первую часть имени домена) | ||
Realm = OFFICE.DOMEN.LOCAL (полное имя домена) | Realm = OFFICE.DOMEN.LOCAL (полное имя домена) | ||
Netbios name = WSLINUX (netbios имя нашего компьютера) | Netbios name = WSLINUX (netbios имя нашего компьютера) | ||
Security = ads (это режим domain member) | |||
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view: | Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный): | ||
# ip адрес контроллера домена | # ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать) | ||
Password server = 192.168.10.11 | Password server = 192.168.10.11 | ||
Строка 114: | Строка 124: | ||
idmap uid = 10000 - 40000 | idmap uid = 10000 - 40000 | ||
idmap gid = 10000 - 40000 | idmap gid = 10000 - 40000 | ||
winbind enum users = yes | |||
winbind enum groups = yes | winbind enum groups = yes | ||
# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп | # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп | ||
Строка 128: | Строка 139: | ||
winbind refresh tickets = yes | winbind refresh tickets = yes | ||
Снова подтверждаем изменения. Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает). | Снова подтверждаем изменения ('''сохранить изменения'''). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает). | ||
=== Настраиваем синхронизацию времени с нашим контроллером домена === | |||
Проверяем уровни запуска службы: | Проверяем уровни запуска службы: | ||
Строка 155: | Строка 166: | ||
# service ntpd start | # service ntpd start | ||
=== Настраиваем службу аутентификации для получения билетов Kerberos === | |||
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. | Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть): | ||
Приводим | |||
[libdefaults] | [libdefaults] | ||
default_realm = OFFICE.DOMEN.LOCAL | default_realm = OFFICE.DOMEN.LOCAL | ||
Строка 175: | Строка 180: | ||
OFFICE.DOMEN.LOCAL = { | OFFICE.DOMEN.LOCAL = { | ||
kdc = 192.168.10.11 | kdc = 192.168.10.11 | ||
} | } | ||
Строка 190: | Строка 194: | ||
krb4_convert = false | krb4_convert = false | ||
} | } | ||
:'''NB:''' При отсутствии параметра admin_server, у пользователя будет отсутствовать возможность сменить свой пароль средствами Kerberos --[[Участник:AlekseyAvdeev|solo]] 14:03, 2 ноября 2012 (MSK) | |||
Пробуем получить билет авторизации: | Пробуем получить билет авторизации: | ||
Строка 196: | Строка 202: | ||
Password for mad_max@OFFICE.DOMEN.LOCAL: | Password for mad_max@OFFICE.DOMEN.LOCAL: | ||
где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена (именно заглавными). | |||
Если все прошло хорошо в ответ на этот запрос вы ответа не получите. | Если все прошло хорошо, в ответ на этот запрос вы ответа не получите. | ||
Проверяем наличие билета командой klist, вывод должен быть примерно такой: | Проверяем наличие билета командой klist, вывод должен быть примерно такой: | ||
Строка 217: | Строка 223: | ||
gshadow: files | gshadow: files | ||
Чтобы | Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду: | ||
# ldconfig | # ldconfig | ||
=== Вводим в домен === | |||
Для ввода в домен необходимо дать команду: | Для ввода в домен необходимо дать команду: | ||
Строка 230: | Строка 236: | ||
Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL' | Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL' | ||
где admin -- имя доменного админа, а admin's password — пароль доменного админа. | |||
:'''NB:''' Для корректного ввода в домен может потребоваться предварительный останов демонов smb и winbind --[[Участник:AlekseyAvdeev|solo]] 14:12, 2 ноября 2012 (MSK) | |||
Проверить что мы вошли в домен можно командой wbinfo -u (велика вероятность что она отработает только после перезагрузки компьютера): | Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера): | ||
$ wbinfo -u | $ wbinfo -u | ||
Строка 241: | Строка 249: | ||
… | … | ||
Для того чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind необходимо | Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить {{path|/etc/pam.d/gdm}} или {{path|/etc/pam.d/lightdm}} в прежнем виде: | ||
<source lang="text">#%PAM-1.0 | |||
auth required pam_shells.so | |||
auth required pam_succeed_if.so quiet uid ne 0 | |||
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin | |||
auth substack common-login | |||
auth optional pam_gnome_keyring.so | |||
account include common-login | |||
password include common-login | |||
session substack common-login | |||
session optional pam_console.so | |||
-session optional pam_ck_connector.so | |||
session required pam_namespace.so | |||
session optional pam_gnome_keyring.so auto_start</source> | |||
(Для KDE4 это файл /etc/pam.d/kde4) | |||
А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать): | |||
<source lang="text">#%PAM-1.0 | |||
auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok | |||
auth requisite pam_succeed_if.so uid >= 500 quiet | |||
auth required pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE | |||
auth required pam_permit.so | |||
account [success=2 default=ignore] pam_tcb.so shadow fork | |||
account requisite pam_succeed_if.so uid >= 500 quiet | |||
account required pam_winbind.so use_first_pass | |||
account required pam_permit.so | |||
password required pam_passwdqc.so config=/etc/passwdqc.conf | |||
password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb | |||
password requisite pam_succeed_if.so uid >= 500 quiet | |||
password required pam_winbind.so | |||
session [success=2 default=ignore] pam_tcb.so | |||
session requisite pam_succeed_if.so uid >= 500 quiet | |||
session required pam_winbind.so | |||
session required pam_mktemp.so | |||
session required pam_mkhomedir.so silent | |||
session required pam_limits.so</source> | |||
И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать): | |||
<source lang="text">#%PAM-1.0 | |||
auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass | |||
auth requisite pam_succeed_if.so uid >= 500 quiet | |||
auth required pam_winbind.so use_first_pass | |||
auth required pam_permit.so | |||
password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb | |||
password requisite pam_succeed_if.so uid >= 500 quiet | |||
password required pam_winbind.so use_authtok | |||
password required pam_permit.so</source> | |||
Не забываем переключить авторизацию на winbind | |||
:('''Внимание!''' Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход - см.Примечание --[[Участник:Tora-bora|Tora-bora]] 19:02, 19 октября 2012 (MSD)) | |||
# control system-auth winbind | |||
С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh. | |||
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем. | |||
=== Добавляем пользователей с административными привилегиям (sudo) === | |||
Разрешаем всем вызывать sudo: | |||
# control sudo public | |||
Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля: | |||
# echo '%OFFICE\\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers | |||
=== Настраиваем автомонтирование сетевых ресурсов === | |||
Устанавливаем smbnetfs, samba, samba-client, fuse-smb. | |||
Создаем /etc/fuse.conf и добавляем запись: | |||
user_allow_other (не забываем нажимать enter после строчки) | |||
Добавляем в /etc/modules запись: | |||
fusermount public (не забываем нажимать enter после строчки) | |||
Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/ | |||
Копируем /etc/samba/smb.conf в /home/%username%/.smb/ | |||
Добавляем пользователя в группу fuse. | |||
Создаем в домашнем каталоге каталог (например) /home/%username%/net | |||
Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием: | |||
#!/bin/sh | |||
smbnetfs /home/%username%/net | |||
Делаем скрипт исполняемым и помещаем в автозапуск, например в .bash_profile. | |||
=== Библиография === | |||
Инструкция составлена с применением следующих ресурсов: | |||
* [http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html] | |||
* https://docs.altlinux.org/ru-RU/archive/2.2/html-single/master/admin-html/ch12s07.html | |||
* [http://team.ru/soft/altlinux_domen.shtml http://team.ru/soft/altlinux_domen.shtml] | |||
* [http://forum.altlinux.org/index.php?topic=376.0 http://forum.altlinux.org/index.php?topic=376.0] | |||
* [http://help.ubuntu.ru/wiki/ввод_в_домен_windows http://help.ubuntu.ru/wiki/ввод_в_домен_windows] | |||
===Примечание=== | |||
====KDesktop==== | |||
На KDesktop мне не удалось настроить вход в домен AD используя | |||
# control system-auth winbind | |||
Взамен этого можно сделать некоторые ручные манипуляции | |||
* делаем ссылку system-auth указывающую на system-auth-winbind | |||
* делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind | |||
* файл /etc/pam.d/kde4 приводим к виду: | |||
#%PAM-1.0 | #%PAM-1.0 | ||
auth required pam_group.so | |||
auth include system-auth-winbind | auth include system-auth-winbind | ||
auth required pam_nologin.so | auth required pam_nologin.so | ||
Строка 256: | Строка 373: | ||
password include system-auth-winbind | password include system-auth-winbind | ||
session include system-auth-winbind | session include system-auth-winbind | ||
* файл /etc/pam.d/kde4-kscreensaver приводим к виду: | |||
#%PAM-1.0 | |||
auth required pam_securetty.so | |||
auth required pam_nologin.so | |||
auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login | |||
auth sufficient pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass | |||
====Доступ к локальным группам==== | |||
:'''Внимание!''' Указанное ниже является не полностью безопасным решением, применяйте, если понимаете риск. | |||
Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf | |||
*;*;*;Al0000-2400;wheel,audio,cdrom,cdwriter,vboxusers,scanner | |||
*первая звездочка - «все сервисы», они же - пути авторизации (например, xdm, kdm, su, ssh и т.д. и т.п.) | |||
*вторая звездочка - «все tty». | |||
*третья звездочка - «все пользователи». Тут можно сделать вышеупомянутое перечисление, через запятую. | |||
*четвертое поле - это время. Здесь - «круглосуточно» | |||
*пятое поле - в какие, собственно группы надо включить пользователя. | |||
И включить строку | |||
auth required pam_group.so | |||
в конф. файл входа в систему( для KDE это /etc/pam.d/kde4) | |||
====Переустановка==== | |||
После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется) | |||
chown -R ivanov /home/DOMAIN/ivanov/ | |||
====Смена имени хоста==== | |||
Если нужно сменить имя хоста, править HOSTNAME в файле <code>/etc/sysconfig/network</code> | |||
====Два IP-адреса==== | |||
Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться. | |||
== Дополнения == | |||
* В случае появления ошибки ''ERROR_DNS_GSS_ERROR'', удалите пакет {{pkg|hostname-hook-hosts}} и удалите из {{path|/etc/hosts}} строку определения | |||
127.0.0.1 <имя хоста>... | |||
== Настройка LightDM == | |||
В {{path|/etc/lightdm/lightdm.conf}} раскомментируйте строку в группе {{cmd|[SeatDefaults]}}: | |||
greeter-hide-users=true | |||
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей. | |||
Также полезно выключить выбор языка. В файле {{path|/etc/lightdm/lightdm-gtk-greeter.conf}} в группе {{cmd|[greeter]}} укажите | |||
show-language-selector=false | |||
В новых версиях lightdm-gtk-greeter можно указать кнопки явно: | |||
show-indicators=a11y;power | |||
Полный перечень доступных кнопок: | |||
show-indicators=a11y;power;session;language | |||
== Ссылки == | |||
* [http://help.ubuntu.ru/wiki/ввод_в_домен_windows Ввод компьютера в домен Windows (под Ubuntu)] | |||
* [https://lists.samba.org/archive/samba/2012-December/170262.html Отладка аутентификации] | |||
* https://help.ubuntu.com/community/ActiveDirectoryWinbindHowto | |||
{{Category navigation|title=Домен|category=Домен|sortkey={{SUBPAGENAME}}}} |
Текущая версия от 16:19, 21 декабря 2023
Ввод в домен на базе Win 2003 рабочей станции под управлением Simply Linux
Задача
Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.
Дано
- Windows Server 2003;
- Simply Linux (обновленный до бранча 5.1);
- Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена).
Устанавливаем необходимые пакеты
samba-swat samba-client samba-winbind krb5-kinit libkrb5 ntpdate pam_mount
Настраиваем сетевое соединение
Необходимо добиться резолва имен ваших машин в сети. Например, имя контроллера домена -- DC3.OFFICE.DOMEN.LOCAL, а его ip-адрес -- 192.168.10.11. Он же является DNS- и WINS-сервером в сети.
Проверяем его доступность по ip-адресу:
ping 192.168.10.11 PING 192.168.10.11 (192.168.10.11) 56(84) bytes of data. 64 bytes from 192.168.10.11: icmp_seq=1 ttl=128 time=0.138 ms 64 bytes from 192.168.10.11: icmp_seq=2 ttl=128 time=0.217 ms
Проверяем его доступность по имени узла:
ping DC3 ping: unknown host DC3
Для того, чтобы узел отвечал по имени, необходимо указать домен поиска OFFICE.DOMEN.LOCAL. В Центре Управления Системой это указывается в настройках сетевого интерфейса в поле Домены поиска. Не забываем нажать Применить.
Проверяем его доступность по имени узла:
ping DC3 PING DC3.office.domen.local (192.168.10.11) 56(84) bytes of data. 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.137 ms 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.147 ms
В файл /etc/hosts добавляем запись о нашей машине:
127.0.0.1 localhost.localdomain localhost 127.0.0.1 wslinux.office.domen.local wslinux
По имени DC3 узел отвечает, но вот если попробовать его пинговать, указав полное имя домена DC3.OFFICE.DOMEN.LOCAL -- получим ошибку:
ping DC3.OFFICE.DOMEN.LOCAL ping: unknown host DC3.OFFICE.DOMEN.LOCAL
И соответственно в домен машину мы ввести не сможем. Ищем файл /etc/nsswitch.conf, в нем строку с hosts:
У по умолчанию она имеет вид:
hosts: files nisplus nis mdns4_minimal [NOTFOUND=return] dns mdns4 fallback
И приводим ее к такому виду:
hosts: files dns nisplus nis mdns4_minimal [NOTFOUND=return] mdns4 fallback
Сохраняем изменения и проверяем:
ping DC3.OFFICE.DOMEN.LOCAL PING DC3.OFFICE.DOMEN.LOCAL (192.168.10.11) 56(84) bytes of data. 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=1 ttl=128 time=0.201 ms 64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=2 ttl=128 time=0.133 ms
Настраиваем сервисы самбы
Теперь необходимо включить в автозапуск необходимые службы. Выполним следующие команды от рута:
# chkconfig --list | grep smb smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Смотрим, на каких уровнях запускается самба, если ничего не задано -- включаем нужные уровни:
# chkconfig --levels 2345 smb on
Проверяем:
# chkconfig --list | grep smb smb 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Делаем то же самое для winbind:
# chkconfig --list | grep winbind winbind 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# chkconfig --levels 2345 winbind on
Запускаем сервис самба:
# service smb start
Чтобы сервис swat запускался автоматически: в файле /etc/xinetd.d/swat меняем значение disable с yes на no и перезапускаем службу:
# service xinetd restart
Запускаем swat в браузере: http://localhost:901 (либо же правим /etc/samba/smb.conf соотвественно)
Во вкладке GLOBALS ставим следующие значения:
Workgroup = OFFICE (указываем первую часть имени домена) Realm = OFFICE.DOMEN.LOCAL (полное имя домена) Netbios name = WSLINUX (netbios имя нашего компьютера) Security = ads (это режим domain member)
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последние значения настраиваем, переключившись в режим advanced view (сложный):
# ip-адрес контроллера домена (в новой версии при Security = ads строку Password server требуется замаскировать) Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп. idmap uid = 10000 - 40000 idmap gid = 10000 - 40000 winbind enum users = yes winbind enum groups = yes
# Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп # будут использоваться с доменом, т.е. вместо username - DOMAIN\username. winbind use default domain = yes
# Если вы хотите разрещить использовать командную строку для пользователей домена, то # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false template shell = /bin/bash
# Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку winbind refresh tickets = yes
Снова подтверждаем изменения (сохранить изменения). Далее во вкладке STATUS запускаем или перезапускаем службы, Restart All (замечу что winbindd на этом этапе еще не работает).
Настраиваем синхронизацию времени с нашим контроллером домена
Проверяем уровни запуска службы:
# chkconfig --list | grep ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
Задаем необходимые:
# chkconfig --levels 345 ntpd on
Добавляем в конфигурационный файл /etc/ntpd.conf запись о сервере времени для синхронизации, все остальное комментируем:
#servers pool.ntp.org servers 192.168.10.11
Запускаем синхронизацию времени:
# ntpdate 192.168.10.11 17 Aug 11:03:44 ntpdate[14747]: step time server 192.168.10.11 offset 82.524429 sec
И только после этого запускаем службу:
# service ntpd start
Настраиваем службу аутентификации для получения билетов Kerberos
Для того что бы Kerberos производил аутентификацию на контролере домена, а не на локальной машине, правим /etc/krb5.conf. Приводим его к виду (обратите внимание на регистр, где заглавными, так и должно быть):
[libdefaults] default_realm = OFFICE.DOMEN.LOCAL dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] OFFICE.DOMEN.LOCAL = { kdc = 192.168.10.11 } [domain_realm] .office.domen.local = OFFICE.DOMEN.LOCAL office.domen.local = OFFICE.DOMEN.LOCAL [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
- NB: При отсутствии параметра admin_server, у пользователя будет отсутствовать возможность сменить свой пароль средствами Kerberos --solo 14:03, 2 ноября 2012 (MSK)
Пробуем получить билет авторизации:
# kinit admin@OFFICE.DOMEN.LOCAL Password for mad_max@OFFICE.DOMEN.LOCAL:
где admin -- имя доменного админа, а OFFICE.DOMEN.LOCAL -- имя вашего домена (именно заглавными).
Если все прошло хорошо, в ответ на этот запрос вы ответа не получите.
Проверяем наличие билета командой klist, вывод должен быть примерно такой:
# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: admin@OFFICE.DOMEN.LOCAL Valid starting Expires Service principal 08/17/10 11:11:58 08/17/10 21:12:04 krbtgt/OFFICE.DOMEN.LOCAL@OFFICE.DOMEN.LOCAL renew until 08/18/10 11:11:58
Правим /etc/nsswitch.conf примерно до такого вида:
passwd: files winbind shadow: tcb files winbind group: files winbind gshadow: files
Чтобы изменения в конфиге /etc/nsswitch.conf вступили в силу без перезагрузки, нужно от рута дать команду:
# ldconfig
Вводим в домен
Для ввода в домен необходимо дать команду:
# net ads join -U admin admin's password: Using short domain name -- OFFICE Joined 'WSLINUX' to realm 'OFFICE.DOMEN.LOCAL'
где admin -- имя доменного админа, а admin's password — пароль доменного админа.
- NB: Для корректного ввода в домен может потребоваться предварительный останов демонов smb и winbind --solo 14:12, 2 ноября 2012 (MSK)
Проверить, что мы вошли в домен можно командой wbinfo -u (велика вероятность, что она отработает только после перезагрузки компьютера):
$ wbinfo -u OFFICE\гость OFFICE\администратор OFFICE\user1 OFFICE\user2 …
Для того, чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind, необходимо оставить /etc/pam.d/gdm или /etc/pam.d/lightdm в прежнем виде:
#%PAM-1.0
auth required pam_shells.so
auth required pam_succeed_if.so quiet uid ne 0
auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
auth substack common-login
auth optional pam_gnome_keyring.so
account include common-login
password include common-login
session substack common-login
session optional pam_console.so
-session optional pam_ck_connector.so
session required pam_namespace.so
session optional pam_gnome_keyring.so auto_start
(Для KDE4 это файл /etc/pam.d/kde4)
А /etc/pam.d/system-auth-winbind к виду (если его нет, то создать):
#%PAM-1.0
auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth required pam_permit.so
account [success=2 default=ignore] pam_tcb.so shadow fork
account requisite pam_succeed_if.so uid >= 500 quiet
account required pam_winbind.so use_first_pass
account required pam_permit.so
password required pam_passwdqc.so config=/etc/passwdqc.conf
password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password requisite pam_succeed_if.so uid >= 500 quiet
password required pam_winbind.so
session [success=2 default=ignore] pam_tcb.so
session requisite pam_succeed_if.so uid >= 500 quiet
session required pam_winbind.so
session required pam_mktemp.so
session required pam_mkhomedir.so silent
session required pam_limits.so
И /etc/pam.d/system-auth-use_first_pass-winbind к виду(если его нет, то создать):
#%PAM-1.0
auth [success=2 default=ignore] pam_tcb.so shadow fork prefix=$2y$ count=8 nullok use_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth required pam_winbind.so use_first_pass
auth required pam_permit.so
password [success=2 default=ignore] pam_tcb.so use_authtok shadow fork prefix=$2y$ count=8 nullok write_to=tcb
password requisite pam_succeed_if.so uid >= 500 quiet
password required pam_winbind.so use_authtok
password required pam_permit.so
Не забываем переключить авторизацию на winbind
- (Внимание! Восле такой манипуляции на KDesktop 6 пропадает возможность залогиниться вообще, поэтому я решил сделать обход - см.Примечание --Tora-bora 19:02, 19 октября 2012 (MSD))
# control system-auth winbind
С такими конфигами будет работать авторизация из gdm, gnome-screensaver, ssh.
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить один ньюанс. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
Добавляем пользователей с административными привилегиям (sudo)
Разрешаем всем вызывать sudo:
# control sudo public
Разрешаем группе администраторов LinuxAdmins (должна быть создана) повышать свои привилегии без запроса пароля:
# echo '%OFFICE\\LinuxAdmins ALL= NOPASSWD : ALL' >> /etc/sudoers
Настраиваем автомонтирование сетевых ресурсов
Устанавливаем smbnetfs, samba, samba-client, fuse-smb.
Создаем /etc/fuse.conf и добавляем запись:
user_allow_other (не забываем нажимать enter после строчки)
Добавляем в /etc/modules запись:
fusermount public (не забываем нажимать enter после строчки)
Копируем /usr/share/doc/smbnetfs/smbnetfs.conf в /home/%username%/.smb/
Копируем /etc/samba/smb.conf в /home/%username%/.smb/
Добавляем пользователя в группу fuse.
Создаем в домашнем каталоге каталог (например) /home/%username%/net
Создаем скрипт запуска в удобном для нас месте (например) /home/%username%/.smb/net со следующим содержанием:
#!/bin/sh smbnetfs /home/%username%/net
Делаем скрипт исполняемым и помещаем в автозапуск, например в .bash_profile.
Библиография
Инструкция составлена с применением следующих ресурсов:
- http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.html
- https://docs.altlinux.org/ru-RU/archive/2.2/html-single/master/admin-html/ch12s07.html
- http://team.ru/soft/altlinux_domen.shtml
- http://forum.altlinux.org/index.php?topic=376.0
- http://help.ubuntu.ru/wiki/ввод_в_домен_windows
Примечание
KDesktop
На KDesktop мне не удалось настроить вход в домен AD используя
# control system-auth winbind
Взамен этого можно сделать некоторые ручные манипуляции
- делаем ссылку system-auth указывающую на system-auth-winbind
- делаем ссылку system-auth-use_first_pass указывающую на system-auth-use_first_pass-winbind
- файл /etc/pam.d/kde4 приводим к виду:
#%PAM-1.0 auth required pam_group.so auth include system-auth-winbind auth required pam_nologin.so account include system-auth-winbind password include system-auth-winbind session include system-auth-winbind
- файл /etc/pam.d/kde4-kscreensaver приводим к виду:
#%PAM-1.0 auth required pam_securetty.so auth required pam_nologin.so auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login auth sufficient pam_tcb.so shadow fork prefix=$2a$ count=8 nullok use_first_pass
Доступ к локальным группам
- Внимание! Указанное ниже является не полностью безопасным решением, применяйте, если понимаете риск.
Чтобы все доменные пользователи были включены в определенные локальные группы (могли переключаться в root, запускать VirtualBOX и проч.) нужно добавить в /etc/security/group.conf
*;*;*;Al0000-2400;wheel,audio,cdrom,cdwriter,vboxusers,scanner
- первая звездочка - «все сервисы», они же - пути авторизации (например, xdm, kdm, su, ssh и т.д. и т.п.)
- вторая звездочка - «все tty».
- третья звездочка - «все пользователи». Тут можно сделать вышеупомянутое перечисление, через запятую.
- четвертое поле - это время. Здесь - «круглосуточно»
- пятое поле - в какие, собственно группы надо включить пользователя.
И включить строку
auth required pam_group.so
в конф. файл входа в систему( для KDE это /etc/pam.d/kde4)
Переустановка
После переустановки системы (при сохранении раздела /home) необходимо выставить владельца домашнего каталога доменного пользователя (владелец меняется)
chown -R ivanov /home/DOMAIN/ivanov/
Смена имени хоста
Если нужно сменить имя хоста, править HOSTNAME в файле /etc/sysconfig/network
Два IP-адреса
Замечены проблемы со входом доменного пользователя при наличии двух IP-адресов. На этапе первого входа пользователя лучше от второго IP временно отказаться.
Дополнения
- В случае появления ошибки ERROR_DNS_GSS_ERROR, удалите пакет hostname-hook-hosts и удалите из /etc/hosts строку определения
127.0.0.1 <имя хоста>...
Настройка LightDM
В /etc/lightdm/lightdm.conf раскомментируйте строку в группе [SeatDefaults]:
greeter-hide-users=true
Это позволит вводить имя пользователя вручную, а не прокручивать огромный список доступных доменныx пользователей.
Также полезно выключить выбор языка. В файле /etc/lightdm/lightdm-gtk-greeter.conf в группе [greeter] укажите
show-language-selector=false
В новых версиях lightdm-gtk-greeter можно указать кнопки явно:
show-indicators=a11y;power
Полный перечень доступных кнопок:
show-indicators=a11y;power;session;language