CAEman
-
Постов
49 -
Зарегистрирован
-
Посещение
Никогда
Сообщения, опубликованные CAEman
-
-
gogi писал(а) Fri, 30 October 2009 21:51 Вам стоит определиться. Либо аутентификация kerbetos, либо ntlm. Windows сервер поддерживает и то, и другое, Вам достаточно выбрать одну. Если Вы собираетесь монтировать каталоги с ntlm аутентификацией (с указанием логина и пароля), то kerberos можно было и не устанавливать вовсе.
Мне совершенно индеферентно, какой конкретно будет использоваться модуль для аутентификации, - лишь бы он (или несколько последовательно задействованных) мог обеспечить решение поставленной задачи (напоминание о которой в, на мой взгляд, недопускающей неоднозначной трактовки форме содержалось в использованной Вами в последнем сообщении цитате, но если Вы обнаружили там какую-либо двусмысленность, то укажите мне, пожалуйста, в чём именно она заключается).
Без указания логина и пароля mount.cifs ничего не монтирует даже после непосредственно перед этим полученного с помощью kinit билета.
pam_ntlm я не нашёл даже во всех сетевых репозиториях. Единственное, что там, может быть, имеет сходные функции - cyrus-sasl-ntlm (http://asg.web.cmu.edu/sasl/). Вы, случайно, не знаете, можно ли его использовать для поставленной задачи, и, если возможно, то - как конкретно?
Цитата: Для входа в систему с керберос аутентификацией в самом простом случае Вам нужно
1. Создать локального пользоватеся с тем же логином, что и в АД и без пароля.
2. Настроить pam_krb5, отредактировав файлы из /etc/pam.d примерно так:
...
Входить в систему, естественно, нужно не под рутом, а с тем же логином, который создали в п.1.
Под рутом при правильных настройках Вы, конечно, войдете, но керберос здесь не у дел.
Пользователей в АД - тысяча.
Выбрать можно любого?
А остальные после этого смогут зайти под своим логином?
Спасибо за предоставленные образцы. Если ответ на последний вопрос будет положительным, то попробую их задействовать.
-
И для полноты картины:
man pam_ntlm
No manual entry for pam_ntlm
-
Решил до переделки исходников винбинда попробовать ограничиться керберосом.
Напоминаю решаемую задачу.
При аутентификации на локальной лин.машине в случае необнаружения локального пользователя, идентичного введённому, произвести поиск такового на вин.сервере и в случае удачи создать соответствующую локальную постоянную учётную запись и произвести первую загрузку пользователя (с созданием домашней директории с профилем по умолчанию и далее всё как положено...).
Имеем следующее.
Настроенный керберос, выдающий билеты (и mount.cifs, монтирующий ресурсы сервера по ntlm).
Проблемы следующие.
Даже при ЗАКОММЕНТИРОВАННЫХ "include"ах в файле login:
"
#%PAM-1.0
auth requisite pam_nologin.so
password requisite pam_pwcheck.so nullok
auth [user_unknown=ignore success=ok ignore=ignore auth_err=die default=bad] pam_securetty.so
password [default=ignore success=1] pam_succeed_if.so uid > 999 quiet
auth required pam_env.so
auth sufficient pam_unix2.so
password sufficient pam_unix2.so nullok
account sufficient pam_unix2.so
session optional pam_unix2.so
#auth include common-auth
#password include common-password
#account include common-account
#session include common-session
session required pam_loginuid.so
session required pam_lastlog.so nowtmp never
session required pam_limits.so
session optional pam_umask.so
session optional pam_mail.so standard
session optional pam_ck_connector.so
auth optional pam_warn.so
password optional pam_warn.so
"
при изменении стандартного содержания файлов на следующее:
common-account-pc -
"
...
#
account sufficient /lib64/security/pam_krb5.so
"
common-auth-pc -
"
...
#
auth sufficient /lib64/security/pam_krb5.so
"
common-password-pc -
"
...
#
password sufficient /lib64/security/pam_krb5.so
#password required pam_make.so /var/yp
"
common-session-pc -
"
...
#
session optional /lib64/security/pam_krb5.so
"
при попытке регистрации даже root'а выдаётся окно со следующим сообщением:
"Произошла критическая ошибка. Просмотрите журналы работы KDM или обратитесь к системному администратору"
без, естественно, последующего осуществления входа в систему.
Что-нибудь можете посоветовать?
-
А Вы не знаете синтаксис и основные конструкции языка 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 в ручном редактировании не нуждается?
-
Всё монтирует (только с опцией user). Причём, и когда winbind status running, и когда - dead (т.е. и при security=SERVER, и ADS).
Теперь можно приступить к изучению C исходников на предмет, как они работают, или ещё что нужно сделать (исправить)?
-
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
Всё в порядке?
-
Скачал я самбу. Есть там всякие pam_winbind.h, pam_winbind.c и др. Что конкретно мне теперь нужно делать (пошагово, если можно)?
-
А какого-нибудь образца или ссылки у Вас не найдётся случайно?
-
А можно просто создать скрипт, не использующий winbindd, но обеспечивающий при вводе в регистрационном окне графического DM имени и пароля пользователя в случае отсутствия такого зарегистрированного локального пользователя сверку введённых имени и пароля с находящимся на win сервере списком и в случае их наличия и соответсвия, создание такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузку? Причём доступ к списку получать, например, при помощи Кербероса. Если нельзя, то в чём конкретно заключается загвоздка?
-
Т.е., если я Вас правильно понял, можно только путём правки исходников для бинарника winbindd, в котором уже забит этот обязательный ввод машины в домен, и последующей их компиляции?
А с помощью создания скриптового модуля (с использованием или без существующего winbindd) никак нельзя добиться желаемого результата?
-
Но Вы писали-то свой модуль?
Или можно ли взять за основу etc\init.d\winbind и, что-то изменив в нём (и что конкретно), добиться нужного результата?
-
Керберос у меня прекрасно настроился прямо из-под Yast (без всяких дедовских способов, таких как редактирование файлов конфигурации) и выдаёт tgt билет.
А вот дальше начинаются проблемы. В и-нете нашёл только описание авторизации через winbind. Через Yast без ввода машины в домен обойтись нельзя, а значит - это "не для нас". Путём ручного редактирования smb.conf, но без последующего запуска "net ads join", winbind после запуска выдаёт в "messages":
"initialize_winbindd_cache: clearing cache and re-creating with version number 1
winbindd/winbindd_util.c:init_domain_list(740)
Could not fetch our SID - did we join?
winbindd/winbindd.c:main(1285)
unable to initialize domain list"
и выгружается (хотя на некоторых форумах утверждают, что должен работать).
Вы писали, что подсоединялись без winbind с помощью "nss модуля":
"Необходимо найти (скорее всего придется написать самому) модуль nss для базы passwd, чтобы он вёл локальную базу вендовых пользователей и на запросы выдавал uid,gid,shell,home."
Этот модуль настраивается через nsswitch.conf? Среди служб в Yast я ничего связанного с nss, кроме winbind, не нашёл. Не могли бы Вы уточнить название модуля (или привести его содержание), а также более подробно описать его настройку?
Заранее благодарю.
-
А Вы не могли бы тогда дать пошаговое руководство настройки кербероса с кинитом без ввода пароля серверного админ-а?
-
gogi писал(а) Fri, 11 September 2009 19:54 1. Необходимо найти (скорее всего придется написать самому) модуль nss для базы passwd, чтобы он вёл локальную базу вендовых пользователей и на запросы выдавал uid,gid,shell,home. Если имеете даже небольшие навыки программирования на C, то это вполне решаемая задача.
2. Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD. Если он не будет стыковаться с вашим модулем nss, то, возможно, самому написать ещё модуль pam для аутентификации в kerberos,например, на основе вызова kinit.
1. А нельзя ли этот модуль nss (или его содержание) как-нибудь "подцепить" из winbind (там так всё удобно настраивается в yast2, а к программированию я не имею никакого отношения)?
2. Если я Вас правильно понял из последующих сообщений, упомянутой здесь аналогичной альтернативы kerberos'у оказывается нет (без пароля серверного админ-а). В связи с этим возникает вопрос, а вызов kinit не требует ли получения так называемого "билета" с соответствующим вводом пароля серверного админ-а?
Уточните, пожалуйста.
-
Но в моём случае такая аутентификация пройдёт (по LDAP же не проходила, а openLDAP, судя по всему приведённому там нет, или я ошибаюсь?)?
-
gogi писал(а) Fri, 11 September 2009 19:54 Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD.
Т.е., если я Вас правильно понял, Вы считаете, что у линуксовских модулей kerberos 5 или аналогичных (Winbind, LDAP?) проблем с аутентификацией на виндовском сервере нет? Проблема только в создании новых пользователей по результатам этой аутентификации?
Уточните, пожалуйста.
-
gogi писал(а) Fri, 11 September 2009 17:57 Если в домене оставлена только kerberos аутентификация, то можно поступить, как я писал в прошлый раз (kinit + mount.cifs -k).
Логиниться на юникс машину в этих случаях можно с любым логином (напр. одним для всех, или даже автологином).
Однозначно нужно, чтобы у каждого пользователя, зарегистрированного на сервере, создавался свой локальный профиль при первом входе, которым он в дальнейшем мог пользоваться (я не говорю о сохранении его на сервере - пусть на каждой машине будет свой локальный профиль). Всё, что нужно, - это чтобы Linux при вводе в регистрационном окне графического DM имени и пароля пользователя при отсутствии такого зарегистрированного локального пользователя мог сверить введённые имя и пароль с находящимся на win сервере списком и в случае их наличия и соответсвия, создать такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузить (с созданием на /home настроенного по умолчанию профиля, например, из /etc/skel). При повторном же входе пользователя (т.е. при уже наличии такого локального пользователя) Linux'у даже не обязательно обращаться к серверу для проверки (с монтированием же сетевых папок, как я понял, проблем нет).
Достаточно ли я чётко изложил задачу минимума (т.е. нет ли мест, допускающих неоднозначное толкование)? Решаема ли она в принципе, и если - да, то как конкретно? Если не было опыта практического её решения, то, хотя бы - теоретические соображения (с учётом всех описанных мной ранее попыток и результатов её решения).
-
Задача как раз состоит в том, чтобы, не имея админ-ских прав на Win сервере, предоставить пользователям сервера возможность входить на локальных комп-ах с Linux (естественно, без их предварительного создания в Linux'е - создавать вручную тыщу уже имеющихся и постоянно пополняющихся пользователей - это, сами понимаете, как-то не адекватно...) и, желательно, с доступом к их сетевым папкам.
Это решаемо в принципе? Или без допила этих виней (кому только могло стукнуть в голову сделать на них сервер ) никак не обойтись?
-
При попытке настройки через winbind выдаётся сообщение:
This host is not a member of the domain...
Join the domain ...?
После утвердительного ответа и ввода имени и пароля пользователя сервера (естественно, не администратора):
Failed to join domain: Failed to set account flags for machine account (NT_STATUS_ACCESS_DENIDED)
При попытке подключения с того же компьютера, но из-под Windows (c тем же именем комп-а):
В домене "..." обнаружена учётная запись для данного компьютера.
Использовать её?
А после утвердительного ответа и ввода пользователя:
Не удалось присоединить этот компьютер к домену из-за следующей ошибки:
Отказано в доступе
(Хотя он уже присоединён через эту Windows, в которой все загружаются нормально.)
Что нужно делать?
-
А по приведённым ниже портам сервера, полученным с помощью PortScan, можно определить, какие там возможны аутентификация и авторизация?
42 open name
53 open domain
88 open kerberos
135 open epmap
139 open netbios-ssn
389 open ldap
445 open microson-ds
464 open kpasswd
593 open hnp-rpc-epmap
636 open ldaps
1025 open blackjack
1027 open unknawn
1034 open activesync
1038 open mtqp
1048 open neod2
3268 open msn-qc
3269 open msn-qc-ssl
3389 open ms-wbt-server
Нужно, в принципе, только, чтобы Linux просто после первого ввода в окне регистрации DM имени и пароля серверного пользователя автоматически создавал одноимённого локального пользователя с uid и gid, которые стоят у него по умолчанию для вновь создаваемых локальных пользователей, и имеющего такой же доступ к папкам сервера, как и зарегистрированный на сервере пользователь.
Можно ли этого добиться с какой-либо установкой аутентификации + авторизации в Linux'e и без каких-либо изменений на Windows сервере?
-
На клиентской машине, на которой стояла WinXP32 с аутентификацией с помощью LDAP на Windows сервере, установил openSUSE11.1x86_64.
Задача состоит в том, чтобы вход пользователей оставался прежним - с аутентификацией на сервере windows.
Дополнительная информация.
Нужный windows домен системой обнаруживается, но к LDAP не подключается:
"udevd[719]: llnss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server
udevd[719]: nss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server
udevd[719]: nss_ldap: could not search LDAP server - Server is unavailable
udevd[719]: error resolving user 'root, GROUP=': Connection refused"
Запустил (под wine) ldp.exe (которая подключается к этому LDAP сервису даже с машин, не подключавшихся к серверу вообще), но она выдаёт: "Error <0x51>: Fail to connect to ...", а в консоли, из-под которой я её запустил:
"fixme:winsock:WSALookupServiceBeginW (0x32f8bc 0x00000710 0x32f914) Stub!
fixme:advapi:LsaOpenPolicy ((nu),0x32f834,0x00000001,0x32f84c) stub
fixme:advapi:LsaClose (0xcafe) stub"
С DHCP всё нормально - всё получает с этого win сервера и в и-нет выходит...
Что делать для решения данной задачи (не имея админ-ских прав на сервере)?
Заранее благодарю.
-
На клиентской машине, на которой стояла WinXP32 с аутентификацией с помощью LDAP на Windows сервере, установил openSUSE11.1x86_64.
Задача состоит в том, чтобы вход пользователей оставался прежним - с аутентификацией на сервере windows.
Дополнительная информация.
Нужный windows домен системой обнаруживается, но к LDAP не подключается:
"udevd[719]: llnss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server
udevd[719]: nss_ldap: failed to bind to LDAP server ...: Can't contact LDAP server
udevd[719]: nss_ldap: could not search LDAP server - Server is unavailable
udevd[719]: error resolving user 'root, GROUP=': Connection refused"
Запустил (под wine) ldp.exe (которая подключается к этому LDAP сервису даже с машин, не подключавшихся к серверу вообще), но она выдаёт: "Error <0x51>: Fail to connect to ...", а в консоли, из-под которой я её запустил:
"fixme:winsock:WSALookupServiceBeginW (0x32f8bc 0x00000710 0x32f914) Stub!
fixme:advapi:LsaOpenPolicy ((nu),0x32f834,0x00000001,0x32f84c) stub
fixme:advapi:LsaClose (0xcafe) stub"
С DHCP всё нормально - всё получает с этого win сервера и в и-нет выходит...
Что делать для решения данной задачи (не имея админ-ских прав на сервере)?
Заранее благодарю.
Подключение Linux к WinServer c LDAPservice
в Общий форум
Опубликовано
Скачал (http://sourceforge.net/projects/pamntlm/) на всякий случай pam_ntlm. Кстати, параллельно нашёл статью (http://www.opennet.ru/base/net/ad_postfix_auth.txt.html), где описывается использование sasl при проверке паролей пользователей на AD, правда для postfix (жаль, что, как Вы утверждаете, нельзя его использовать для логина новых пользователей, а то было бы как раз, что нужно).
Проштудировал мануал по mount.cifs, но опции -k не нашёл. Зато нашёл опцию sec=krb5 (или krb5i). При этом он использует не только что получившего по kinit билет пользователя сервера, а запрашивает пароль для залогиненного пользователя Линукса. В принципе, в дальнейшем, когда, я надеюсь, всё-таки удастся заставить Линукс создавать и загружать новых пользователей, идентичных логинищимся пользователям сервера, использование текущего пользователя будет оправданным (только вот лишний запрос пароля, конечно, не хотелось бы). Кстати, раньше, кажется, монтировался ресурс с указанием в виде //server/..., а теперь - //server.domain/..., или я ошибаюсь, и быть такого не могло?
Хочу добавить, что у меня в nsswitch.conf в данный момент практически везде стоит winbind. Это не помеха при текущем развитии дел?
И, если можно, уточнение по последнему пункту.
Значит, мне необходимо создать вручную одного локального пользователя с именем, совпадающим с таковым какого-либо пользователя сервера (меня, например), но без пароля. Затем, исправив текущее содержимое файлов на предоставленное Вами, я пытаюсь залогиниться, введя свои имя регистрации и пароль (с сервера, естественно). В случае удачи происходит стандартная первая загрузка данного пользователя, за исключением того, что ему устанавливается пароль с сервера, и система получает керберосовый билет. В дальнейшем этот пользователь будет уже стандартно логиниться, используя свой профиль, а любой впервые логинищийся на данном комп-е пользователь сервера теперь будет автоматически создаваться (в связи с этим возникает дополнительный вопрос: следует ли настроить керберос, чтобы срок действия билета был, например, многолетним?), получать свой билет и загружаться, а затем, кто не впервые - см. начало этого предложения.
Я всё правильно понял?