В данном примеры я покажу как настроить Samba сервер под операционной системой Ubuntu 10.10 в интеграции совместо с Active Directory (polygon.local) и как использовать WinBind.
IP-адрес домен контроллера: 10.0.2.15
Имя домен контроллера: dc1.polygon.local
IP-адрес рабочей станции с операционной системой Ubuntu 10.10 – 10.0.2.16
ekzorchik@ekv:~$ sudo apt-get remove network-manager
ekzorchik@ekv:~$ sudo nano /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.0.2.16
netmask 255.255.255.0
ekzorchik@ekv:~$ cat /etc/resolv.conf
nameserver 10.0.2.15
domain polygon.local
search polygon.local
Исходные данные:
домен у нас установлен — это polygon.local
IP адрес домен контроллера — 10.0.2.15
Ubuntu Server 10.10 установлен
Обновляем репозитарии Ubuntu 10.10
ekzorchik@ekv:~$ sudo apt-get update
Устанавливаем в систему samba, krb5-user и winbind:
ekzorchik@ekv:~$ sudo apt-get install samba krb5-user winbind
На этапе установке пакетом предлагается предопределить настройки Kerberos 5 — ничего не вводим и нажимаем OK:
update-alternatives: используется `/usr/bin/smbstatus.samba3' для предоставления `/usr/bin/smbstatus' (smbstatus) в автоматический режим.
Generating /etc/default/samba...
Importing account for nobody...ok
Importing account for ekzorchik...ok
smbd start/running, process 2226
start: Job failed to start
Настраивается пакет winbind (2:3.5.4~dfsg-1ubuntu8.5) ...
* Starting the Winbind daemon winbind [ OK ]
Обрабатываются триггеры для libc-bin ...
ldconfig deferred processing now taking place
Создаем резервную копию конфигиругационного файла krb5.conf:
ekzorchik@ekv:~$ sudo cp /etc/krb5.conf /etc/krb5.conf.backup
Редактируем конфигурационный файл krb5.conf:
ekzorchik@ekv:~$ sudo nano /etc/krb5.conf
мой конфиг:
[libdefaults]
default_realm = POLYGON.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
# The following encryption type specification will be used by MIT Kerberos
# if uncommented. In general, the defaults in the MIT Kerberos code are
# correct and overriding these specifications only serves to disable new
# encryption types as they are added, creating interoperability problems.
#
# Thie only time when you might need to uncomment these lines and change
# the enctypes is if you have local software that will break on ticket
# caches containing ticket encryption types it doesn't know about (such as
# old versions of Sun Java).
# 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]
POLYGON.LOCAL = {
kdc = 10.0.2.15:88
admin_server = dc1.polygon.local
default_domain = polygon.local
}
[domain_realm]
.polygon.local = POLYGON.LOCAL
[login]
krb4_convert = true
krb4_get_tickets = false
Тестируем авторизацию Kerberos:
ekzorchik@ekv:~$ sudo kinit Administrator@POLYGON.LOCAL
kinit: Improper format of Kerberos configuration file while initializing Kerberos 5 library (Неправильный формат файла конфигурации Kerberos при инициализации библиотеки Kerberos 5 )
ekzorchik@ekv:~$ sudo kinit Administrator@POLYGON.LOCAL
kinit: Cannot resolve network address for KDC in realm "POLYGON.LOCAL" while getting initial credentials
Для решения нужно в файле /etc/krb5.conf в строке kdc = dc1.polygon.local, прописать вместо имени сервера его IP — адресс: kdc = 10.0.2.15:88
После запускаем инициализацию домена:
ekzorchik@ekv:~$ sudo kinit Administrator@POLYGON.LOCAL
Password for Administrator@POLYGON.LOCAL:
Password expired. You must change it now.
Enter new password:
Enter it again:
kinit: Cannot resolve network address for KDC in realm "POLYGON.LOCAL" while getting initial credentials
После внесению изменений в /etc/hosts:
ekzorchik@ekv:~$ sudo nano /etc/hosts
10.0.2.16 ekv # Added by NetworkManager
10.0.2.16 dc1
10.0.2.16 dc1.polygon.local
Инициализируем подключение к Polygon.local:
ekzorchik@ekv:~$ sudo kinit Administrator@POLYGON.LOCAL
Password for Administrator@POLYGON.LOCAL:
Password expired. You must change it now.
Enter new password: 712mbddr@
Enter it again: 712mbddr@
Password change rejected: . Please try again.
Вводим рабочие станции/сервера в домен вот с этим паролем:
Enter new password: 812mbddr@
Enter it again: 812mbddr@
ekzorchik@ekv:~$ sudo kinit Administrator@POLYGON.LOCAL
Password for Administrator@POLYGON.LOCAL: ввожу измененный пароль 812mbddr@
Как видим token я получил
ekzorchik@ekv:~$ sudo klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@POLYGON.LOCAL
Valid starting Expires Service principal
08/16/12 11:33:55 08/16/12 21:33:58 krbtgt/POLYGON.LOCAL@POLYGON.LOCAL
renew until 08/17/12 11:33:55
Настраиваем SAMBA:
Создаем резервную копию конфигиругационного файла smb.conf:
ekzorchik@ekv:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup
Редактируем конфигурационный файл smb.conf:
ekzorchik@ekv:~$ sudo nano /etc/samba/smb.conf
удаляем все из файла и приводим его к виду указанному ниже
[global]
workgroup = POLYGON
realm = POLYGON.LOCAL
netbios name = ekv (имя локальной станции Ubuntu)
server string = %h server (Samba %v, Ubuntu)
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = ADS
domain master = no
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
template homedir = /home/%D/%U
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
winbind separator = +
usershare allow guests = yes
Проверяем конфигурационный файл на предмет корректности:
ekzorchik@ekv:~$ sudo testparm.samba3
Load smb config files from /etc/samba/smb.conf
rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)
Loaded services file OK.
'winbind separator = +' might cause problems with group membership.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions
[global]
workgroup = POLYGON
realm = POLYGON.LOCAL
server string = %h server (Samba %v, Ubuntu)
security = ADS
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
domain master = No
dns proxy = No
usershare allow guests = Yes
panic action = /usr/share/samba/panic-action %d
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
Перезапускаем winbind сервис и Samba сервер:
Once the Samba configuration test has finished, then stop and start the winbind service and restart the Samba service:
ekzorchik@ekv:~$ sudo /etc/init.d/winbind stop
Stopping the Winbind daemon winbind [ OK ]
ekzorchik@ekv:~$ sudo service smbd restart
smbd start/running, process 2678
ekzorchik@ekv:~$ sudo /etc/init.d/winbind start
* Starting the Winbind daemon winbind [ OK ]
Добавляем систему Ubuntu 10.10 в Active Directory:
Понадобится учетная запись с правом добавления компьютера в домен, например учетка администратора домена POLYGON.LOCAL\ekzorchik.
ekzorchik@ekv:~$ sudo net.samba3 ads join -U ekzorchik -S DC1.POLYGON.LOCAL
Enter ekzorchik's password:
Using short domain name -- POLYGON
Joined 'EKV' to realm 'polygon.local'
[2012/08/16 13:14:34.749308, 0] utils/net_ads.c:1147(net_update_dns_internal)
net_update_dns_internal: Failed to connect to our DC!
DNS update failed!
Странно вроде выдается ошибка, но в Active Directory polygon.local создается запись о заведенном компьютере:
C:\Users\ekzorchik>dsquery computer -name ekv
"CN=ekv,CN=Computers,DC=polygon,DC=local"
Создаем резервную копию:
ekzorchik@ekv:~$ sudo cp /etc/nsswitch.conf /etc/nsswitch.conf.backup
Настроим специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory:
nsswitch.conf, задает источники информации об учетных записях. Учетные записи у нас теперь будут на контроллере домена, а источником информации о них будет служить winbind. Редактируем:
ekzorchik@ekv:~$ sudo nano /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files dns
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
После успешного внесения всех настроек перезагружаем samba и winbind сервисы:
ekzorchik@ekv:~$ sudo /etc/init.d/winbind stop
Stopping the Winbind daemon winbind [ OK ]
ekzorchik@ekv:~$ sudo service smbd restart
smbd start/running, process 2678
ekzorchik@ekv:~$ sudo /etc/init.d/winbind start
* Starting the Winbind daemon winbind [ OK ]
Убеждаемся, что winbind работает (показать пользователей домена):
ekzorchik@ekv:~$ sudo wbinfo -u
EKV+nobody
EKV+ekzorchik
administrator
guest
keiz
krbtgt
ekzorchik
dctest
test
Убеждаемся что winbind работает (показать группы домена):
ekzorchik@ekv:~$ sudo wbinfo -g
domain computers
domain controllers
schema admins
enterprise admins
cert publishers
domain admins
domain users
domain guests
group policy creator owners
ras and ias servers
allowed rodc password replication group
denied rodc password replication group
read-only domain controllers
enterprise read-only domain controllers
dnsadmins
dnsupdateproxy
dhcp users
dhcp administrators
Теперь, для проверки, подключился ли наш winbind к контроллеру и функционирует ли нормально, запустим:
ekzorchik@ekv:~$ sudo getent passwd | grep -E "POLYGON"
В результате мы должны увидеть наши локальные учетки и длинный список наших доменных учеток.
administrator:*:10001:10005:Administrator:/home/POLYGON/administrator:/bin/bash
guest:*:10002:10006:Guest:/home/POLYGON/guest:/bin/bash
keiz:*:10000:10005:keiz:/home/POLYGON/keiz:/bin/bash
krbtgt:*:10003:10005:krbtgt:/home/POLYGON/krbtgt:/bin/bash
ekzorchik:*:10004:10005:ekzorchik:/home/POLYGON/ekzorchik:/bin/bash
dctest:*:10005:10005:dctest:/home/POLYGON/dctest:/bin/bash
test:*:10006:10005:test:/home/POLYGON/test:/bin/bash
Отображаем информация о домен контроллер:
ekzorchik@ekv:~$ sudo net.samba3 ads info
LDAP server: 10.0.2.15
LDAP server name: dc1.polygon.local
Realm: POLYGON.LOCAL
Bind Path: dc=POLYGON,dc=LOCAL
LDAP port: 389
Server time: Чт., 16 авг. 2012 13:50:06 MSD
KDC server: 10.0.2.15
Server time offset: 0
Ну вот собственно и всё, я показал и разобрал, как напримере завести систему с операционной системой Ubuntu 10.10 в домен и авторизовать ее там.