Но Вы писали-то свой модуль?
Или можно ли взять за основу etc\init.d\winbind и, что-то изменив в нём (и что конкретно), добиться нужного результата?
Но Вы писали-то свой модуль?
Или можно ли взять за основу 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 может оказаться полезным. Он уже много лет является основным инструментом программистов. И, несмотря на появление многих интересных языков, достойной альтернативы ему в многих областях пока не видно.