Включаем Linux Slackware 10.2 в домен Windows 2003

Задача состоит включить файлсервер на платформе Linux Slackware 10.2 в домен windows 2003 и настроить авторизацию на сетевых ресурсах с использованимем учётных записей Windows Domain.

Что мы имеем:

  • Slackware 10.2 без X сервера.
  • Windows 2003 AD.

Что нам потребуется:

  • hemidal-0.7 (Kerberos)
  • OpenLDAP-2.3.20
  • Linux-PAM-0.99.3.0
  • Samba-3.0.21c

Как известно, Slackware упорно в стандартной сборке не имеет поддержку PAM. Давайте добавим. Если Slackware установлено без X сервера, то нам понадобится ряд библиотек для сборки pam:

  • libICE.so.6
  • libSM.so.6
  • libX11.so.6>
  • libXext.so.6
  • libXt.so.6

Найдём их где-нибудь ;) и скопируем их в /lib и сделаем "ldconfig".

Далее можно собирать pam:
 

/usr/local/src/Linux-PAM-0.99.3.0# ./configure --prefix=/usr
/usr/local/src/Linux-PAM-0.99.3.0# make
/usr/local/src/Linux-PAM-0.99.3.0# make install 

Далее соберём "hemidal": 

/usr/local/src/hemidal-0.7# ./configure --prefix=/usr
/usr/local/src/hemidal-0.7# make 
/usr/local/src/hemidal-0.7# make install

Итак поддержка Kerberos есть, далее можно собирать OpenLDAP:
 

/usr/local/src/OpenLDAP-2.3.20# ./configure --prefix=/usr --disable-slapd
--disable-slurpd
/usr/local/src/OpenLDAP-2.3.20# make depend
/usr/local/src/OpenLDAP-2.3.20# make
/usr/local/src/OpenLDAP-2.3.20# make install

Всё что нужно для включения самбы в домен собрано, можно собирать samba:
 

/usr/local/src/Samba-3.0.21c/source/# ./configure --prefix=/usr/local/samba
--with-ldap --with-ads --with-krb5 --with-pam --with-winbind
/usr/local/src/Samba-3.0.21c/source/# make && make install

Всё! Всё что нужно собрано, можно переходить к конфигам:

Убедимся что в "/etc/resolve.conf" имеется строчка:
 

nameserver 192.168.1.1 #(адрес dns)

Далее создаём "/etc/krb5.conf" следующего содержания:
 

[libdefaults]
        default_realm = DOMAIN.RU

[realms]
        DOMAIN.RU = {
                kdc = controller.domain.ru
        }

[domain_realms]
        .controller.domain.ru = DOMAIN.RU

"/usr/local/samba/lib/smb.conf" (создаём, если нету).
 

[global]

realm = DOMAIN.RU
workgroup=DOMAIN
password server = controller.domain.ru
security = ADS
encrypt passwords = yes
winbind separator = + 
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users=yes
winbind enum groups=yes

[public]
comment = Public
read only = no
path = /public #публичная для домена папка

Далее, по какой то причине самба при установке не скидывает библиотеки "libnss_winbind.so" и "pam_winbind.so" в папки с расшареными либами. Находим их в откомпилированом дистрибе samba ("./source/nsswitch") и копируем "pam_winbind.so" в "/lib/security/", "libnss_winbind.so" в "/lib/". Далее делаем "ldconfig".

Создаём каталог "/etc/pam.d" куда помещаем файл "samba" следующего содержания:
 

auth required /lib/security/pam_winbind.so
account required /lib/security/pam_winbind.so

Находим файл "/etc/nsswitch.conf" и добавляем туда следующие строчки:
 

passwd:      compat winbind
shadow:      compat 
group:       compat winbind

Далее включаем машину в домен:

/usr/local/samba/bin/net join -U Administrator
(указываем имя пользователя домена который имеет право на подключения новых членов).

Проверим:
 

#kinit Administrator@DOMAIN.RU

Если не выдаст ошибку, то всё прошло успешно. note: если выдаст ошибку time, то необходимо синхронизировать время с контроллером домена:

#ntpdate controller.domain.ru

Далее можно запускать самбу:

./usr/local/samba/sbin/smbd -D
./usr/local/samba/sbin/nmbd -D
./usr/local/samba/sbin/winbindd

Проверяем:

#getent group - должен вывестись список групп и включённых в них пользователей (в том числе и домена)

Далее раздаём права на шару:
 

chown -R DOMAIN+user.DOMAIN+group /public
chmod -R 770 /public

Полные права на доступ к шаре будут иметь все члены группы DOMAIN+group и владелец DOMAIN+user учётная запись которого принадлежит домену. Остальные получат access denided. Если в домене есть группы/пользователи с пробелами, то права задаём через uid/gid или через mc ;)

Всё!

Рекомендовать статью: