CAEman Опубликовано 28 августа, 2009 Жалоба Опубликовано 28 августа, 2009 На клиентской машине, на которой стояла 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 сервера и в и-нет выходит... Что делать для решения данной задачи (не имея админ-ских прав на сервере)? Заранее благодарю. Цитата
gogi Опубликовано 28 августа, 2009 Жалоба Опубликовано 28 августа, 2009 Цитата: На клиентской машине, на которой стояла WinXP32 с аутентификацией с помощью LDAP на Windows сервере, установил openSUSE11.1x86_64. Задача состоит в том, чтобы вход пользователей оставался прежним - с аутентификацией на сервере windows. Если аутентификацией с помощью лдап вы называете вендовую AD (на самом деле в АД аутентификация керберос и авторизация лдап), то вам нужен winbind (это прямое и самое простое решение). Если же вы аутентифицируетесь именно в ЛДАП (наверное, для венды есть такие реализации) то нужно, чтобы в этом каталоге были юниксовые юзеры со своими uid и gid, а также установлены и правильно настроенные pam-ldap и nss-ldap. Судя по вашим логам, nss-ldap у вас настроен не верно, так как не может подключиться к лдап серверу. Цитата
CAEman Опубликовано 4 сентября, 2009 Автор Жалоба Опубликовано 4 сентября, 2009 А по приведённым ниже портам сервера, полученным с помощью 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 сервере? Цитата
gogi Опубликовано 4 сентября, 2009 Жалоба Опубликовано 4 сентября, 2009 CAEman писал(а) Fri, 04 September 2009 16:00 А по приведённым ниже портам сервера, полученным с помощью 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 В данном случае открыт и ldap и kerberos. Все же в 95% в вендовых сетях вся авторизация в АД. Можно предположить, что у вас так же. Цитата: Нужно, в принципе, только, чтобы Linux просто после первого ввода в окне регистрации DM имени и пароля серверного пользователя автоматически создавал одноимённого локального пользователя с uid и gid, которые стоят у него по умолчанию для вновь создаваемых локальных пользователей, и имеющего такой же доступ к папкам сервера, как и зарегистрированный на сервере пользователь. Можно ли этого добиться с какой-либо установкой аутентификации + авторизации в Linux'e и без каких-либо изменений на Windows сервере? Для этого предназначен winbind, входящий в соcтав samba. Самба клиент вам нужен в любом случае, если хотите пользоваться сетевыми "папками". Кроме этого нужно настроить pam-winbind для сетевой аутентификации пользователей. Цитата
CAEman Опубликовано 4 сентября, 2009 Автор Жалоба Опубликовано 4 сентября, 2009 При попытке настройки через 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, в которой все загружаются нормально.) Что нужно делать? Цитата
gogi Опубликовано 4 сентября, 2009 Жалоба Опубликовано 4 сентября, 2009 CAEman писал(а) Fri, 04 September 2009 19:20 При попытке настройки через 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) Что нужно делать? Для того, чтобы ввести машину в домен АД, нужны права администратора домена. Будет ли winbind полноценно работать без ввода машины в домен, я не знаю и не встречал такой реализации (последний сервер с АД я убрал три года назад). Могу предложить более простой способ, если он вас устроит. Нужно установить kerberos client. Тогда, получив билет пользователя АД (kinit имя_юзера) вы сможете обращаться к дозволенным вам сервисам: например, смонтировать каталог можно mount.cifs с ключем -k. Далее, если хотите вместо kinit набирать этот паролль при входе в систему, нужно установить и настроить pam_krb5 (в случае реализации MIT). Только имейте в виду, что пользователь также должен быть прописан на этой юникс машине (можно и без пароля: на керберос он будет аутентифицироваться, а uid gid ... получать локально). Подобная реализация описана, например, здесь http://www.windowsnetworking.com/articles_tutorials/Authenti cating-Linux-Active-Directory.html Цитата
CAEman Опубликовано 11 сентября, 2009 Автор Жалоба Опубликовано 11 сентября, 2009 Задача как раз состоит в том, чтобы, не имея админ-ских прав на Win сервере, предоставить пользователям сервера возможность входить на локальных комп-ах с Linux (естественно, без их предварительного создания в Linux'е - создавать вручную тыщу уже имеющихся и постоянно пополняющихся пользователей - это, сами понимаете, как-то не адекватно...) и, желательно, с доступом к их сетевым папкам. Это решаемо в принципе? Или без допила этих виней (кому только могло стукнуть в голову сделать на них сервер ) никак не обойтись? Цитата
gogi Опубликовано 11 сентября, 2009 Жалоба Опубликовано 11 сентября, 2009 CAEman писал(а) Fri, 11 September 2009 14:46 Задача как раз состоит в том, чтобы, не имея админ-ских прав на Win сервере, предоставить пользователям сервера возможность входить на локальных комп-ах с Linux (естественно, без их предварительного создания в Linux'е - создавать вручную тыщу уже имеющихся и постоянно пополняющихся пользователей - это, сами понимаете, как-то не адекватно...) и, желательно, с доступом к их сетевым папкам. Это решаемо в принципе? Или без допила этих виней (кому только могло стукнуть в голову сделать на них сервер ) никак не обойтись? Можно разделить два различных уровня интеграции. По правилам MS залогиниться в домене AD можно только с машины, введенной в домен. А ввести машину может администратор домена. Существует ли способ это обойти - я не знаю. Перерывайте информацию по samba и winbind. Но пользоваться ресурсами windows сервера (напр. расшареными папками) можно и не вводя машину в домен. Например, если на сервере установлена поддержка старых клиентов (до win2000, насколько я знаю, по умолчанию она стоит) то можно примонтировать ресурс с ntlm аутентификацией $ mount.cifs ... ... -o user=... password=... Если в домене оставлена только kerberos аутентификация, то можно поступить, как я писал в прошлый раз (kinit + mount.cifs -k). Логиниться на юникс машину в этих случаях можно с любым логином (напр. одним для всех, или даже автологином). Цитата
CAEman Опубликовано 11 сентября, 2009 Автор Жалоба Опубликовано 11 сентября, 2009 gogi писал(а) Fri, 11 September 2009 17:57 Если в домене оставлена только kerberos аутентификация, то можно поступить, как я писал в прошлый раз (kinit + mount.cifs -k). Логиниться на юникс машину в этих случаях можно с любым логином (напр. одним для всех, или даже автологином). Однозначно нужно, чтобы у каждого пользователя, зарегистрированного на сервере, создавался свой локальный профиль при первом входе, которым он в дальнейшем мог пользоваться (я не говорю о сохранении его на сервере - пусть на каждой машине будет свой локальный профиль). Всё, что нужно, - это чтобы Linux при вводе в регистрационном окне графического DM имени и пароля пользователя при отсутствии такого зарегистрированного локального пользователя мог сверить введённые имя и пароль с находящимся на win сервере списком и в случае их наличия и соответсвия, создать такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузить (с созданием на /home настроенного по умолчанию профиля, например, из /etc/skel). При повторном же входе пользователя (т.е. при уже наличии такого локального пользователя) Linux'у даже не обязательно обращаться к серверу для проверки (с монтированием же сетевых папок, как я понял, проблем нет). Достаточно ли я чётко изложил задачу минимума (т.е. нет ли мест, допускающих неоднозначное толкование)? Решаема ли она в принципе, и если - да, то как конкретно? Если не было опыта практического её решения, то, хотя бы - теоретические соображения (с учётом всех описанных мной ранее попыток и результатов её решения). Цитата
gogi Опубликовано 11 сентября, 2009 Жалоба Опубликовано 11 сентября, 2009 CAEman писал(а) Fri, 11 September 2009 19:05 Однозначно нужно, чтобы у каждого пользователя, зарегистрированного на сервере, создавался свой локальный профиль при первом входе, которым он в дальнейшем мог пользоваться (я не говорю о сохранении его на сервере - пусть на каждой машине будет свой локальный профиль). Всё, что нужно, - это чтобы Linux при вводе в регистрационном окне графического DM имени и пароля пользователя при отсутствии такого зарегистрированного локального пользователя мог сверить введённые имя и пароль с находящимся на win сервере списком и в случае их наличия и соответсвия, создать такого же (имя и пароль) локального пользователя с настройками по умолчанию для вновь создаваемых и его загрузить (с созданием на /home настроенного по умолчанию профиля, например, из /etc/skel). При повторном же входе пользователя (т.е. при уже наличии такого локального пользователя) Linux'у даже не обязательно обращаться к серверу для проверки (с монтированием же сетевых папок, как я понял, проблем нет). Достаточно ли я чётко изложил задачу минимума (т.е. нет ли мест, допускающих неоднозначное толкование)? Решаема ли оCна в принципе, и если - да, то как конкретно? Если не было опыта практического её решения, то, хотя бы - теоретические соображения (с учётом всех описанных мной ранее попыток и результатов её решения). Задачу вы изложили достаточно ясно. Конкретно такую же решать не приходилось в силу её специфичности. (Не проще ли бы было обратиться к вендовому админу с просьбой ввести машины в домен). Тем не менее могу сказать определёно, что задача решаема. Один путь к решению (наверное, не лучший) я вам укажу. 1. Необходимо найти (скорее всего придется написать самому) модуль nss для базы passwd, чтобы он вёл локальную базу вендовых пользователей и на запросы выдавал uid,gid,shell,home. Если имеете даже небольшие навыки программирования на C, то это вполне решаемая задача. 2. Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD. Если он не будет стыковаться с вашим модулем nss, то, возможно, самому написать ещё модуль pam для аутентификации в kerberos,например, на основе вызова kinit. Вот и выбитайте из четырёх: обратиться к вендовому админу, поискать в сети преемлемое решение, изобрести предложенные мной костыли или забросить эту затею. По теме можно почитать ещё здесь, но, увы, пароль админа АД там известен. http://www.cyberguru.ru/operating-systems/windows-admin/linu x-authentication.html Цитата
CAEman Опубликовано 11 сентября, 2009 Автор Жалоба Опубликовано 11 сентября, 2009 gogi писал(а) Fri, 11 September 2009 19:54 Нужно установить и настроить pam_krb5 или аналогичный модуть для аутентификации в AD. Т.е., если я Вас правильно понял, Вы считаете, что у линуксовских модулей kerberos 5 или аналогичных (Winbind, LDAP?) проблем с аутентификацией на виндовском сервере нет? Проблема только в создании новых пользователей по результатам этой аутентификации? Уточните, пожалуйста. Цитата
gogi Опубликовано 11 сентября, 2009 Жалоба Опубликовано 11 сентября, 2009 CAEman писал(а) Fri, 11 September 2009 20:07 Т.е., если я Вас правильно понял, Вы считаете, что у линуксовских модулей kerberos 5 или аналогичных (Winbind, LDAP?) проблем с аутентификацией на виндовском сервере нет? Проблема только в создании новых пользователей по результатам этой аутентификации? Уточните, пожалуйста. Это относится к pam модулям kerberos и winbind (последний, как вы сами видели, требует ввода машины в домен). Молуль pam_ldap может проходить аутентификацию в openldap или в других лдап каталогах, но НЕ в AD, поскольку аутентификация кербесос и лдап существенно различаются. Цитата
CAEman Опубликовано 11 сентября, 2009 Автор Жалоба Опубликовано 11 сентября, 2009 Но в моём случае такая аутентификация пройдёт (по LDAP же не проходила, а openLDAP, судя по всему приведённому там нет, или я ошибаюсь?)? Цитата
gogi Опубликовано 11 сентября, 2009 Жалоба Опубликовано 11 сентября, 2009 CAEman писал(а) Fri, 11 September 2009 21:02 Но в моём случае такая аутентификация пройдёт (по LDAP же не проходила, а openLDAP, судя по всему приведённому там нет, или я ошибаюсь?)? Не ошибаетесь, серверы windows поддерживают аутентификацию kerberos, а также ntlm для совместимости со старыми клиентами. Аутентификация ldap там если и реализуема, то только сторонними средствами. Цитата
CAEman Опубликовано 18 сентября, 2009 Автор Жалоба Опубликовано 18 сентября, 2009 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 не требует ли получения так называемого "билета" с соответствующим вводом пароля серверного админ-а? Уточните, пожалуйста. Цитата
gogi Опубликовано 18 сентября, 2009 Жалоба Опубликовано 18 сентября, 2009 CAEman писал(а) Fri, 18 September 2009 19:48 1. А нельзя ли этот модуль nss (или его содержание) как-нибудь "подцепить" из winbind (там так всё удобно настраивается в yast2, а к программированию я не имею никакого отношения)? Не знаю, с winbind не возился. Цитата: 2. Если я Вас правильно понял из последующих сообщений, упомянутой здесь аналогичной альтернативы kerberos'у оказывается нет (без пароля серверного админ-а). В связи с этим возникает вопрос, а вызов kinit не требует ли получения так называемого "билета" с соответствующим вводом пароля серверного админ-а? Уточните, пожалуйста. - Может быть, кроме керберос, есть смысл поискать информация о pam_ntlm или pam_samba. - В результате керберос аутентификации Вы получите tgt билет, выданный пользователю, а для этого достаточно ввода пользовательского пароля. Цитата
CAEman Опубликовано 18 сентября, 2009 Автор Жалоба Опубликовано 18 сентября, 2009 А Вы не могли бы тогда дать пошаговое руководство настройки кербероса с кинитом без ввода пароля серверного админ-а? Цитата
gogi Опубликовано 18 сентября, 2009 Жалоба Опубликовано 18 сентября, 2009 CAEman писал(а) Fri, 18 September 2009 21:45 А Вы не могли бы тогда дать пошаговое руководство настройки кербероса с кинитом без ввода пароля серверного админ-а? Только в общих чертах. Детальные руководства, если понадобятся, ищите в гугле. Но, вообще говоря, достаточно и манов. Существуют две основные реализации керберос. Они похожи, но названия файлов могут различаться. Я предполагаю керберос от MIT. 1. Установить клиентскую чать керберос. (в дебиане пакет называется krb5-user, у Вас - что-то похожее). 2. Настроить керберос на REALM из домена AD, напр MYORG.RU редактируя файл конфирурации - krb5.conf. 3. Дать команду $ kinit имя_пользователя и после запроса ввести пароль. В результате вы получите супер билет - tgt, который можно использовать для доступа к ресурсам указанного сервера. Юниксовый юзер (uid, gid) после выполнения пункта 3 не изменится. Цитата
CAEman Опубликовано 2 октября, 2009 Автор Жалоба Опубликовано 2 октября, 2009 Керберос у меня прекрасно настроился прямо из-под 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 Опубликовано 2 октября, 2009 Жалоба Опубликовано 2 октября, 2009 Подобного pam модуля я не встречал и даже не снаю, существует ли такой. Уж слижком специфична задача. Если не прибегать к написанию своего модуля, то, видимо, придется от чего-то отказаться: либо аутентифицироваться в АД всем юзерам с одним и теж же юниксовым uid, либо узнавать пароль админа АД и использовать winbind. Цитата
CAEman Опубликовано 2 октября, 2009 Автор Жалоба Опубликовано 2 октября, 2009 Но Вы писали-то свой модуль? Или можно ли взять за основу etc\init.d\winbind и, что-то изменив в нём (и что конкретно), добиться нужного результата? Цитата
gogi Опубликовано 2 октября, 2009 Жалоба Опубликовано 2 октября, 2009 Модуль pam мне приходилось писать совсем для другой задачи. Стоит ли взять ли за основу pam_winbind - не знаю. Нужно разбираться с его исходниками. Цитата
gogi Опубликовано 2 октября, 2009 Жалоба Опубликовано 2 октября, 2009 В догонку. /etc/init.d/winbind - это всего лишь сценарий запуска winbind. Его изменение в данном случае ни к чему не приведёт. Цитата
CAEman Опубликовано 2 октября, 2009 Автор Жалоба Опубликовано 2 октября, 2009 Т.е., если я Вас правильно понял, можно только путём правки исходников для бинарника winbindd, в котором уже забит этот обязательный ввод машины в домен, и последующей их компиляции? А с помощью создания скриптового модуля (с использованием или без существующего winbindd) никак нельзя добиться желаемого результата? Цитата
gogi Опубликовано 2 октября, 2009 Жалоба Опубликовано 2 октября, 2009 pam модули традиционно пишутся на C. Естественно, с последующей компиляцией. Ввод машины в домен, насколько я знаю, это обязательное условие winbind. Так что правки скриптов здесь не достаточно. Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.