Все интересные записи перенесены по адресу:
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