Подключал намедни линуксовый сервис для авторизации через AD, еле нашел описание соответствий атрибутов и их полей, да и те все на английском, что не очень удобно при русскоязычной системе, потому что хрен поймешь какие параметры за что отвечают. Чтобы каждый раз не выискивать их adexplorer’ом, решил составить таблицу основных атрибутов Active Directory.
Attribute \ Атрибут | Англоязычное название | Русскоязычное название | Value \ Значение |
OU (Organizational Unit) \ Подразделение | |||
distinguishedName | Distinguished Name | Отличительное (уникальное) имя | OU=Компания,DC=domain,DC=com |
name | Компания | ||
Group \ Группа | |||
distinguishedName | Distinguished Name | Отличительное (уникальное) имя | CN=Группа,OU=Компания,DC=domain,DC=com |
name | Группа | ||
member | Members | Члены группы (какие пользователи входят в данную группу) | CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com |
User \ Пользователь | |||
DN | Distinguished Name | Отличительное (уникальное) имя | CN=Сергей Петрович Иванов,OU=Компания,DC=domain,DC=com |
DC | Domain Component | Компонент(класс) доменного имени. | DC=domain,DC=com |
OU | Organizational Unit | Подразделение | Компания |
CN | Common Name | Общее имя | Сергей Петрович Иванов |
givenName | First name | Имя | Сергей Петрович |
name | Full name | Полное имя | Сергей Петрович Иванов |
sn (SurName) | Last name | Фамилия | Иванов |
displayName | Display Name | Выводимое имя | Сергей Петрович Иванов |
Электронная почта | mail@domain.com | ||
sAMAccountName | User logon name (pre-Windows 2000) | Имя входа пользователя (пред-Windows 2000) | IvanovSP |
userPrincipalName | User logon name | Имя входа пользователя | IvanovSP@domain.com |
memberOf | Member Of | Член групп (в какую группу входит данный пользователь) | CN=Группа,OU=Компания,DC=domain,DC=com |
Стоит отметить, что пользовательский displayName ≠ CN = Full name\Полное имя = namе
, что можно видеть на последнем скрине.
Для более наглядного понимая приложу скрины:
Атрибут userAccountControl
Иногда надо понять включена или отключена учетная запись в AD. Или что еще с ней вообще происходит. За это отвечает атрибут userAccountControl, который является суммой нескольких свойств атрибутов. При этом, значение 512 является значением по умолчанию при всех снятых флагах на вкладке «Учетная запись» и каждый дополнительный параметр прибавляется к нему. Например, значения атрибута userAccountControl для наиболее распространенных случаев:
512
— Включена (Enabled)
514 (512+2)
— Отключена (Disabled)
66048 (512+65536)
— Включена, срок действия пароля не ограничен (Enabled, password never expires)
66050 (512+65536+2)
— Отключена, срок действия пароля не ограничен (Disabled, password never expires)
Список основных значений атрибутов userAccountControl:
HEX | DEC | Описание |
0x00000002 | 2 | Учетная запись отключена |
0x00000010 | 16 | Учетная запись заблокирована |
0x00000020 | 32 | Пароль не требуется |
0x00000040 | 64 | Запретить смену пароля пользователем |
0x00000080 | 128 | Хранить пароль, используя обратимое шифрование |
0x00000200 | 512 | Учетная запись по умолчанию. Представляет собой типичного пользователя |
0x00010000 | 65536 | Срок действия пароля не ограничен |
0x00040000 | 262144 | Для интерактивного входа в сеть нужна смарт-карта |
0x00400000 | 4194304 | Без предварительной проверки подлинности Kerberos |
0x00800000 | 8388608 | Пароль пользователя истек |
Подробное описание всех атрибутов
Атрибут контроля учетных записей пользователей userAccountControl является одним из важнейших атрибутов пользователя. Все администраторы Active Directory так или иначе используют этот атрибут в своей работе, но далеко не все понимают, что он из себя представляет и как работает.
Для примера возьмем самую простую, рутинную операцию — активация учетной записи. К вам обращается пользователь с жалобой на то, что его учетная запись отключена. Вы открываете оснастку Active Directory Users and Computers (ADUC), находите пользователя, открываете свойства его учетной записи и снимаете галочку «Account is disabled».
Задача выполнена, пользователь доволен. Но при чем тут userAccountControl спросите вы. А при том, что ставя галочку, вы меняете значение именно этого атрибута. Большинство свойств пользователя, представленных в этом окне, не являются самостоятельными атрибутами. Каждое из них является битом (флагом), который может принимать значение 1 (true) или 0 (false), но все эти значения не хранятся в виде отельных атрибутов в Active Directory, а являются частью одного единственного атрибута userAccountControl.
Таким образом, UserAccountControl представляет из себя битовую маску (bitwise) длиной в 32 бита (4 байта), где каждый параметр учетной записи является битом этой маски. Соответственно в зависимости от значений этих параметров и вычисляется общее значение userAccountControl.
Для наглядности разберем UserAccountControl по запчастям и поместим их в табличку.
Bit | Decimal | Hex | Binary | Flag |
0 | 1 | 0x00000001 | 0000 0000 0000 0000 0000 0000 0000 0001 | SCRIPT |
1 | 2 | 0x00000002 | 0000 0000 0000 0000 0000 0000 0000 0010 | ACCOUNTDISABLE |
2 | 4 | 0x00000004 | 0000 0000 0000 0000 0000 0000 0000 0100 | |
3 | 8 | 0x00000008 | 0000 0000 0000 0000 0000 0000 0000 1000 | HOMEDIR_REQUIRED |
4 | 16 | 0x00000010 | 0000 0000 0000 0000 0000 0000 0001 0000 | LOCKOUT |
5 | 32 | 0x00000020 | 0000 0000 0000 0000 0000 0000 0010 0000 | PASSWD_NOTREQD |
6 | 64 | 0x00000040 | 0000 0000 0000 0000 0000 0000 0100 0000 | PASSWD_CANT_CHANGE |
7 | 128 | 0x00000080 | 0000 0000 0000 0000 0000 0000 1000 0000 | ENCRYPTED_TEXT_PWD_ALLOWED |
8 | 256 | 0x00000100 | 0000 0000 0000 0000 0000 0001 0000 0000 | TEMP_DUPLICATE_ACCOUNT |
9 | 512 | 0x00000200 | 0000 0000 0000 0000 0000 0010 0000 0000 | NORMAL_ACCOUNT |
10 | 1024 | 0x00000400 | 0000 0000 0000 0000 0000 0100 0000 0000 | |
11 | 2048 | 0x00000800 | 0000 0000 0000 0000 0000 1000 0000 0000 | INTERDOMAIN_TRUST_ACCOUNT |
12 | 4096 | 0x00001000 | 0000 0000 0000 0000 0001 0000 0000 0000 | WORKSTATION_TRUST_ACCOUNT |
13 | 8192 | 0x00002000 | 0000 0000 0000 0000 0010 0000 0000 0000 | SERVER_TRUST_ACCOUNT |
14 | 16384 | 0x00004000 | 0000 0000 0000 0000 0100 0000 0000 0000 | |
15 | 32768 | 0x00008000 | 0000 0000 0000 0000 1000 0000 0000 0000 | |
16 | 65536 | 0x00010000 | 0000 0000 0000 0001 0000 0000 0000 0000 | DONT_EXPIRE_PASSWORD |
17 | 131072 | 0x00020000 | 0000 0000 0000 0010 0000 0000 0000 0000 | MNS_LOGON_ACCOUNT |
18 | 262144 | 0x00040000 | 0000 0000 0000 0100 0000 0000 0000 0000 | SMARTCARD_REQUIRED |
19 | 524288 | 0x00080000 | 0000 0000 0000 1000 0000 0000 0000 0000 | TRUSTED_FOR_DELEGATION |
20 | 1048576 | 0x00100000 | 0000 0000 0001 0000 0000 0000 0000 0000 | NOT_DELEGATED |
21 | 2097152 | 0x00200000 | 0000 0000 0010 0000 0000 0000 0000 0000 | USE_DES_KEY_ONLY |
22 | 4194304 | 0x00400000 | 0000 0000 0100 0000 0000 0000 0000 0000 | DONT_REQ_PREAUTH |
23 | 8388608 | 0x00800000 | 0000 0000 1000 0000 0000 0000 0000 0000 | PASSWORD_EXPIRED |
24 | 16777216 | 0x01000000 | 0000 0001 0000 0000 0000 0000 0000 0000 | TRUSTED_TO_AUTH_FOR_DELEGATION |
25 | 33554432 | 0x02000000 | 0000 0010 0000 0000 0000 0000 0000 0000 | |
26 | 67108864 | 0x04000000 | 0000 0100 0000 0000 0000 0000 0000 0000 | PARTIAL_SECRETS_ACCOUNT |
27 | 134217728 | 0x08000000 | 0000 1000 0000 0000 0000 0000 0000 0000 | |
28 | 268435456 | 0x10000000 | 10 000 000 000 000 000 000 000 000 000 | |
29 | 536870912 | 0x20000000 | 100 000 000 000 000 000 000 000 000 000 | |
30 | 1073741824 | 0x40000000 | 1 000 000 000 000 000 000 000 000 000 000 | |
31 | 2147483648 | 0x80000000 | 10 000 000 000 000 000 000 000 000 000 000 |
Всего 32 значения, хотя как можно заметить, используются далеко не все. Вот описание тех что используются:
SCRIPT — будет выполняться сценарий входа.
ACCOUNTDISABLE — учетная запись пользователя отключена.
HOMEDIR_REQUIRED — требуется домашняя папка.
LOCKOUT — учетная запись заблокирована.
PASSWD_NOTREQD — пароль не требуется. Этот флаг позволяет иметь полностью функционирующую учетную запись с пустым паролем, вне зависимости от действующей доменной политике паролей.
PASSWD_CANT_CHANGE — пользователь не может изменить пароль. На самом деле этот флаг регулируется разрешениями на объект пользователя, подробнее можно посмотреть здесь https://learn.microsoft.com/en-us/windows/win32/adsi/modifying-user-cannot-change-password-ldap-provider
ENCRYPTED_TEXT_PASSWORD_ALLOWED — указывает, будет ли AD хранить пароль в обратимом формате шифрования (Store password using reversible encryption), т.е. может ли пароль быть расшифрован. По умолчанию пароли хранятся в виде хеша, с использованием необратимого шифрования, т.е невозможно получить исходный пароль зная его хэш (за исключением использования полного перебора).
TEMP_DUPLICATE_ACCOUNT — учетная запись для пользователя, основная учетная запись которого находится в другом домене. Эта учетная запись предоставляет пользователю доступ к этому домену, но не к доменам, которые доверяют этому домену. Иногда его еще называют локальной учетной записью пользователя.
NORMAL_ACCOUNT — учетная запись пользователя по умолчанию.
INTERDOMAIN_TRUST_ACCOUNT — разрешение на доверие учетной записи для системного домена, который доверяет другим доменам.
WORKSTATION_TRUST_ACCOUNT — учетная запись компьютера под управлением рабочей станции Microsoft Windows NT 4.0, Microsoft Windows NT 4.0 Server, Microsoft Windows 2000 Professional или Windows 2000 Server, который является членом этого домена.
SERVER_TRUST_ACCOUNT — учетная запись компьютера для контроллера домена, который является членом этого домена.
DONT_EXPIRE_PASSWD — Срок действия пароля для учетной записи не ограничен (Password never expires). Этот флаг делает пароль пользователя бессрочным, вне зависимости от политики паролей в домене.
MNS_LOGON_ACCOUNT — это учетная запись для входа в MNS. Набор мажоритарных узлов ((Majority Node Set, MNS) представляет собой многосерверную конфигурацию с общей шиной хранения или без нее и кворумом, распределенным по всем серверам. Учетные записи входа в MNS можно использовать для настройки многоузлового кластера без использования общего жесткого диска.
SMARTCARD_REQUIRED — если этот флаг установлен, пользователь должен войти в систему с помощью смарт-карты.
TRUSTED_FOR_DELEGATION — если этот флаг установлен, учетная запись, под которой выполняется служба (учетная запись пользователя или компьютера) является доверенной для делегирования Kerberos. Любая такая служба может олицетворять клиента, запрашивающего службу. Чтобы включить службу для делегирования Kerberos, необходимо установить этот флаг в свойстве userAccountControl учетной записи службы.
NOT_DELEGATED — если этот флаг установлен, контекст безопасности пользователя не делегирован службе, даже если учетная запись службы настроена как доверенная для делегирования Kerberos.
USE_DES_KEY_ONLY — ограничить этот субъект использованием стандартных типов шифрования данных (DES).
DONT_REQUIRE_PREAUTH — эта учетная запись не требует предварительной проверки подлинности Kerberos для входа в систему.
PASSWORD_EXPIRED — срок действия пароля пользователя истек.
TRUSTED_TO_AUTH_FOR_DELEGATION — учетная запись включена для делегирования. Этот параметр позволяет службе, которая выполняется под учетной записью, использовать удостоверение клиента и выполнять проверку подлинности от имени этого пользователя на других удаленных серверах в сети. Этот параметр чувствителен к обеспечению безопасности, поэтому учетные записи, для которых он включен, должны строго контролироваться.
PARTIAL_SECRETS_ACCOUNT — учетная запись является контроллером домена только для чтения (RODC).
Как вычисляется текущее значение userAccountControl
Предположим у нас есть стандартная учетная запись пользователя (NORMAL_ACCOUNT) с бессрочным паролем (DONT_EXPIRE_PASSWORD). Берем оба значения в двоичном виде и проводим над ними операцию побитового ИЛИ (Bitwise OR):
00000000001000000000
00010000000000000000
00010000001000000000 = 66048 (Dec) = 0x10200 (Hex)
Этот пример я привел лишь для понимания того, что userAccountControl — это битовая маска, и все операции над ней проводятся побитно. В обычном случае можно просто сложить два десятичных значения:
512 + 65536 = 66048
Как посмотреть значение userAccountControl
Проще всего посмотреть текущее значение атрибута userAccountControl с помощью оснастки ADUC. Для этого надо включить отображение расширенных опций (Advanced features),
найти нужную учетную запись, перейти на вкладку редактора атрибутов (Attribute Editor) и найти атрибут userAccountControl. Как видите, он отображается в шестнадцатеричном виде и к нему прилагается название включенных флагов.
Если же выбрать атрибут и раскрыть его, то значение будет показано уже в десятичном виде.
Можно узнать значение userAccountControl и с помощью PowerShell. Например:
Get-ADUser ivanov_ii -Properties * | select Name,userAccountControl
Как видите, стандартный командлет возвращает только десятичное значение атрибута, без расшифровки флагов. Но это можно легко исправить с помощью найденного мной на просторах интернета скрипта вот такого содержания:
Function ConvertUserAccountControl ([int]$UAC)
{
$UACPropertyFlags = @(
"SCRIPT",
"ACCOUNTDISABLE",
"RESERVED",
"HOMEDIR_REQUIRED",
"LOCKOUT",
"PASSWD_NOTREQD",
"PASSWD_CANT_CHANGE",
"ENCRYPTED_TEXT_PWD_ALLOWED",
"TEMP_DUPLICATE_ACCOUNT",
"NORMAL_ACCOUNT",
"RESERVED",
"INTERDOMAIN_TRUST_ACCOUNT",
"WORKSTATION_TRUST_ACCOUNT",
"SERVER_TRUST_ACCOUNT",
"RESERVED",
"RESERVED",
"DONT_EXPIRE_PASSWORD",
"MNS_LOGON_ACCOUNT",
"SMARTCARD_REQUIRED",
"TRUSTED_FOR_DELEGATION",
"NOT_DELEGATED",
"USE_DES_KEY_ONLY",
"DONT_REQ_PREAUTH",
"PASSWORD_EXPIRED",
"TRUSTED_TO_AUTH_FOR_DELEGATION",
"RESERVED",
"PARTIAL_SECRETS_ACCOUNT"
"RESERVED"
"RESERVED"
"RESERVED"
"RESERVED"
"RESERVED"
)
return (0..($UACPropertyFlags.Length) | where {$UAC -bAnd [math]::Pow(2,$_)} | foreach {$UACPropertyFlags[$_]}) -join ” | ”
}
Эта функция получает на входе текущее значение userAccountControl в десятичном виде, а на выходе возвращает все включенные флаги (биты). С ее помощью мы можем вывести все флаги, вот примерно так:
Get-ADUser petrov_p -Properties * | fl Name,userAccountControl,@{Label="Flags";Expression={ConvertUserAccountControl($_.userAccountControl)}}
Еще одна распространенная ситуация — когда требуется найти всех пользователей с каким то конкретным флагом, например всех у кого срок действия пароля не истекает. Тут есть два пути.
Путь первый — можно просто искать всех пользователей с определенным значением userAccountControl, в случае с бессрочным паролем это будет 66048. Соответственно берем это значение и добавляем его в обычный фильтр:
Get-ADUser -Properties * -Filter {userAccountControl -like 66048} | select Name, userAccountControl
или в LDAP-фильтр, кому как больше нравится:
Get-ADUser -Properties * -LdapFilter "(userAccountControl=66048)" | select Name, userAccountControl
В большинстве ситуаций этого нехитрого фильтра вполне хватает. Но все таки не надо забывать, что userAccountControl включает в себя много разных флагов, и вполне может быть так, что кроме бессрочного пароля у пользователя включен еще какой нибудь из них. И в этом случае этот пользователь под фильтр не попадет, поскольку значение userAccountControl у него будет отличаться.
И тут нам поможет путь самурая второй — правила сопоставления, которые можно использовать для побитового сравнения числовых значений. Правила сопоставления имеют следующий синтаксис:
<attribute name>:<matching rule OID>:=<value>
Здесь attribute name — LDAPDisplayName имя атрибута, matching rule OID — идентификатора объекта правила (OID), value — значение, используемое для сравнения. Имейте в виду, что в этой строке нельзя использовать пробелы. Значение должно быть десятичным числом, оно не может быть шестнадцатеричным числом или константным именем.
Вот правила, которые можно использовать для поиска.
Идентификатор OID правила сопоставления | Идентификатор строки | Описание |
---|---|---|
1.2.840.113556.1.4.803 | LDAP_MATCHING_RULE_BIT_AND | Совпадение обнаруживается только в том случае, если все биты из атрибута соответствуют значению. Это правило эквивалентно побитовому И (bitwise AND) |
1.2.840.113556.1.4.804 | LDAP_MATCHING_RULE_BIT_OR | Совпадение обнаруживается, если какие-либо биты из атрибута соответствуют значению. Это правило эквивалентно побитовому ИЛИ (bitwise OR) |
С помощью этих правил мы можем найти значение для конкретного флага, вне зависимости от остальных. Вот так будет выглядеть команда для всех пользователей с неистекающим паролем:
Get-ADUser -Properties * -LdapFilter "(userAccountControl:1.2.840.113556.1.4.804=65536)" | select Name, userAccountControl
Как видите, результат отличается от предыдущего поиска. В выборку попала учетная запись гостя, поскольку у нее включена еще пара опций. Это в тестовой среде, в бою разница была бы гораздо больше.
Как изменить значение userAccountControl
Некоторые флаги userAccountControl можно изменять из оснастки ADUC, путем установки галочек. Для примера возьмем многострадальную 🙂 учетную запись ivanov_ii и поставим ему галку ″Password never Expires″.
Теперь проверим, значение атрибута. Изначально у него было значение 512 (NORMAL_ACCOUNT), теперь добавилось 65536 (DONT_EXPIRE_PASSWORD). Итого 66048 или 0x10200 в шестнадцатеричном виде.
Можно зайти с другой стороны и изменить значение userAccountControl напрямую, из редактора атрибутов. Возьмем получившееся значение 66048 и добавим к нему 2, тем самым отключив аккаунт.
Возвращаемся обратно к свойствам пользователя и видим, что галка ″Account is disabled″ установлена.
Можно менять значение userAccountControl и с помощью PowerShell. Так командлет Set-ADUser позволяет изменять некоторые флаги.
Для примера берем все ту же учетную запись ivanov_ii и возвращаем ее в исходное состояние. Затем устанавливаем ей флаг DONT_EXPIRE_PASSWORD командой:
Set-ADUser ivanov_ii -PasswordNeverExpires $true
Как и оснастка ADUC, командлет Set-ADUser может изменять не все флаги, по крайней мере явно. Но зато с его помощью можно менять значение userAccountControl напрямую. Добавим учетной записи флаг PASSWD_NOTREQD такой командой:
Set-ADUser ivanov_ii -Replace @{userAccountControl=66080}
Ну и начиная с 5 версии PowerShell для редактирования userAccountControl добавлен специальный командлет Set-ADAccountControl, который умеет менять почти все имеющиеся флаги. Возьмем его и уберем все лишнее с учетной записи:
Set-ADAccountControl -Identity ivanov_ii -PasswordNeverExpires $false -PasswordNotRequired $false
Есть у userAccountControl флаги, которые невозможно изменить в принудительном порядке. Так например если вы захотите установить флаг LOCKOUT, т.е. заблокировать пользователя, то у вас ничего не выйдет. Команда отработает, никаких ошибок не выдаст, но значение атрибута останется неизменным.
Скажу больше, даже если учетная запись пользователя действительно заблокирована, то значение userAccountControl останется неизменным. Дело в том, что флаг LOCKOUT был выпилен еще в Windows Server 2003 и заменен атрибутом msDS-User-Account-Control-Computed. При этом его описание до сих пор присутствует в официальной документации Microsoft.
Отдельно стоит упомянуть о флаге PASSWD_CANT_CHANGE. Этот флаг запрещает пользователю самостоятельно сменить свой пароль. Но если вы поставите галку ″User cannot change password″ в графической оснастке или проделаете эту операцию с помощью PowerShell, то значение userAccountControl никак не изменится. Дело в том, что эта операция не меняет значение атрибута, а вносит изменения в список доступа (Access Control List, ACL) пользователя. Если точнее, то ставится запрет на изменения пароля для объекта SELF, т.е. самого пользователя.
Конечно в документации есть небольшое уточнение на этот счет, но лично мне в целом непонятно, при чем тут вообще userAccountControl.
Данную тему можно развивать и дальше, но я пожалуй остановлюсь. Надеюсь у меня получилось хотя бы в общих чертах описать, что из себя представляет userAccountControl и как с ним обращаться.
Approved By
Anuraag Singh
Published On
May 27th, 2024
Reading Time
7 Minutes Reading
When working with Windows Active Directory IT admin must need to view user attributes, as it provides a next-level insight into the behavior, structure, and status of the object in question, which here is the user itself. With this list in their possession, the admins can conduct necessary changes in the AD environment with ease. Moreover, it also serves as a historical record that other admins in the future can refer to and take guidance from. Not to mention, the organization itself becomes more in tune with the Active Directory service they are using.
Attribute analysis is done to make sure that the new users being added to the AD replicate the previously present entities. Given its importance, let’s jump straight to the most well-known method to view them.
Table of Content
- How to Get the Active Directory Attributes List Using ADUC?
- How to View User Attributes in Active Directory With Active Directory Admin Center?
- Some Limitations of Attribute Checking Via ADUC and ADAC
- How to See User Attributes in Active Directory With PowerShell Scripts?
- Script Free Way to Find Active Directory Attributes List
- Conclusion
How to Get the Active Directory Attributes List Using ADUC?
The basic answer on how to check user attributes in Active Directory is the ADUC portal. It is not wrong to assume that Active Directory Users and Computers snap-in is present in almost all AD environments. Therefore, it becomes the go-to place for admins to seek out information on their Windows AD. Let us see how to use it.
- Search for ADUC on your workstation and open it.
- Expand the list view from the left pane and go to Users.
- Select the user whose attributes you wish to see.
- A window opens, giving you a subset of the information.
However, it is important to mention that the default attributes only show you a piece of preliminary information about the user object. For minor tasks or a quick overview, this is sufficient. Moreover, if administrators want a detailed overview, they must do it via the Attribute Editor.
As this is hidden in the default view, admins have to backtrack and toggle the Advanced Features option under the View option of the main menu ribbon of ADUC.
After that, repeat the same process to open the User Properties window. This time, you see an expanded set of tabs in the same window. Select the Attribute Editor tab and scroll through or type the initial letter of the attribute you wish to see.
Apart from ADUC, there is also another powerful GUI-based solution built into Active Directory. You don’t have to go anywhere else; we have the instructions to use it right here. Simply hop on to the next part.
How to View User Attributes in Active Directory With Active Directory Admin Center?
- Search for ADAC (use the full form) and open the first option. Once the window is available, scroll till you see the global search option.
- Type the name of the user object whose attributes you want to view and press enter.
- Choose the object from the list view.
- In the object details section select Extensions
- In the Extensions dashboard click on Attribute Editor.
The above two simple GUI methods may seem good at first but they are not usable in every case. This is due to some inherent disadvantages. So let us see what these disadvantages are.
Some Limitations of Attribute Checking Via ADUC and ADAC
- Sometimes the Attribute Editor tab of the Properties page may be blank. To fix it click on the Filter option and mark the Mandatory and Optional Attributes options. Other than that, you can use the same filter tool to trim the list down to the Attributes that have a preset value.
- The Attribute Editor option present in both ADUC’s and ADAC’s options is rather powerful for the task we are using it for. So there is a risk that inexperienced administrators might make unwarranted changes.
- Another limitation is that many of these attributes are stuck on a view-only screen. Meaning admins can’t share the results of their search with interested parties like the organization’s executives. They have to manually type out all the information they see. The lack of a copy option also makes it difficult for the admin to assign the same attributes to any new user object they want to make.
- Even the attributes that can be edited or copied are present in a variety of formats. Ranging from hexadecimal to the 64-bit FileTime format for date attributes. Making them unpresentable without extra time spent editing and reformatting.
The ADUC and ADAC are not the only way to see user properties, we also have some scripting methods that admins can apply.
How to See User Attributes in Active Directory With PowerShell Scripts?
To use the Command Line do the following:
Press Windows + R Key and type cmd in the run box. On the command line type the following query
net user %username% /domain
Here you get a toned-down list of the attributes of a currently logged-in user.
Instead of a command line, you may as well utilize the PowerShell module. Two PowerShell commands get the job done.
The first one is to get the Active Directory attribute list of a single user:
get-aduser -Identity guest -Properties *
The second one is there to make a CSV output of all users:
get-aduser -Filter * -Properties * | export-csv -path C:\Users\Administrator\Desktop\export-all.csv
However, using the scripts poses the following difficulties.
- Your organization may have locked or disabled viewing via PowerShell commands.
- Although commands appear simple, they may not work.
- Moreover, like the previous method, even with these scripts, you are directly interacting with the AD. So there is a chance that you may end up changing the ad objects from their default setup.
- As in a script, it is even more difficult to guess the changes so novice admins are better off skipping the scripts.
So let us see an alternative approach to viewing the user object data that works from outside of your AD.
Script Free Way to Find Active Directory Attributes List
Attributes are nothing but specific properties that point out the status of an object. In the case of a user object, it may be as simple as finding out what OU a user is in or checking which accounts are locked in the AD. That’s why administrators can trust the GUI-based SysTools Active Directory Reporting Software for all their AD information gathering.
Download Now Purchase Now
It is fine-tuned to display the most notable attributes with a variety of filtering options. The steps to use the tool are as follows:
Step 1. Open the tool after using the default administrator credentials.
Step 2. Press the REGISTER DOMAIN CONTROLLER button.
Step 3. Type a Domain Friendly Name and IP address.
Step 4. Fill in the Admin ID and Password, then hit Save and Continue.
Step 5. Go to Report Screen Select the All category under User Workload.
Step 6. Hit the Preview button and toggle its options to find the best viewing style.
Step 7. To get the User level data, hit Download and choose CSV.
Step 8. Save the CSV in a suitable location and view it in any appropriate app.
Note: While working with Winodws Active Directory, events like AD merger, restructure, etc, it creates an urgent need of migration. Additionally, it is always crucial to utilise a reliable approach to peform these task without any error. As it can result in business disruption and data loss scenraio. For such migration event in AD, SysTools offers one of its kind Active Directory Migration Tool. It ensure data security and easily migrate AD objects from one domain to another.
Conclusion
In this write-up, we gave admins the complete guide on how to check user attributes in Active Directory setup. With this, they are now in complete control of all the information present on the AD. Moreover, if the manual methods of attribute audit seem problematic, they can always go for the automated solution discussed above.
By Mohit Jha
With 5+ years of experience, Mohit is a Microsoft Certified expert known for his cloud migration, cyber security, and digital forensics expertise. He specializes in Microsoft 365, Exchange Server, and Azure AD migration, ensuring seamless transitions for organizations worldwide. His multifaceted role as a meticulous tech writer, diligent researcher, and astute editor underscores his commitment to delivering cutting-edge digital forensics and cloud migration strategies.
View all of Mohit Jha’s posts.
Редактор атрибутов Active Directory (Attribute Editor) это встроенный графический инструмент для редактирования любых свойств объектов AD (пользователей, компьютеров, групп, сервисных учетных записей). С помощью редактора атрибута вы можете получить и изменить значения атрибутов объектов AD, которые недоступны в свойствах на стандартных вкладках объектов в консоли ADUC.
Содержание:
- Встроенный Attribute Editor в консоли Active Directory Users and Computer
- Не отображается вкладка Attribute Editor через поиск Active Directory
- Редактирование атрибутов Active Directory с помощью ADSI Edit
Встроенный Attribute Editor в консоли Active Directory Users and Computer
Чтобы воспользоваться редактором атрибутов AD, вам нужно установить MMC оснастку dsa.msc (ADUC / Active Directory Users and Computer), которая входит в состав средств администрирования RSAT для Windows (Remote Server Administration Tools). Для установки компонентов нужно выполнить следующую PowerShell команду:
- В Windows 10/11:
Add-WindowsCapability –online –Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
- В Windows Server 2022/2019/2016/2012R2 установка ролей и компонентов выполняется с помощью командлета Install-WindowsFeature:
Install-WindowsFeature RSAT-ADDS
Встроенный редактор атрибутов Active Directory доступен в консоли ADUC, начиная с Windows Server 2008 R2.
Попробуйте открыть свойства любого пользователя в AD. Как вы видите основные атрибуты пользователя разделены на несколько вкладок. Основные из них:
- Общие (General) – основные свойства пользователя, которые задаются при создании учетной записи в AD (имя, фамилия, телефон, email и т.д.);
- Адрес (Address);
- Учетная запись (Account) – имя учетной записи (samAccountName, userPrincipalName). Здесь можно указать список компьютеров, на которых разрешено работать пользователю (LogonWorkstations), опции: пароль не истекает, пользователь не может сменить пароль, включена ли учетная запись и ее срок действия и т.д. Здесь же можно разблокировать пользователя, если его учетная запись заблокирована из-за неверно введенного пароля;
- Профиль (Profile) – можно настроить путь к профилю пользователя (в сценариях с перемещаемыми профилями ); скрипт, выполняемый при входе, домашнюю папку, сетевой диск;
- Телефоны (Telephones);
- Организация (Organization) – должность, департамент, компания пользователя, имя менеджера;
- Remote Control – настройки теневого подключения к сессии пользователя в Windows;
- Sessions – таймауты (лимиты) для RDP/RDS подключений;
- Member Of – список групп пользователя.
Чтобы изменить значение одного из атрибутов пользователя, просто измените значение в поле и сохраните изменения, нажав клавишу Apply или OK.
В окне редактора атрибутов вам доступен только базовый набор свойств пользователя, хотя в классе User в AD гораздо больше атрибутов (200+).
Чтобы отобразить расширенный редактор атрибутов, вам нужно включить в меню ADUC опцию View -> Advanced Features (Вид -> Дополнительные компоненты).
Теперь еще раз откройте свойства пользователя и обратите внимание, что появилась отдельная вкладка Attribute Editor. Если перейти на нее, перед вами откроется тот самый редактор атрибутов пользователя AD. Здесь в таблице представлен список всех атрибутов пользователя AD и их значения. Вы можете щелкнуть на любом атрибуте и изменить его значение. Например, изменив значение атрибута department, вы увидите, что сразу изменилось наименование департамента в свойствах пользователя на вкладке Organization.
Из редактора атрибутом можно скопировать значение поля distinguishedName (в формате
CN=Sergey A. Ivanov,OU=Users,OU=Msk,DC=winitpro,DC=ru
— уникальное имя объекта в AD), CN (
Common Name
), узнать дату создания учётной записи (whenCreated) и т.д.
Здесь же можно скопировать точные названия/значения атрибутов объектов для использования в ваших PowerShell скриптах.
Внизу окна редактора атрибутов AD присутствует кнопка Filter. По умолчанию в окне атрибутов отображаются только непустые атрибуты (включена опция Show only attributes that have values / Отображать только атрибуты со значениями). Если вы отключите эту опцию, в консоли будут показаны все атрибуты класса User. Также обратите внимание на опцию Show only writable attributes. Если включить ее, вам станут доступны только те атрибуты, на редактирование которых вам делегированы полномочия (если у вас нет прав на изменение атрибутов данного пользователя, список атрибутов будет пуст).
Также вы можете вывести только обязательные атрибуты объекта Filter -> Mandatory (для пользователя это
cn
,
objectCategory
,
objectClass
,
sAMAccountName
) или только дополнительные (необязательные атрибуты) – Filter -> Optional.
Для большинства атрибутов AD имеется встроенная функция декодирования значений. Например:
Не отображается вкладка Attribute Editor через поиск Active Directory
Основной недостаток редактора атрибутов AD, он не открывается в свойствах объекта, если вы нашли его через поиск (почему так сделано — я не понимаю). Для использования Attribute Editor вы должны развернуть в дереве AD контейнер (Organizational Unit, OU), в котором находится объект, найти в списке нужный объект и открыть его свойства (все это довольно не удобно).
Для себя я нашел небольшой лайфхак, который позволяет открыть редактор атрибутов пользователя, найденного через поиск в консоли ADUC.
Итак:
- С помощью поиска найдите нужного пользователя;
- Перейдите на вкладку со списком групп пользователя (Member of);
- Откройте одну из групп (желательно, чтобы в ней было как можно меньше пользователей);
- В свойствах группы перейдите на вкладку с членами группы (Member) и закройте (!) окно свойств пользователя;
- Теперь в списке членов группы щелкните по своему пользователю и перед вами откроется окно свойств пользователя со вкладкой Attribute Editor.
Также вы можете открыть редактор атрибутов пользователя без его ручного выбора в дереве AD через сохраненные запросы в консоли ADUC.
Либо вы можете использовать консол Active Directory Administrative Center (
dsac.msc
), в котором вкладка редактора атрибутов пользователя (компьютера) доступна даже через поиск (вкладка Extension).
Вместо Attribute Editor для просмотра и редактирования всех атрибутов пользователей, групп и компьютеров можно использовать командлеты PowerShell:
Просмотр значений всех атрибутов объектов:
- Пользователя:
Get-ADUser username -Properties *
- Компьютера:
Get-ADСomputer computername -Properties *
- Группы:
Get-ADGroup groupname -Properties *
Чтобы изменить атрибуты объектов в AD соответственно используются командлеты
Set-ADUser
,
Set-ADComputer
и
Set-ADGroup
.
Редактирование атрибутов Active Directory с помощью ADSI Edit
Консоль служебного редактора ADSI Edit (Active Directory Service Interface Edit) представляет собой более низкоуровневое средство для управления и редактирования объектов и атрибутов в LDAP каталогах (в том числе в разделах базы данных Active Directory — NTDS.dit). Консоль ADSI Edit можно использовать для редактирования атрибутов, объектов и разделов каталога, которые не доступны через стандартные MMC оснастки Active Directory, исправления ошибок Active Directory и различных объектов служб использующих AD для хранения конфигурации (Exchange, SCCM).
Чтобы запустить консоль ADSI Edit, выполните команду Win + R ->
adsiedit.msc
.
При первом запуске MMC консоли вам будет предложено выбрать контен наименования Active Directory, к которому нужно подключиться (Actions -> Connect to). Доступны следующие разделы:
- Default naming context
- Configuration
- RootDSE
- Schema
В нашем примере мы будем использовать консоль ADSI как редактор атрибутов пользователей/компьютеров, поэтому нужно подключиться к Default naming context.
Перед вами появиться ваша древовидная структура контейнеров и OU в AD. Здесь вы можете открыть свойства найти нужного объект Active Directory. Перед вами появится окно редактора атрибутов объекта. Здесь вы можете просмотреть или изменить значения свойств пользователя/компьютера/группы.
Будьте особо внимательными при редактировании разделов схемы и атрибутов объектов через ADSI Edit. Эта утилита позволяет писать изменения напрямую в базу данных, схему и конфигурацию AD, и обходить простейшие проверки и ограничения, которые есть в других MMC консолях. Рекомендуем создать резервную копию AD перед внесением изменений с помощь базы с помощью adsiedit.msc.