Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Rozšíření AD schema pomocí LDF souboru
únor 05
Rozšíření AD schema pomocí LDF souboru

Zrovna v jedné konferenci padl dotaz na rozšiřování schematu Active Directory, tak jsem se rozhodl, že zde zveřejním svůj LDF soubor, kterým si ji sám rozšiřuji v testovacím prostředí.

Vytvářím si automaticky testovací prostředí pomocí PowerShell a XML souboru, který popisuje všechny stanice, servery, ADčko a instalace, které uvnitř mají být. A hodí se mi rozšířit si objekt uživatele o typ - jestli je to obyčejný uživatel, administrátor, nebo služební účet.

Jak na to? Stačí udělat jednoduchý LDF textový soubor, do něho nadefinovat nový atribut (v mém případě sevecek-VMB-account-type) a přidat ho jako volitelný k typu uživatel (user class).

Vzorový LDF soubor na schema update vypadá takto:

dn: CN=Sevecek-VMBuilder-Account-Type,CN=Schema,CN=Configuration,DC=X
changetype: ntdsSchemaAdd
objectClass: attributeSchema
ldapDisplayName: sevecek-VMB-AccountType
adminDisplayName: sevecek-VMB-AccountType
adminDescription: sevecek-VMB-AccountType
attributeId: 1.3.6.1.4.1.25005.102.1
attributeSyntax: 2.5.5.12
omSyntax: 64
isSingleValued: TRUE
searchFlags: 1

dn: CN=User,CN=Schema,CN=Configuration,DC=X
changetype: ntdsSchemaModify
add: mayContain
mayContain: 1.3.6.1.4.1.25005.102.1
-

dn:
changetype: modify
add: schemaUpdateNow
schemaUpdateNow: 1
-

Podstatné položky jsou vysvětleny v následující tabulce:

dn a ldapDisplayName atribut ldapDisplayName je to, co zobrazují a s čím pracují všechny konzole jako třeba DSA.MSC, nebo ADSIEDIT.MSC a co se také skriptuje. DN je jenom jméno definice atributu, takže se může lišit. Když byste se podívali do schematu, tak byste viděli takových rozdílů mnoho. Je to tak podle standardu.
adminDisplayName a adminDescription tohle zřejmě musíte vyplnit, protože jinak se atribut nezobrazeje ani v jedné konzoli. Tak to vyplňuju na stejnou hodnotu, jako je ldapDisplayName.
attributeSyntax a omSyntax Určuje typ atributu. Jestli je to řetězec, binární hodnota, nebo číslo. Kompletní seznamy hodnot naleznete tady v případě attributeSyntax a tady pro omSyntax.
Rychlá reference je tu:
2.5.5.12, 64 = text (unicode string)
2.5.5.10, 4 = binární data (octet string)
2.5.5.9, 2 = číslo (integer)
searchFlags tohle určuje například, jestli je hodnota atributu indexována (v mém případě bit 1). Ostatní referenci atributu searchFlags naleznete zde.
mayContain no a když máte atribut definovaný, ještě ho musíte přidat jako volitelný k třídě User. Upozorňuju, že první blok textu nekončí pomlčkou, protože je to přidání (changeType: add). Zatímco druhý blok musí končit pomlčkou, protože se jedná o modifikaci (changeType: modify).
schemaUpdateNow každý řadič domény (DC) má paměťovou keš obsahu schema. Po aktualizaci byste buď museli tedy počkat někam do pěti minut. Nebo rovnou zapsat do tohoto operational attributu (to je atribut RootDSE, proto je DN prázdné) a keš rovnou vysypat. Opět se jedná o changeType: modify, takže pomlčka na konci.

No a potom to už jenom naimportujete pomocí programu LDIFDE:. Musíte jen nahradit DC=x skutečným jménem vaší root domain vašeho forestu.

ldifde -i -f schema-ext.ldf -c dc=x dc=gopas,dc=virtual

 

Comments

There are no comments for this post.

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments