Подключение Linux к WinServer c LDAPservice

Но Вы писали-то свой модуль?

Или можно ли взять за основу etc\init.d\winbind и, что-то изменив в нём (и что конкретно), добиться нужного результата?

Модуль pam мне приходилось писать совсем для другой задачи.

Стоит ли взять ли за основу pam_winbind - не знаю. Нужно

разбираться с его исходниками.

В догонку.

/etc/init.d/winbind - это всего лишь сценарий запуска winbind.

Его изменение в данном случае ни к чему не приведёт.

Т.е., если я Вас правильно понял, можно только путём правки исходников для бинарника winbindd, в котором уже забит этот обязательный ввод машины в домен, и последующей их компиляции?

А с помощью создания скриптового модуля (с использованием или без существующего winbindd) никак нельзя добиться желаемого результата?

pam модули традиционно пишутся на C. Естественно, с последующей

компиляцией. Ввод машины в домен, насколько я знаю, это

обязательное условие winbind. Так что правки скриптов здесь не

достаточно.

А можно просто создать скрипт, не использующий winbindd, но обеспечивающий при вводе в регистрационном окне графического DM имени и пароля пользователя в случае отсутствия такого зарегистрированного локального пользователя сверку введённых имени и пароля с находящимся на win сервере списком и в случае их наличия и соответсвия, создание такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузку? Причём доступ к списку получать, например, при помощи Кербероса. Если нельзя, то в чём конкретно заключается загвоздка?

Думаю, что такой скрипт на shell написать нельзя, поскольку в

результате должна получиться загружаемая библиотека с

соответствующим API. Но, написание таких модулей, к примеру на

Python, кажется, возможно.

А какого-нибудь образца или ссылки у Вас не найдётся случайно?

| CAEman писал(а) Sat, 03 October 2009 15:47 |
|

А какого-нибудь образца или ссылки у Вас не найдётся случайно?

|

Хотя бв исходрники того же pam_winbind на www.samba.org

Скачал я самбу. Есть там всякие pam_winbind.h, pam_winbind.c и др. Что конкретно мне теперь нужно делать (пошагово, если можно)?

Почитайте тут, может, поможет…

to CAEman:

Судя по названию, Вам нужны именно эти файлы.

Теперь нужно изучить C исходники на предмет, как они работают.

Только после этого можно приступать к адаптации их под свои

требования.

Но всё же перед тем, как приступать к такому непростому делу,

проверьте, работает ли всё, что Вам нужно через kinit. (Я имею

ввиду, получаете ли Вы доступ к нужным Вам вендовым рессурсам).

kinit проходит (билет получаю)

Команда “net ads info” выдаёт следующее:

LDAP server: ххх.ххх.х.ххх

LDAP server name: server.domain

Realm: DOMAIN

Bind Path: dc=DOMAIN

LDAP port: 389

Server time: Sat, 03 Oct 2009 13:24:57 MSD

KDC server: ххх.ххх.х.ххх

Server time offset: -10

Всё в порядке?

| CAEman писал(а) Fri, 09 October 2009 19:00 |
|

kinit проходит (билет получаю)

Команда “net ads info” выдаёт следующее:

LDAP server: ххх.ххх.х.ххх

LDAP server name: server.domain

Realm: DOMAIN

Bind Path: dc=DOMAIN

LDAP port: 389

Server time: Sat, 03 Oct 2009 13:24:57 MSD

KDC server: ххх.ххх.х.ххх

Server time offset: -10

Всё в порядке?

|

Да, всё в порядке

Но это же не есть Ваша цель.

Попробуйте примонтировать windows ресурс. С аутентификацией либо через керберос (т.е после kinit):

mount.cifs -k //сервер/ресурс точка_монтирования

либо по ntlm (т.е без керберос)

mount.cifs //сервер/ресурс точка_монтирования -o user=… password=…

Пишу по памяти. Точный синтаксис смотрите в манах.

Всё монтирует (только с опцией user). Причём, и когда winbind status running, и когда - dead (т.е. и при security=SERVER, и ADS).

Теперь можно приступить к изучению C исходников на предмет, как они работают, или ещё что нужно сделать (исправить)?

| CAEman писал(а) Fri, 16 October 2009 13:05 |
|

Всё монтирует (только с опцией user).

|

Если собираетесь монтировать с опцие user, то керберос Вам не нужен. Аутентификация будет по ntlm.

| Цитата: |
|

Причём, и когда winbind status running, и когда - dead (т.е. и при security=SERVER, и ADS).

|

Это нормально. winbind при этом не используется вовсе.

| Цитата: |
|

Теперь можно приступить к изучению C исходников на предмет, как они работают, или ещё что нужно сделать (исправить)?

|

Думаю, что уже можно. Причем переработка кода будет направлена в сторону удаления лишнего

Монтирование я собираюсь сделать автоматическое - при регистрации.

Если winbind.c содержит только #include “pam_winbind.h”, то в pam_winbind.h имеются:

#include “../lib/replace/replace.h”

#include “system/syslog.h”

#include “system/time.h”

#include <talloc.h>

#include “libwbclient/wbclient.h”

#include “localedir.h”

#include <iniparser.h>

#include <libintl.h>

#include <security/pam_appl.h>

#include <pam/pam_appl.h>

#include <security/pam_modules.h>

#include <pam/pam_modules.h>

#include <security/_pam_macros.h>

#include <pam/_pam_macros.h>

#include <security/pam_ext.h>

#include “winbind_client.h”

По ним всем тоже нужно искать? И какие там ключевые слова могут определять членство (включение) комп-а в домене?

Кстати, а /etc/security/pam_winbind.conf в ручном редактировании не нуждается?

| CAEman писал(а) Fri, 16 October 2009 17:41 |
|

Монтирование я собираюсь сделать автоматическое - при регистрации.

Если winbind.c содержит только #include “pam_winbind.h”, то в pam_winbind.h имеются:

#include “../lib/replace/replace.h”

#include “system/syslog.h”

#include “system/time.h”

#include <talloc.h>

#include “libwbclient/wbclient.h”

#include “localedir.h”

#include <iniparser.h>

#include <libintl.h>

#include <security/pam_appl.h>

#include <pam/pam_appl.h>

#include <security/pam_modules.h>

#include <pam/pam_modules.h>

#include <security/_pam_macros.h>

#include <pam/_pam_macros.h>

#include <security/pam_ext.h>

#include “winbind_client.h”

По ним всем тоже нужно искать? И какие там ключевые слова могут определять членство (включение) комп-а в домене?

Кстати, а /etc/security/pam_winbind.conf в ручном редактировании не нуждается?

|

Смотреть в первую очередь надо pam_winbind.c

Остальное, если будет в том нужда.

Начать надо с изучения того, как работает pam модуль. Какие функции и в какое время вызываются системой.

Также необходимо знать синтаксис и основные конструкции языка C.

вместо pam_winbind.conf Вы, скорее всего, бутете использовать свой собственный файл конфигурации.

А Вы не знаете синтаксис и основные конструкции языка C достаточно хорошо, чтобы подсказать мне, что нужно искать?

| CAEman писал(а) Fri, 16 October 2009 20:44 |
|

А Вы не знаете синтаксис и основные конструкции языка C достаточно хорошо, чтобы подсказать мне, что нужно искать?

|

Перед тем, как что-то искать, нужно понять логику всей программы.

Разбираться с исходным текстом Вам придется самому. На форуме принято оказывать помощь в том случае, если Вы столкнулись с проблемами, решая задачу самостоятельно.

Для начала можно ознакомиться с основами создания pam модуля.

http://www.citforum.ru/operating_systems/articles/pam.shtml

PS. Если знание языка C Вам нужно только для этой задачи, то, может быть стоит ещё раз взвесить, оправдывает ли цель средства.

А в перспективе знание C может оказаться полезным. Он уже много лет является основным инструментом программистов. И, несмотря на появление многих интересных языков, достойной альтернативы ему в многих областях пока не видно.