Входим в Линукс под учетной записью из NT-домена.
Данные материал представляет статью, основанную на man страницах.
1. Содержание
задачи.
2. Отказ от
ответственности.
3. Варианты
решения и что для этого
нужно.
3.1. Метод с использованием модуля
pam_smb.
3.2. Метод с использованием утилиты
winbind.
3.3. Сравнение описанных
методов.
3.3.1. Метод с модулем
pam_smb.
3.3.2. Метод с утилитой
winbind.
4. Что
делаем.
4.1. Для варианта с
pam_smb.
4.1.1. Правим
/etc/pam_smb.conf
4.1.2. Правим конфигурационные файлы
PAM.
4.1.3. Добавление учетной записи в
/etc/passwd.
4.1.4. Попытка
авторизации.
4.2. Для варианта с
winbind.
4.2.1. Правим
smb.conf.
4.2.2. Правим
конфигурационные файлы
PAM.
4.2.3. Внесение изменений в файл
/etc/nsswitch.conf
4.2.4. Перезапуск
(запуск) сервисов smb и
winbind.
4.2.5.
Присоединение компьютера к Windows NT
домену.
4.2.6. Попытка
авторизации.
5.
Использованные документы.
6.
Авторство.
1. Содержание
задачи.
Имеется сеть, организованная в
Windows NT домен (для определенности, с именем
FIRST). Так же имеется PDC (Primary Domain
Controller), именуемый main. Установив на один
(или несколько) компьютеров сети ОС Linux, мы хотим,
чтобы пользователи входили в Линукс под учетными
записями, которые хранятся на PDC. Объяснять для чего
это нужно я в этой статье не берусь.
2. Отказ от
ответственности.
Все описанное ниже,
представляет собой лишь последовательность моих действий
и ни в коем случае не претендует на полноту и
исключительность. Нет ни какой гарантии, что у Вас все
будет работать точно так же как и у меня, поэтому вся
ответственность, за выполняемые Вами действия,
возлагается только на Вас и никого более. Я лишь могу
гарантировать, что описанная ниже конфигурация работает
на моей машине с ОС ASPLinux 7.2, которая изрядно мной
изменена (так же описанная последовательность действий
проверена на ASPLinux 7.3 сразу после установки).
3. Варианты решения и что
для этого нужно.
Для решения поставленной
задачи можно воспользоваться двумя методами. Выбор
какого-то конкретного метода зависит от Ваших задач и
предпочтений.
3.1. Метод с использованием модуля
pam_smb.
При использовании данного метода
необходим PAM-модуль (Pluggable Authentication
Modules), который можно установить как из RPM-пакета
(в моем случае pam_smb-1.1.6), так и собрав его
вручную из исходных текстов. Исходные тексты можно
найти pamsmb.sourceforge.net.
3.2. Метод с использованием утилиты
winbind.
В данном случае будет необходим
пакет Samba (www.samba.org). Что
касается меня, то я использовал RPM-пакеты, входящие в
дистрибутив ASPLinux 7.3 (это samba-2.2.3a,
samba-common-2.2.3a и samba-client-2.2.3a). Если Вы
будете собирать пакет Samba из исходников
самостоятельно, то Вам необходимо включить утилиту
winbind, а так же поддержку PAM.
3.3. Сравнение описанных
методов.
Прежде чем перейти к действиям,
предлагаю Вашему вниманию короткое сравнение описанных
ниже методов решения задачи. Я не буду глубоко
вдаваться в подробности, а приведу только самые явные
преимущества и недостатки каждого из методов.
3.3.1. Метод с модулем
pam_smb.
Преимущества:
- прост в реализации;
- не требует запуска различных ?демонов?;
- учетная запись пользователя имеет такой же вид как в NT-домене.
- при наличии большого количества пользователей домена, которые работают на одном и том же компьютере, Вам придется вести учетные записи этих пользователей вручную.
3.3.2. Метод с утилитой
winbind.
Преимущества:
- лишен недостатка, возникающего при большом количестве пользователей;
- позволяет разрешать сетевые имена компьютеров (NetBIOS-имена).
- сравнительная сложность настройки;
- необходим запущенный ?демон? - winbind;
- к учетной записи добавляется еще наименование домена (удлинение имени учетной записи).
4.1.1. Правим
/etc/pam_smb.conf.
Файл
/etc/pam_smb.conf содержит три строки: в
первой строке указывается имя домена, в котором
предполагается производить авторизацию, вторая и
третья имена PDC и SDC (Secondary Domain Controller)
соответственно. В нашем случае этот файл должен
выглядеть следующим образом:----- start file
-----
FIRST
main
------ end file ------
Внимание: В данном
файле нет комментариев! В нем должно содержаться
только три строки!
4.1.2. Правим конфигурационные
файлы PAM.
Данные файлы храняться в
/etc/pam.d/. Имя файла конфигурации похоже или прямо
соответствует приложению, к которому данная
конфигурация относится. В моем случае, т.к. я
использую для авторизации KDM (KDE Display
Manager), я правил файл /etc/pam.d/kde.
Вносим следующие изменения:
- Заменяем группу модулей с типом auth
на:
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_smb_auth.so
auth required/lib/security/pam_nologin.so
- Заменяем группу модулей с типом account
на:
account required /lib/security/pam_pwdb.so
- Заменяем группу модулей с типом
password на:
password required /lib/security/pam_pwdb.so shadow nullok use_authtok
- Заменяем группу модулей с типом session
на:
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0077
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_console.so
4.1.3. Добавление учетной записи
в /etc/passwd.
Для использования данного
механизма авторизации Вам необходимо добавить в файл
/etc/passwd учетную запись, аналогичную учетной
записис Windows NT домена (можно воспользоваться
командой adduser). При этом Вы должны задать
все необходимые атрибуты (домашний каталог, группу,
оболочку (shell) и т.п.). Пароль указывать нет
необходимости, поскольку он будет сверяться с
информацией храняшейся на сервере домена.
4.1.4. Попытка
авторизации.
В моем случае, перезапустив
KDM, в строке login я ввожу sloth (где sloth - моя
учетная запись). В поле password, ввожу пароль,
соответсвующий моей учетной записи в Windows NT
домене. Так же Вы можете авторизироваться под
учетной записью, которая является локальной
(не входящей в Windows NT домен), под любой, кроме
учетной записи root.
4.2.1. Правим
smb.conf.
У меня данный файл находится
/etc/samba/smb.conf. Могу предположить, что у Вас он
находится там же. В этот файл вносим следующие
изменения и дополнения:winbind separator = +
template
shell = /bin/bash
template homedir =
/home/%U
winbind uid = 10000-20000
winbind gid
= 10000-20000
это то, что,
скорее всего, Вам придется добавлять самостоятельно.
После чего изменяем уже имеющиеся
параметры:workgroup =
FIRST ; Имя нашего домена
security =
domain
password server = main ; Имя PDC,
предварительно внесенное в файл
/etc/samba/lmhosts
encrypt passwords =yes
Все остальные параметры были
оставлены по умолчанию.
4.2.2. Правим конфигурационные
файлы PAM.
Данные файлы храняться в
/etc/pam.d/. Имя файла конфигурации похоже или прямо
соответствует приложению, к которому данная
конфигурация относится. В моем случае, т.к. я
использую для авторизации KDM (KDE Display
Manager), я правил файл /etc/pam.d/kde.
Вносим следующие изменения:
- Заменяем группу модулей с типом auth
на:
auth required /lib/security/pam_securetty.so
auth required/lib/security/pam_nologin.so
auth sufficient /lib/security/pam_winbind.so
auth required /lib/security/pam_pwdb.so use_first_pass shadow nullok
- Заменяем группу модулей с типом account
на:
account required /lib/security/pam_winbind.so
- Заменяем группу модулей с типом
password на:
password required /lib/security/pam_winbind.so
- Заменяем группу модулей с типом session
на:
session required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0077
session required /lib/security/pam_pwdb.so
session optional /lib/security/pam_console.so
4.2.3. Внесение
изменений в файл
/etc/nsswitch.conf
Добавляем слово
winbind в следующие строки:passwd: files winbind
group:
files winbind
4.2.4. Перезапуск
(запуск) сервисов smb и winbind.
Для
перезапуска отконфигурированных сервисов выполняем
из под пользователя root:
# /etc/init.d/smb
restart
# /etc/init.d/winbind restart
Если
при останове сервисов возникли ошибки, то значит,
скорее всего, они не были запущены. Чтобы сервисы
запускались при загрузке компьютера необходимо
добавить символьные ссылки в /etc/rc.d/rcX.d/, где X
- соответсвует Вашему уровню запуска (в моем случае
это 5). Перейдя в /etc/rc.d/rc5.d/ я выполняю
следующие действия:
# ln -s ../init.d/smb
S91smb
# ln -s ../init.d/winbind
S91winbind
Данные действия выполняются с
правами пользователя root.
4.2.5.
Присоединение компьютера к Windows NT
домену.
Выполняем следующую команду с
правами root:
# smbpasswd -j FIRST -r main -U
Administrator
После ключа -U указывается имя
пользователя, обладающего правами администратора
домена. Выполнение данной команды должно закончиться
сообщением:
Joined domain FIRST.
Для
проверки успешности наших действий можно запустить
команду:
# wbinfo -t
Которая, при
удачном выполнении, должна выдать:
Secret is
good
4.2.6. Попытка
авторизации.
В моем случае, перезапустив
KDM, в строке login я ввожу FIRST+sloth (где FIRST -
имя домена, + - разделитель, указанный в файле
smb.conf, sloth - моя учетная запись, если Вы в
качестве разделителя будете использовать другие
символы, к примеру "", то я рекомендую Вам в
конфигурационном файле (smb.conf) указывать его в
двойных кавычках). В поле password, ввожу пароль,
соответсвующий моей учетной записи в Windows NT
домене. Так же Вы можете авторизироваться под
учетной записью, которая является локальной
(информация о ней храниться на Вашем компьютере),
под любой, кроме учетной записи root.
5. Использованные
документы.
man 8 pam
man 8 winbind
man
1 wbinfo
man 5 smb.conf
man 8 smbpasswd
6.
Авторство.
Автор: Федотов Алексей aka
Sloth
EMail: sloth@email.ru
Версия:
0.2 (дополненная)
Все дополнения, предложения и
исправления приветствуются, но только через почту.
