Домен/Windows: различия между версиями
Строка 160: | Строка 160: | ||
* [http://www.linux.org.ru/forum/admin/6798226 Samba PDC LDAP добавление компов в домен] | * [http://www.linux.org.ru/forum/admin/6798226 Samba PDC LDAP добавление компов в домен] | ||
= TODO = | |||
{{todo|# Разобрать и автоматизировать заведение дополнительных параметров Samba | {{todo|# Разобрать и автоматизировать заведение дополнительных параметров Samba | ||
# <s>Доработать ldap-useradd -w -i</s> | # <s>Доработать ldap-useradd -w -i</s> | ||
# <s>Убрать создаваемые компьютеры в alterator-ldap-users</s> | # <s>Убрать создаваемые компьютеры в alterator-ldap-users</s> | ||
# Убрать создаваемые группы в alterator-ldap-users и alterator-ldap-groups | # <s>Убрать создаваемые группы в alterator-ldap-users и alterator-ldap-groups</s> | ||
# Сделать скрипт по первичному заведению администраторов и групп | # Сделать скрипт по первичному заведению администраторов и групп | ||
# Проверить на ввод компьютеры с Windows 7 и Windows 8 | # Проверить на ввод компьютеры с Windows 7 и Windows 8 |
Версия от 18:48, 1 ноября 2012
Использование домена для аутентификации компьютеров с Windows.
Предполагается, что домен ALT Linux создан должным образом и работает.
Настройка сервера
1. В секции [global] файла /etc/samba/smb.conf добавьте:
local master = yes
preferred master = yes
domain master = yes
domain logons = yes
add user script = /usr/sbin/ldap-useradd "%u"
delete user script = /usr/sbin/ldap-userdel "%u"
add group script = /usr/sbin/ldap-groupadd -p "%g"
delete group script = /usr/sbin/ldap-userdel "%g"
add user to group script = /usr/sbin/ldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/ldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/ldap-usermod -g "%g" "%u"
add machine script = /usr/sbin/ldap-useradd -w -i "%u"
ldap machine suffix = ou=Computers
encrypt passwords = yes
Внимание! При использовании домена в Windows будет использоваться имя рабочей группы WORKGROUP (параметр workgroup в /etc/samba/smb.conf). Вы можете поменять его на имя ALT-домена:
SMBDOMAIN="$(system-auth status | cut -f2 -d' ' | sed -e 's/dc=//g;s/,/./g;s/\(.*\)/\U\1/')"
sed -i "/^[global]$/a workgroup = ${SMBDOMAIN}" /etc/samba/smb.conf
Если хотите автоматически подключать общую папку (ресурс share на сервере как диск S:), то выполните следующее:
echo "net use s: \\\\$(hostname -s)\share" | sed 's/$/\r/' > /etc/samba/netlogon.bat
sed -i "/^[global]$/a logon script = /etc/samba/netlogon.bat" /etc/samba/smb.conf
2. Перезапустите службу smb и запустите службу nmb:
service smb restart service nmb start
Службу nmb нужно добавить в автоматический запуск:
chkconfig nmb on
3. Обновите ldap-user-tools до версии 0.8.0 или более позднее.
Создание групп и выдача административных привилегий
1. Сначала нужно назначить пользователя-администратора. Для прав на выдачу привилегий у него должен быть uid равный 0. Тогда он может назначать привилегии через net rpc rights. Заведите временно пользователя в LDAP (например, admin), задайте ему пароль и поменяйте uidNumber так:
ADMINUID="$(ldap-getent passwd admin uidNumber)"
echo "uidNumber:0" | ldap-usermod replace admin
2. В LDAP создайте группы через веб-интерфейс или из командной строки:
ldap-groupadd Admins ldap-groupadd Users ldap-groupadd Guests ldap-groupadd Computers
Эти группы понадобятся для привязки к группам домена согласно таблице:
Группа LDAP | Группа Windows | Идентификатор в Windows |
---|---|---|
Admins | Domain Admins | 512 |
Users | Domain Users | 513 |
Guests | Domain Guests | 514 |
Computers | Domain Computers | 515 |
Добавьте туда пользователей через веб-интерфейс или из командной строки:
echo 'memberUid:cas' | ldap-groupmod add Admins
3. Привяжите группы LDAP к группам домена
net groupmap add rid=512 ntgroup="Domain Admins" unixgroup=Admins net groupmap add rid=513 ntgroup="Domain Users" unixgroup=Users net groupmap add rid=514 ntgroup="Domain Guests" unixgroup=Guests net groupmap add rid=515 ntgroup="Domain Computers" unixgroup=Computers
Проверка:
# net rpc group members 'Domain Admins' -Uadmin%12345 WORKGROUP\cas
Примечание: Обратите внимание, пароль можно указывать у имени пользоватeля через «%».
4. Выдайте привилегии для группы Domain Admins:
net rpc rights grant "Domain Admins" SeMachineAccountPrivilege SePrintOperatorPrivilege \ SeAddUsersPrivilege SeDiskOperatorPrivilege SeRemoteShutdownPrivilege -Uadmin%12345
Проверка (просмотр всех привилегий по группам):
net rpc rights list accounts -Uadmin
Примечание: обратите внимание, что для заведения компьютера в домен нужно входить в группу с привилегией SeMachineAccountPrivilege.
5. Чтобы не было коллизий с системным пользователем root, после операции по назначению группы и привилегий этого пользователя нужно удалить или восстановить его UID:
echo "uidNumber:$ADMINUID" | ldap-usermod replace admin
6. Проверяем вход в домен администратора cas:
# net join -Ucas%123 Joined domain WORKGROUP.
Примечание: проверять вход в домен на сервере следует от пользователя, входящего в группу 'Domain Admins'. Остальным это запрещено. Список зарегистрированных компьютеров можно посмотреть командой:
ldap-getent ws
Всё в порядке, можно вводить компьютеры с Windows в наш домен.
Права доступа
По умолчанию разрешено входить всех доступным пользователям. Посмотреть их список на сервере можно командой:
# net sam list users
Для пользователей, входящих в группу Domain Users (или группу Users в LDAP) имеется доступ на диск Z: (домашняя папка пользователя на сервере с создаваемым подкаталогом profile).
Список входящих в эту группу:
# net sam listmem 'Domain Users'
Ввод компьютера с Windows в домен
Решение проблем
Если что-то пошло не так...
Если в результате экспериментов сломались привилегии или что-нибудь ещё, нужно очистить внутренние базы Samba. Выполните
rm -f /var/lib/samba/*.tdb service smb restart
Отладка Samba
Полезно включить уровень отладки 5 в /etc/samba/smb.conf:
log level = 5
После этого необходимо перечитать конфигурацию:
service smb reload
Подробный журнал работы Samba вы можете найти в файле /var/log/samba/log.main.
Смена имени сервера Samba
Так как при создании нового пользователя в домене для него прописывается SID, при смене имени сервера серверная часть SID меняется и пользователи со старыми SID уже недоступны, показывается примерно такое
# pdbedit -L sid S-1-5-21-694984405-1863599809-1435972588-11002 does not belong to our domain
При этом новые пользователи заводятся уже с правильным SID. Для исправления ситуации со старыми пользователями нужно выполнить следующий скрипт:
nsid=$(net getlocalsid | cut -f2 -d: | tr -d ' ')
ldap-getent passwd \* uid SambaSID | sed 's/:.*-/ /' | while read u id;do echo "SambaSID:$nsid-$id" | ldap-usermod replace "$u";done
После этого команда
pdbedit -L
должна показать имена всех пользователей.
Нюансы реализации
- Для заведения компьютеров в домен недостаточно типа sambaSAMAccount, потребовалось добавить тип posixAccount (для поиска имени компьютера используется getent passwd, хотя это совершенно странно), заводить одноимённую группу и сделать её основной для posixAccount.
- Для заведения доверенных компьютеров необходимо использовать ldap-useradd -w -i. Имя компьютера в таком случае содержит в конце символ $.
- Длина имени workgroup не должна превышать 15 символов (см. http://en.wikipedia.org/wiki/NetBIOS#NetBIOS_name)
Литература
- Обсуждение ввода машин с Windows в домен ALT Linux
- SAMBA PDC - установка, настройка, управление (Slackware)
- Samba PDC LDAP добавление компов в домен
TODO
- Разобрать и автоматизировать заведение дополнительных параметров Samba
Доработать ldap-useradd -w -iУбрать создаваемые компьютеры в alterator-ldap-usersУбрать создаваемые группы в alterator-ldap-users и alterator-ldap-groups- Сделать скрипт по первичному заведению администраторов и групп
- Проверить на ввод компьютеры с Windows 7 и Windows 8
- Документировать изменения