CentOS: Samba сервер в домене

Всем нам, так или иначе, но приходится подниматься файловые сервера. И даже не важно — какого размера ваша компания или парк компьютеров — файловая шара пригодится всегда, как для обмена информации, или её централизованного хранения, либо как место хранения перемещаемых профилей доменных пользователей Windows (как пример — разберём именно эту ситуацию).

Для работы нам понадобятся 3 ващи: samba, winbind и kerberos, и ntp — устанавливаем:

korp# yum install samba samba-winbind ntp acl krb5-workstation

Первым делом нам нужно синхронизировать время на нашем linux-сервере с контролером домена, для этого мы отредактируем конфигурационный файл ntp:

korp# nano /etc/ntp.conf
server ad.domain.local

После чего первый раз синхронизируем время вручную:

korp# ntpdate ad.domain.local

и запустим ntpd, добавив его попутно в автозагрузку

korp# chkconfig ntpd on
korp# service ntpd start

Теперь мы переходим к настройке kerberos:

korp# nano /etc/krb5.conf
	[libdefaults]
	default_realm = DOMAIN.LOCAL

	[realms]
	DOMAIN.LOCAL = {
		kdc = ad.domain.local
		admin_server = ad.domain.local
		default_domain = domain.local
	}
	[domain_realm]
	.domain.local = DOMAIN.LOCAL
	domain.local = DOMAIN.LOCAL

После чего пробуем получить тикет для входа в домен:

korp# kinit Administrator@DOMAIN.LOCAL

Командой klist мы можем проверить выданный нам тикет

korp# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: Administrator@DOMAIN.LOCAL

Valid starting     Expires            Service principal
05/29/12 11:59:31  05/29/12 21:59:34  krbtgt/DOMAIN.LOCAL@DOMAIN.LOCAL
	renew until 05/29/12 21:59:31

Ну а теперь мы можем переходить к самому интересному — настройке samba:

korp# nano /etc/samba/smb.conf
[global]
	workgroup = DOMAIN
	server string = Samba Server on DOMAIN Version %v

	security = ads
	encrypt passwords = yes
	realm = DOMAIN.LOCAL
	password server = ad.domain.local

	idmap uid = 10000-20000
	idmap gid = 10000-20000
	winbind enum users = yes
	winbind enum groups = yes
	winbind separator = +
	
	obey pam restrictions = Yes
   	template homedir = /profiles/%U #директория, в которой будут храниться наши профиля, %U - имя авторизованного пользователя. соответственно у нас автоматически будут создаваться директории /profiles/user_name
	
[profiles]
	comment = user profiles
	path = /profiles/%U #путь для пользователя будет выглядеть как /profiles/user_name, что упростит нам задачу
	browseable = yes
	read only = no
	inherit acls = yes
	inherit permissions = yes
	create mask = 700
	directory mask = 700
	valid users = @"MTELECOM+domain users" #разрешаем доступ всем пользователям домена, прошедшим аутентификацию. 

Вы можете создать и отдельную группу в AD для доступа к серверу. Список групп можно посмотреть командой wbinfo -g, а список пользователей — wbinfo -u (для того что бы команды начали работать, необходимо запустить winbind, что мы сделаем немного позже, после его конфигурирования).

Теперь в файле nsswitch.conf нам нужно добавить что для доступа к AD мы будем использовать winbind (вообще winbind – это демон, работающий на клиентах samba и действующий как прокси для связи между PAM и NSS, работающими на компьютере linux, с одной стороны, и AD, работающей на контроллере домена, с другой. В частности, winbind использует kerberos для проверки подлинности с помощью AD и LDAP для получения информации о пользователях и группах).

korp# nano /etc/nsswitch.conf
	passwd:     files winbind
	group:      files win bind

К моему сожалению, в CentOS 6 пакет samba-common не содержит шаблон конфигурационного файла PAM-модулей, для аутентификации через сервис winbind (system-auth-winbind). По этому нам придётся создать его самостоятельно:

korp# nano /etc/pam.d/system-auth-winbind
	auth        required      pam_env.so
	auth        sufficient    pam_winbind.so
	auth        sufficient    pam_unix.so likeauth nullok use_first_pass
	auth        required      pam_deny.so
	
	account     sufficient    pam_winbind.so
	account     required      pam_unix.so
	
	password    required      pam_cracklib.so retry=3
	password    sufficient    pam_unix.so nullok use_authtok md5 shadow
	password    required      pam_deny.so
	
	session     required      pam_mkhomedir.so skel=/etc/skel/ umask=0022 
	session     required      pam_limits.so
	session     required      pam_unix.so

Так же, по непонятной мне причине, параметр session required pam_mkhomedir.so не работает из файла /etc/pam.d/system-auth-winbind, по этому нам придётся дополнительно его описать в файле /etc/pam.d/samba

korp# nano /etc/pam.d/samba
	session required pam_mkhomedir.so umask=0077

Теперь мы можем запустить samba и войти в домен:

korp# chkconfig smb on
korp# service smb start
korp# net ads join -U Administrator@DOMAIN.LOCAL

После чего мы должны получить сообщение о том, что наш сервер теперь является доменной машиной:

Using short domain name -- DOMAIN
Joined 'FILESERVER' to realm 'domain.local'

Помните, что вы должны вводить сервер в домен под учётной записью администратора домена, либо пользователем, имеющим права на ввод компьютеров в домен. Теперь запустим winbind и проверим — всех ли мы видим:

korp# service winbind start
korp# wbinfo -g
DOMAIN+domain guests
DOMAIN+domain users
DOMAIN+domain computers
...
korp# wbinfo -u
DOMAIN+administrator
DOMAIN+guest
...

Если всё видно, значит всё хорошо, нам остаётся лишь настроить фаервол, что бы он не блокировал порт samba (я как всегда напомню о своём любимом псевдоинтерфейсе system-config-firewall-tui) и перезагрузиться. После этого наш сервер готов к работе и всё что нам остаётся — на контролере домена указать месторасположение профиля пользователя. Так же не забудьте в DNS прописать ваш linux сервер.

т.к. в конфигурации samba мы указали path = /profiles/%U, то пользователь, при обращении к \\fileserver\profile будет попадать сразу в собственную директорию, что упрощает нам жизнь при создании пользователя (пусть до профиля у всех пользователей будет одинаков), так и то, что другие пользователи, просто физически не видят что там есть данные других пользователей, что в какой то мере сможет остановить многих шалунов 🙂

Надеюсь вам было интересно, полезно и у вас не возникнет проблем при настройке. Удачи.

Добавить комментарий