From: Maksim Nikulin <nikulin@monster.msiu.ru>
Subject: Огрнизация Samba Domain Controller для WinNT клиентов
Что такое Samba?
Samba - сервер, основанный на протоколе SMB (Server Message Block) и
предоставляющий клиентам WinNT (и некоторых других ОС) возможность
доступа к файлам и принтерам Linux (и прочих UN*X). Также имеется
клиент для Linux - удобное средство отладки и проверки
работоспособности некоторых возможностей Samba.
Что хотелось получить?
Цель следующая: организовать Samba Domain Controller (далее SDC),
который будет доменом каждого WinNT клиента, что позволит
"экспортировать" пользователей NT из Linux. Это означает, что все
пользователи регистрируются в Linux и каждый из них может работать в
NT используя тот же login, что и в Linux. Кроме того, имеется
возможность синхронизировать пароли Linux и NT (фактически Samba),
сохранять пользовательские настройки NT - profiles. Стандартные
возможности Samba - использование в качестве файл- и принт- серверов
практически не теряют своей функциональности, хотя некоторые
ограничения все же появляются.
Описание проблемы
Основная сложность состоит в том, что используемая мной версия Samba -
2.0.6, входящая в стандартную поставку RedHat 6.2, все последующие, и,
видимо, некоторые предшествующие версии Samba из "основной" ветви
разработки поддерживают возможность работы Samba как login сервера
неофициально, то есть никакой документации об этом вы не найдете.
Дело в том, что отдельные разработчики Samba, продвигают свои
возможности/особенности в этот проект. Если эти возможности
большинством разработчиков считаются лишними, то можно продолжать
работать в рамках отдельной ветви разработки. Я насчитал по меньшей
мере десяток ветвей, получить их можно ознакомившись с этим документом
http://samba.org/cvs.html, знание CVS приветствуется.
SDC появился из ветви Samba-NTDOM, поэтому документацию следует искать
http://www.samba.org/samba/samba.html, а также в различных конференциях и FAQ.
Опции smb.conf
Основные настройки Samba находятся в файле /etc/smb.conf. Файл разбит
на секции, содержащие параметры. Секция начинаются с названия секции
заключенного в квадратные скобки и заканчивается началом следующей
секции. Все параметры представлены в форме 'название = значение'.
Рекомендуется сначала настроить Samba без SDC и убедиться в правильной
работе более простых возможностей предоставляемых Samba. Далее
представлены параметры в секции [global], необходимые для работы SDC.
1. Параметр 'security' должен быть установлен в значение отличное от
'share' - ограничение, накладываемое при использовании SDC.
2. Установите параметр 'domain logons = yes', позволяющий
пользователю осуществить вход в систему NT через домен Samba.
3. Параметр 'encrypt passwords = yes' включает преобразование паролей
средствами Samba, а не средствами клиента (в данном случае NT).
4. Параметр 'smb passwd file = /etc/smbpasswd' указывает файл, в
данном случае /etc/smbpasswd, содержащий, помимо регистрационного
имени пользователя, его uid (идентификатор пользователя),
зашифрованные пароли пользователя в Samba и в WinNT (могут быть
различными) и некоторую информацию, сходную с той, что размещается
в /etc/shadow.
5. Для работы SDC требуется наличие следующего разделяемого ресурса
(секции в smb.conf)
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
share modes = no
В дальнейшем, в директории '/home/netlogon' могут находиться
скрипты, запускаемые при входе в систему через SDC.
Добавление клиентов и пользователей
В начале необходимо создать файл /etc/smbpasswd, содержащий,
непосредственно, пользователей SDC. Наиболее простым путем разрешения
доступа всем пользователям является запуск следующей
последовательности команд
cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
Либо запустить для каждого пользователя 'ntuser' команду
smbpasswd -a ntuser
Далее, требуется создать в Linux пользователя, для каждого клиента
WinNT. Регистрационным именем этого пользователя должно быть
NetBIOS-имя Windows клиента с добавлением знака '$' в конце. К
примеру, для рабочей станции WinNT с NetBIOS-именем 'ntbox',
необходимо выполнить команду
useradd -s /bin/false -d /dev/null -c "Windows NT Workstation" ntbox$
создающую примерно следующую строку в файле /etc/passwd
ntbox$:x:501:501:Windows NT Workstation:/dev/null:/bin/false
Домашний каталог, командный интерпретатор, а также UID и GID
пользователя не существенны и нигде не используются, хотя разработчики
Samba собираются использовать идентификаторы пользователя в грядущих
версиях. Кроме имен клиентов в /etc/passwd можно (для некоторых версий
Samba - нужно) добавить имя самого сервера SDC, чтобы разрешить ему
быть членом собственного домена.
Затем этот же пользователь, соответствующий клиенту 'ntbox',
добавляется в /etc/smbpasswd коммандой
smbpasswd -a -m ntbox
Эта команда всегда должна выполняться перед тем как клиент WinNT
заново присоединяется к SDC.
Присоединение клиента WinNT к Samba
После завершения настроек необходимо перезагрузить Samba, для
вступления в силу всех изменений. Затем, войти локально в систему
клиента WinNT, используя login привилегированного пользователя, по
умолчанию - Администратор. Далее удачно (я надеюсь :-) присоединившись
к SDC, перезагрузить WinNT и войти в систему под каким либо
пользователем Samba, не забыв выбрать свой домен, указанный параметром
'workgroup', в диалоге входа в систему WinNT, в противном случае
произойдет вход на локальную машину.
Мелочи: приятные и не очень
1. Если в подсети клиентов Samba, существует(ют) машины с Win2000,
которые, по умолчанию, пытаются стать PDC (Primary Domain
Controller), то есть конфликтовать с Samba, то может понадобиться
установить следующие параметры в секции [global]
local master = yes
os level = 33
preferred master = yes
Параметр 'os level' задает приоритет при выборе PDC и, как
правило, нет надобности устанавливать его в значение больше '65'
при максимуме '255'. Та же проблема может возникнуть и с WinNT
сервером, находящемся в подсети - решается аналогично.
2. При желании объединить несколько подсетей с SDC, в одной из них
указывается параметр 'domain master = yes', в остальных лучше
установить этот параметр в 'no', если это не делается по
умолчанию.
3. Для синхронизации паролей Linux и WinNT указываются параметры
unix password sync = Yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %nn *ReType*new*UNIX*password* %nn *pas
swd:*all*authentication*tokens*updated*successfully*
в секции [global], как следствие - команда smbpasswd меняет пароли
и в Linux и в WinNT.
4. В Samba имеется возможность сохранять индивидуальные
пользовательские настройки добавив следующий разделяемый ресурс
[Profiles]
comment = User profiles
path = /home/profiles
browseable = no
writable = yes
guest ok = yes
5. Добавление параметра 'logon script = start.bat' влечет выполнение
файла start.bat при каждом входе в систему. Можно задавать
определенные файлы с помощью так называемых переменных
подстановки, например, '%U' - имя пользователя и подстановка в
параметр значения '%U.bat' - позволит запускать для каждого
пользователя уникальный файл с набором команд. Полный перечень
переменных подстановки можно узнать из smb.conf(5)
Примечания
В RedHat 7.0 поставляется Samba версии 2.0.7, в которой
конфигурационные файлы по умолчанию перемещены в /etc/samba/,
добавлено несколько новых параметров в smb.conf, также устранены
некоторые проблемы с Win2000 (возможно, касающиеся SDC) и прочее.
Другие полезные ресурсы
* man samba(7) smb.conf(5)
* Локальная документация по Samba на вашей машине в директории
/usr/doc/.
* Официальный сайт Samba http://www.samba.org/
* GnoSamba - Графическая утилита настройки Samba http://www.open-systems.com/gnosamba.html
* http://linuxdoc.org
* Samba от Ed Weinberg http://linuxguy.net/samba.htm
* SMB Mode для Emacs - помогает редактировать конфигурационный
файл smb.conf в Emacs http://users.gtn.net/fraserm/smbmode.html