Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Active Directory права пользователя на чтение


Автор: -ser- 26.10.2011, 12:21
Active Directory. Надо определить имеет ли пользователь (по его имени) права для чтения из папки/файла.

Или как подзадача, получить список групп к которым пользователь принадлежит. Хотя здесь не уверен, возможно права могут быть установлены не на группу а на конкретного пользователя (или все таки по умолчанию он будет принадлежать как минимум к группе Domain Users). 

Пользователь не обязательно имеет учетную запись (нет его логина на сервере).

Программа должна работать не под административными привилегиями.


Пока у меня получается только для тех пользователей которые имеют учетную запись/логин. Для тех которые не имеют получается, но только если запускать программу с административными привилегиями, что немного странно. Если в конечном счете идет обращение к СОМ интерфейсу, то почему в одном случае проходит без админ прав а в другом нет.


( пожалуйста только конкретные советы кто сам это делал, не отправляйте к документации, уже две недели ее читаю )



Автор: GremlinProg 26.10.2011, 13:38
Цитата(-ser- @  26.10.2011,  14:21 Найти цитируемый пост)
Или как подзадача, получить список групп к которым пользователь принадлежит

Цитата(-ser- @  26.10.2011,  14:21 Найти цитируемый пост)
Пользователь не обязательно имеет учетную запись

Цитата(-ser- @  26.10.2011,  14:21 Найти цитируемый пост)
Программа должна работать не под административными привилегиями

подзадача может решаться c помощью LDAP, для него есть соответствующая API, в Wldap32.dll

примеры запросов можно нагуглить: http://www.google.com/search?q=ldap_connect
API реализован и в PHP, так что эти примеры актуальны и для WinAPI

для AD 2003-2008 следует использовать примеры с выставленными опциями LDAP_OPT_PROTOCOL_VERSION = 3 и LDAP_OPT_REFERRALS = 0

если нужно найти подгруппы, то в ldap_search достаточно передать такой вот фильтр: "member=dn", где dn - имя пользователя, для которого нужно определить набор групп

если не знаешь точно dn(distinguished name), то его можно просто найти: у учетной записи пользователя есть такой атрибут, dn
учетную запись можно найти вот таким простым запросом: "samaccountName=vasia"
где vasia - обычное имя пользователя, под которым он входит в домен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)