Возникла у меня такая задача как организовать небольшую файловую помойку
на Linux для пользователей Windows, которыми руководит AD.
Перечитал кучу документации, но, делая, как сказано в документации у
меня ничего не получалось. Вот поэтому и решил написать данное небольшое
руководство. Сразу оговорюсь, что за последствия, повлекшие за собой
какие-либо деструктивные действия, ответственности не несу. И еще на
статью меня подтолкнуло то, что почти вся документация написана для
отличных от мню любимого дистрибутива Linux Slackware.
Начнем.
Итак, первое, что нам надо сделать это разобраться, как же, все-таки,
работает домен на Windows 2003. Честно говоря, я и сам до сих пор в этом
деле не разобрался, но могу сказать одно, что почти вся его работа с
шарами происходит по протоколу Kerberos 5. Когда пользователь входит в
систему он проходит несколько этапов проверки на правильность логина и
пароля. И на одном из этих этапов сервером выдается пользователю так
называемый билет Kerberos, который в дальнейшем и используется для
работы.
Если Windows использует Kerberos, то и Linux тоже надо научить общаться
по этому протоколу. Но не стоит забывать, что Windows также работает и с
протоколом LDAP. Ну, ничего научим.
Начнем собирать необходимые программы для обучения Linux. Так как в
Slackware 10.2 используется пакет Samba, то может показаться, что он нам
и не понадобится, но на самом деле этот пакет нам придется удалить из
системы т.к. он собран без поддержки всех нам так необходимых вещей.
Удалить его можно с помощью (как я это сделал) утилиты pkgtool. Утилита
довольно понятная и я думаю, сами с ней разберетесь. Далее нам
понадобятся исходные коды:
На момент моих долгих мучений с настройкой это были свежие версии.
Сначала надо собрать heimdal-0.7.tar.gz, это реализация протокола
Kerberos 5. Скачиваем из интернета, разархивируем и собираем с помощью
./configure make и make install. По умолчанию все собирается в папку
отличную от /usr, меня лично это не устраивает т.к. потом при
конфигурировании samba придется все ручками все указывать и, поэтому я
собирал так.
./configure prefix=/usr
make
make install DESTDIR=/test/krb5
Добавлено 10.05.2006
При сборке данным способом на Slackware 10.2 нужно будет установить еще дополнительный пакет,
Какой я вроде писал ниже. Для того чтобы не устанавливать его можно heimdal собрать
так
./configure --prefix=/usr --disable-berkeley-db
make
make install DESTDIR=/test/krb5
Последняя команда копирует все файлы в каталог /test/krb5 (перед
выполнением этой команды сначала надо создать данную директорию). Это
делается для того, что бы потом можно было создать пакет для Slackware,
т.к. все-таки управлять пакетами проще, чем потом удалять файлы в
системе вручную. Если все прошло успешно, то переходим в каталог
/test/krb5 и с помощью команды makepkg krb5.tgz собираем пакет и
устанавливаем installpkg krb5.tgz. То же самое проделываем и с
openldap-2.3.20.tgz, но при сборке в Slackware 10.2 просто так не
соберется т.к. требуются еще несколько пакетов, если собираете в
Slackware current, то должно собраться без вопросов, во всяком случае, у
меня на current все собралось на ура.
./configure
make depend
make
make install DESTDIR=/usr/ldap
cd /usr/ldap
makepkg ldap.tgz
installpkg ldap.tgz
Для Slackware 10.2 еще понадобится пакет db4-4.4.20-i486-1.tgz, он нужен
для Kerberos (если собирать первым способом) и также для Ldap, можно ldap собрать и на Slackware 10.2,
без требования этого пакета сделав
./configure -enable-bdb=no -enable-hdb=no
Я не пробовал на Salckware 10.2 как собирается без этих опций, поэтому
не могу сказать какие пакеты могут потребоваться еще.
Вот теперь можно переходить к самой главной программе - samba.
Samba надо собирать с поддержкой ldap kerberos AD и winbind.
Разархивируем исходники и переходим в директорию, куда их
разархивировали в поддиректорию source. Первое что надо сделать это
посмотреть помощь по сборке с помощью ./configure -help будет выведен
большой список с параметрами. Нам нужно только несколько из них. Я не
буду описывать все, просто приведу команду с помощью, которой я
сконфигурировал.
./configure -prefix=/usr --with-configdir=/etc/samba --with-winbind
--with-ads --with-krb5 --with-smbmount -with-ldap
make
make install DESTDIR=/test/samba
cd /test/samba
makepkg samba.tgz
(не забудьте удалить старую samba перед установкой)
installpkg samba.tgz
Для тех кто посчитает что пакет ldap не нужен для работы samba в режиме файлового
сервера для пользователей AD, то хочу сразу предупредить, если не поставить пакет
ldap, то при конфигурировании samba с параметром --with-ads будет выдаваться ошибка
что нет ldap модулей в системе. Поэтому сборка ldap необходима.
Теперь надо сконфигурировать все.
Переходим в каталог /etc/rc.d и в файле rc.samba добавляем такие строки.
samba_start() {
if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd -a -r /etc/samba/smb.conf -a -x /usr/sbin/winbindd ]; then
echo "Starting Samba: /usr/sbin/smbd -D"
/usr/sbin/smbd -D
echo " /usr/sbin/nmbd -D"
/usr/sbin/nmbd -D
echo " /usr/sbin/winbind"
/usr/sbin/winbindd
fi
}
samba_stop() {
killall smbd nmbd winbindd
}
Для того чтобы Samba стартовала при запуске системы файл
/etc/rc.d/rc.samba должен быть исполняемым.
Далее настраиваем Kerberos. Надо скопировать файл krb5.conf из папки,
куда Вы разархивировали архив с исходниками в папку /etc и
отредактировать его. Вот какой он у меня.
Теперь надо отредактировать самый главный файл для нашей задачи, это
/etc/samba/smb.conf.
[global]
auth methods = winbind #определяем метод аутентификации через winbind
netbios name = McLeodLinux #netbios имя компьютера
workgroup = LOCAL #рабочая группа (имя домена без суффикса .NET)
realm = LOCAL.NET #имя домена
password server = serv.local.net #имя компьютера PDC
encrypt passwords = yes #при работе с AD шифровать пароли надо обязательно
server string = File Server #описание нашего LINUX сервера
security = ADS #говорим что мы в AD
allow trusted domains = No #разрешить доверительные домены.
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 0
preferred master = No
local master = No
domain master = No
dns proxy = No
ldap ssl = no #отключаем ssl
idmap uid = 10000-20000 #интервал uid для пользователей
idmap gid = 10000-20000 #интервал gid для групп
hosts allow = 172.16., 127.
strict locking = No
time server = Yes
winbind use default domain = true #использовать домен по умолчанию
log file = /var/log/samba/connect/samba.%m
max log size = 50
log level = 1
unix charset = KOI8-R
dos charset = cp866
[public]
comment = Public
path = /mnt/samba/public
public = yes
writable = yes
printable = no
create mask = 0666
valid users = @"LOCALDomain Admins"
Если в описании шары в строке valid users поставить
"LOCALAdministrator", то вход будет разрешен только администратору.
Знак @ обозначает группу.
Тут вроде бы и все, но есть еще одна небольшая вещь, которую надо
сделать, а именно, перейти в каталог, где лежат у Вас исходники Samba, в
подкаталог source/nsswitch и скопировать файл libnss_winbind.so в
каталог /lib. Далее надо сделать символические ссылки на этот файл.
Ну, вроде все у нас готово для того чтобы ввести наш Linux в домен Windows.
Сначала надо синхронизировать время на Linux с PDC Windows.
net time set
можно для большей уверенности сделать так
net time set -S Name_Windows_PDC
Далее получим билет от нашего PDC.
kinit Administrator@LOCAL.NET
Можно просмотреть каков результат командой.
klist
Если все нормально подсоединяемся к домену
net ads join -U Administrator@LOCAL.NET
Все должно пройти нормально, если нет, то роем Гугл. При удаче
перезапускаем Samba
/etc/rc.d/rc.samba restart
и начинаем давать закрывать доступ на шары.
Я не стал при расписывать процесс проверки работы всех служб, потому что
в интернете очень много документации по этому вопросу, Я только описал
те действия, которые надо сделать обязательно, потому как сам настраивал
не одну неделю и всю информацию собирал по кусочкам из разных
источников, включая даже эксперименты с другими дистрибутивами и поиск
отличий.
Если у кого ни будь работает команда
smbmount //server/share /mountpoint -o krb
с 2003 сервером в AD отпишите, как заставили на mcleod095@gmail.com
знаю, что не работает т.к. даже сами разработчики об этом говорят,
но может быть, у кого ни будь это дело проходит.