Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


При поддержке
Продвижение сайта
Продвижение сайта
Раскрутка сайта
Создание сайта
Оптимизация сайта
Интернет реклама
Аудит сайта
Администрирование сервера
настройка сервера
установка сервера
аренда сервера
Администрирование сервера
администрирование сервера
настройка сервера
аренда сервера
Rambler's Top100


Входим в Линукс под учетной записью из NT-домена.

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. Что делаем.

4.1. Для варианта с pam_smb.

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. Для варианта с winbind.

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:
Версия: 0.2 (дополненная)
Все дополнения, предложения и исправления приветствуются, но только через почту.


Обсудить данную тему на нашем форуме "Все о Linux"