Закончил руководство по вводу Ubuntu в Windows домен (применимо и к Samba4 доменам)

Jan 15, 2014 16:23



Все интересные записи перенесены по адресу: http://www.th22.ru/blog/
Ждем вас по новому адресу!

1. Скачиваем последнюю версию samba4 из git репозитария:
# apt-get install git
# git clone git://git.samba.org/samba.git samba-master

2. Устанавливаем зависимости из заметки:
http://acisi.livejournal.com/64008.html

Дополнительно нам понадобится libpam-dev и libctdb-dev:
# apt-get install libpam-dev
# aptitude install libctdb-dev

Для работы блока regedit необходим еще один пакет:
# aptitude install libncurses-dev

3. Собираем все это хозяйство со специальными ключиками:
# ./configure --with-ads --with-regedit --with-system-mitkrb5 --with-pam --enable-nss-wrapper
# make
# make install

Создаем каталог для хранения log-файлов:
# mkdir /var/log/samba/


4. Подготовим файл smb.conf в каталоге /etc/ и создадим на него симлинк в каталог /usr/local/samba/etc/
# mkdir /etc/samba

# cat /etc/samba/smb.conf
[global]
workgroup = MYDOMAIN
server string = INET-SERVER (Internet server)
server role = member server
security = ADS
encrypt passwords = true
log file = /var/log/samba/log.%m
max log size = 500
realm = MYDOMAIN.LOCAL
netbios name = INET-SERVER
dns proxy = no
log level = 5
winbind offline logon = true
client use spnego = yes
winbind enum groups = yes
winbind enum users = yes
winbind refresh tickets = yes
winbind use default domain = no
template shell = /bin/bash
map untrusted to domain = yes
idmap config * : backend = tdb
idmap config * : range = 20001-70000
idmap config INTERNAL : backend = ad
idmap config INTERNAL : range = 10000-20000
idmap config INTERNAL : base_rid = 0
auth methods = winbind

[data_vol]
comment = Data Volume directory
browseable = yes
writable = yes
path = /opt/storage/

[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

# ln -s /etc/samba/smb.conf /usr/local/samba/etc/smb.conf

5. Настраиваем керберос.
# mkdir /var/log/krd5

Конфигурационный файл керберос клиента настроенный на автоматическое определение параметров.
# cat /etc/krb5.conf
[libdefaults]
default_realm = MYDOMAIN.LOCAL
dns_lookup_realm = true
dns_lookup_kdc = true
forwardable = yes
clockskew = 600

[logging]
default = FILE:/var/log/krb5/krb5libs.log
kdc = FILE:/var/log/krb5/krb5kdc.log
admin_server = FILE:/var/log/krb5/kadmind.log

[appdefaults]
pam = {
debug = true
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
krb4_convert = false
proxiable = false
minimum_uid = 1
}

Проверяем получение kerberos билета от контроллера домена:
# kinit chernousov@MYDOMAIN.LOCAL
Password for chernousov@MYDOMAIN.LOCAL:

# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: chernousov@MYDOMAIN.LOCAL

Valid starting Expires Service principal
15/01/2014 02:20 15/01/2014 12:20 krbtgt/MYDOMAIN.LOCAL@MYDOMAIN.LOCAL
renew until 15/01/2014 12:20

Билет получе можно пробовать входить в домен.

6. Ввод рабочей станции в Windows домен:
# /usr/local/samba/bin/net ads join -U "MYDOMAIN\chernousov"
Enter MYDOMAIN\chernousov's password:
Using short domain name -- MYDOMAIN
Joined 'INET-SERVER' to dns domain 'mydomain.local'
No DNS domain configured for inet-server. Unable to perform DNS Update.
DNS update failed: NT_STATUS_INVALID_PARAMETER

Вход в домен прошел успешно, но динамическое обновление зон не сработало. В принципе это допустимо мы создадим запись руками.

7. Запускаем службы вручную для тестирования работоспособности:
# /usr/local/samba/sbin/smbd -D
# /usr/local/samba/sbin/nmbd -D
# /usr/local/samba/sbin/winbindd -D

Проверяем получает ли winbind список пользователей и групп из Windows домена.
# /usr/local/samba/bin/wbinfo -u
MYDOMAIN\sysadmin
MYDOMAIN\krbtgt
MYDOMAIN\anton
....

# /usr/local/samba/bin/wbinfo -g
MYDOMAIN\компьютеры домена
MYDOMAIN\пользователи домена
MYDOMAIN\гости домена
MYDOMAIN\контроллеры домена
MYDOMAIN\пользователь 1с
....

Этот этап отрабатывает коррекно. Переходим к следующиему этапу.

8. Создаем UpStart демонов и заглушки на старый тип инициализации

# cat /etc/init/smbd.conf
# Samba4 - samba4 daemon
#
# Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol
#

description "Samba background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon
respawn

exec /usr/local/samba/sbin/smbd

# cat /etc/init/nmbd.conf
# Samba4 - samba4 daemon
#
# Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol
#

description "Samba background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon
respawn

exec /usr/local/samba/sbin/nmbd

# cat /etc/init/winbindd.conf
# Samba4 - samba4 daemon
#
# Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol
#

description "Samba background program processing daemon"

start on runlevel [2345]
stop on runlevel [!2345]

expect daemon
respawn

exec /usr/local/samba/sbin/winbindd

# ln -s /lib/init/upstart-job /etc/init.d/smbd
# ln -s /lib/init/upstart-job /etc/init.d/nmbd
# ln -s /lib/init/upstart-job /etc/init.d/winbindd

Заглушки нужные для старой модели запуска/остановки например:
# /etc/init.d/smbd stop

Теперь можно попробовать перезагрузить сервер и проверить автостарт демонов.

9. Настройка локальной авторизации пользователей на сервере.
Изменим следующие строки в файле /etc/nssswitch.conf
passwd: files winbind
group: files winbind
shadow: files

Данный файл предоставляет системе сведения о том откуда брать сведения о пользователях (доменные пользователи становятся как-бы локальными), проверим работоспостобность.

Создадим символические ссылки на библиотеку libnss_winbind.so.2
# ln -s /usr/local/samba/lib/libnss_winbind.so.2 /lib/libnss_winbind.so
# ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2

Запрашиваем список локальных пользователей и групп, в данном списке должны так-же присутствовать и доменные пользователи:
# getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
....
MYDOMAIN\chernousov:*:20216:20001:Антон А. Черноусов:/home/MYDOMAIN/chernousov:/bin/bash

# getent group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:sysadmin
....
MYDOMAIN\компьютеры домена:x:20005:
MYDOMAIN\пользователи домена:x:20001:
MYDOMAIN\гости домена:x:20002:
MYDOMAIN\контроллеры домена:x:20006:

Первый запрос занимает около 15 секунд (в зависимости от количества групп), повторные запросы кэшируются.

Так-же необходимо проверить получение идентификаторов для доменных пользователей.
# id "MYDOMAIN\sysadmin"
uid=20001(MYDOMAIN\sysadmin) gid=20001(MYDOMAIN\пользователи домена) groups=20001(MYDOMAIN\пользователи домена),20056(MYDOMAIN\telnetclients),20010(MYDOMAIN\администраторы домена),20011(MYDOMAIN\администраторы предприятия),20023(MYDOMAIN\2gis distribution),20019(MYDOMAIN\pda),20008(MYDOMAIN\администраторы схемы),20022(MYDOMAIN\usb-irda)

Создаем ссылку на модуль авторизации pam_winbind.so:
# mkdir /lib/security
# ln -s /usr/local/samba/lib/security/pam_winbind.so /lib/security/pam_winbind.so

Изменяем pam модули отвечающие за локальную авторизацию:
# cat /etc/pam.d/common-account
account sufficient pam_winbind.so
account required pam_unix.so

# cat /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth sufficient pam_unix.so use_first_pass
auth required pam_deny.so

# cat /etc/pam.d/common-password
password sufficient pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password sufficient pam_winbind.so
password required pam_deny.so

# cat /etc/pam.d/common-session
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_winbind.so
session required pam_mkhomedir.so
session required pam_unix.so

Проверяем авторизацию доменных пользователей (так-же должны автоматически создаваться и домашние каталоги):

$ ssh "MYDOMAIN\chernousov"@192.168.0.25
MYDOMAIN\chernousov@192.168.0.25's password:
Creating directory '/home/MYDOMAIN/chernousov'.
Welcome to Ubuntu 12.04.4 LTS (GNU/Linux 3.8.0-35-generic i686)

MYDOMAIN\chernousov@InetServer:~$

10. Ограничиваем доступ на сервер и предоставляем доменным администраторам право выполнения sudo.
Определяем SID группы администраторов домена.
# /usr/local/samba/bin/wbinfo -n "MYDOMAIN\администраторы домена"
S-1-5-21-653063103-3886477052-2907232867-512 SID_DOM_GROUP (2)

Создаем файл /etc/security/pam_winbind.conf с указанием группы в которую должен входить пользователь для локального входа на сервер.
# cat /etc/security/pam_winbind.conf
[global]
require_membership_of = S-1-5-21-653063103-3886477052-2907232867-512

linux, samba 4, ubuntu

Previous post Next post
Up