Здравствуйте уважаемые форумчане.
В общем задался такой задачей и параллельно начал писать инструкцию. Споткнулся на последнем шаге. Может знающие подскажут как это сделать и укажут на ошибки. Заранее спасибо!
Задача:
Ввести в домен на базе Winows Server 2003 машину под управлением Simply Linux.
Дано:
1) Windows Server 2003;
2) Simply Linux (обновленный до бранча 5.1);
3) Права администратора домена OFFICE.DOMEN.LOCAL (имя вашего домена).
Устанавливаем необходимые пакеты.
samba-swat
samba-client
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
64 bytes from 192.168.10.11: icmp_seq=3 ttl=128 time=0.127 ms
64 bytes from 192.168.10.11: icmp_seq=4 ttl=128 time=0.181 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
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=3 ttl=128 time=0.144 ms
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=4 ttl=128 time=0.134 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
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=3 ttl=128 time=0.134 ms
64 bytes from dc3.office.domen.local (192.168.10.11): icmp_seq=4 ttl=128 time=0.136 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
Запускаем сервис самба:
# service smb start
Чтобы сервис swat запускался автоматически: в файле /etc/xinet.d/swat меняем значение disable с yes на no и перезапускаем службу:
# service xinetd restart
Запускаем swat в браузере:
http://localhost:901Во вкладке GLOBALS ставим следующие значения:
Security = ads (это режим domain member)
Workgroup = OFFICE (указываем первую часть имени домена)
Realm = OFFICE.DOMEN.LOCAL (полное имя домена)
Netbios name = WSLINUX (netbios имя нашего компьютера)
Подтверждаем изменения нажав кнопку commit changes наверху страницы. И последнее значение настраиваем, переключившись в режим advanced view:
# ip адрес контроллера домена
Password server = 192.168.10.11
# Диапазоны идентификаторов для виртуальных пользователей и групп.
idmap uid = 10000 - 40000
idmap gid = 10000 - 40000
winbind enum groups = yes
winbind enum users = 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.
Я сделал так, создал копию оригинального файла /etc/krb5.conf.origin и только после этого приступил к редактированию krb5.conf.
Приводим krb5.conf к виду (обратите внимание на регистр, где заглавными, так и должно быть):
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[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
default_domain = office.domen.local
}
[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
}
Ну вот и закончили с настройкой Kerberos. Теперь пробуем подключится. Открываем терминал и пробуем получить билет авторизации:
# 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 — пароль доменного админа.
Проверить что мы вошли в домен можно командой wbinfo -u (у меня она отработала только после перезагрузки компа):
$ wbinfo -u
OFFICE\гость
OFFICE\администратор
OFFICE\user1
OFFICE\user2
…
Для того чтобы в нашу систему можно было логиниться под доменными аккаунтами и авторизация шла через winbind необходимо привести /etc/pam.d/gdm к виду:
#%PAM-1.0
#auth required pam_env.so
#auth include system-auth
#auth required pam_nologin.so
#account include system-auth
#password include system-auth
#session include system-auth
#session optional pam_console.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
session optional pam_console.so
А /etc/pam.d/system-auth-winbind к виду:
#%PAM-1.0
auth required pam_securetty.so
auth required pam_nologin.so
#auth sufficient pam_winbind.so
auth sufficient pam_winbind.so krb5_auth krb5_ccache_type=FILE cached_login
auth include system-auth-use_first_pass
account sufficient pam_winbind.so
account include system-auth
password sufficient pam_winbind.so
password include system-auth-use_first_pass
# We use pam_mkhomedir to create home dirs for incoming domain users
# Note used umask, it will result in rwxr-x--x access rights
#session required pam_mkhomedir.so skel=/etc/skel/ umask=0026
session required pam_mkhomedir.so skel=/etc/skel/ umask=0077
session include system-auth
Перезагружаемся и можем логинится как локальными пользователями системы, так и доменными. Но стоить помнить одну вещь. Если логин вашего локального пользователя совпадает с доменным, то будет попытка входа только локальным пользователем.
Инструкция составлена с применением следующих ресурсов:
http://privats.ru/2009/08/integraciya-linux-centos-v-active-directory-part-1.htmlhttp://ftp.sumylug.osdn.org.ua/pub/mirrors/ftp.altlinux.org/Master/2.2/docs/admin-html/ch12s07.htmlhttp://team.ru/soft/altlinux_domen.shtmlhttp://forum.altlinux.org/index.php?topic=376.0;wap2=%D0%B2%D0%B2%D0%BE%D0%B4&s[]=%D0%B2&s[]=%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD]http://help.ubuntu.ru/wiki/%D0%B2%D0%B2%D0%BE%D0%B4_%D0%B2_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD_windows?s[]=%D0%B2%D0%B2%D0%BE%D0%B4&s[]=%D0%B2&s[]=%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD