Loading...
 
[Zobrazit/Skrýt nabídky vlevo]
[Zobrazit/Skrýt nabídky vpravo]

LDAP na KTF

SkriptyPerl

LDAP


courierMailAccount

Attribute Required Description
mail Yes The full email address.
maildrop Yes The email address to forward to. May be a local alias or a remote email address.
mailsource No Message source.
Description No A description of this email address.


courierMailAlias

We only use the two required attributes and do not use either of the optional attributes. The maildrop attribute can be another email address or a local user on this machine. Here is an example LDIF entry for user1 v(e) domain3.example that forwards to fred v(e) domain.example

dn: mail=user1@domain3.example, o=domain3.example, o=hosting, dc=myhosting, dc=example

objectclass: top
objectclass: courierMailAlias
mail: user1 v(e) domain3.example

maildrop: fred v(e) otherdomain.example

It is possible to do many-to-many mappings of e-mail addresses to maildrops for the courierMailAlias. You just need to add multiple values for the mail and maildrop data elements. In the same way, the courierMailAccount can have a many-to-one mapping of e-mail addresses to mailbox.

Učinil jsem několik „objevů“ ohledně LDAP na KTF:
K existujícímu účtu lze přiřadit další e-mailové adresy. Např. vzor v(e) ktf.cuni.cz může mít třeba vzornystudent v(e) ktf.cuni.cz a pokud neexistuje (uid,cn) vzornystudent, je to OK a posílat mu lze poštovní zprávy na obě e-mailové adresy.

K existující poštovní schránce lze vytvořit courierMailAlias stejného jména doplněný o další aliasy a navíc doplněný ještě o přesměrování někam mimo KTF. Například vzor v(e) ktf.cuni.cz může mít alias vzornystudent v(e) ktf.cuni.cz a maildrop do vzor v(e) ktf.cuni.cz a do repetent v(e) seznam.cz

Zásadní problém však představuje fakt, že v courierMailAlias nelze použít v položce maildrop ALIAS na @*.ktf.cuni.cz, alebrž jen existující poštovní schránku v @*.ktf.cuni.cz (nebo cokoli jiného, co nevede do ktf.cuni.cz). Bohužel se vyskytly případy, kdy například alias zamestananci v(e) ktf.cuni.cz obsahoval (na první pohled regulérní) adresu prijmenizamestnance v(e) ktf.cuni.cz – avšak účet (uid,cn) prijmenizamestnance neexistoval, existoval pouze courierMailAlias prijmenizamestnance v(e) ktf.cuni.cz který se pomocí maildrop posílal někam mimo KTF. Vzhledem k tomu, že alias neumí posílat poštovní zprávy na jiný alias, nedostal prijmenizamestnance v(e) ktf.cuni.cz nikdy žádnou zprávu zaslanou zaměstnancům. Čili z toho vyplývá, že se toto musí hlídat u všech aliasů. Doplnění: pokud je definován alias před maildropem, tak to asi funguje (tzn. zamestananci@ a vyucujici@ musí být v LDAPu jako poslední položky ve větvi aliases!)

Dále: regulérní zrušení uživatelského účtu sice zruší účet, ale nesmaže houm, profil, mailbox a hlavně ponechá již neexistujícího uživatele ve všech skupinách!!! Tedy se po výmazu musí projít všechny GROUPS (dc=groups,dc=accounts,dc=ktf.cuni,dc=cz) a zrušeného uživatele z nich smazat. Na to jsem napsal perlový skript.

Dále: dobré je, že přidáním další položky uid (např. uid=mistrsveta) do existujícího účtu lze docílit toho, že se dotyčný uživatel může hlásit do sítě jak svým normálním uživatelským jménem (uid,cn), tak i jako mistrsveta (profil se natáhne podle cn). Protože všichni zaměstnanci mají mít cn příjmení, avšak není tomu tak vždy, lze abnormality „obejít“ právě díky této vychytávce (založí se nový účet se „správným“ cn a přidá se k němu „nesprávné“ uid a uživatel se vesele může přihlašovat pro původním nesprávným uid, ačkoli má správný účet). To samé platí pro e-mailové schránky (přidat „nesprávnou“ položku mail do „správného“ uid,cn).

Z příkazové řádky se nový uživatel přidá pomocí Windowsího NET USER /ADD jméno heslo (stejným způsobem lze účet smazat: /DELETE)

Z příkazové řádky se položky v LDAPu dají měnit pomocí příkazu ldapmodify.exe (viz http://lucas.bergmans.us/hacks/openldap/ nebo http://mguessan.free.fr/nt/openldap_en.html ) a předem připraveného LDIF souboru (češtinu kódovat v UTF-8), který musí obsahovat direktivu changetype: modify, například:

version: 1

dn: uid=filis8ak,dc=users,dc=ktf.cuni.cz,dc=accounts,dc=ktf.cuni,dc=cz
changetype: modify
replace: host

host: 26A7D867

takto nadefinovaný LDIF změní hodnotu položky host (která představuje číslo studentské průkazky pro SafeQ), nebo přidá položku host, pokud tato neexistuje. Klíčové slovo add (např add: description,displayName) pouze přidá nové položky a zhavaruje, pokud již některá z položek existuje:

version: 1

dn: uid=antrr5ak,dc=users,dc=ktf.cuni.cz,dc=accounts,dc=ktf.cuni,dc=cz
changetype: modify
add: host,displayName,description
host: 82626078
displayName: Robert Antropius, Bc.

description: student

Roman Štec - Skripty v jazyce PERL

dsasearch.pl

Vytvořil jsem perlový skript, s jehož pomocí lze vypisovat údaje z LDAP databáze. Skript lze spouštět normálně ve Windows, do kterých se musí nainstalovat trocha freewaru (ActivePerl a perl-ldap). K pochopení, jak údaje vypisovat, je dobré (nikoli nezbytně nutné) rozumět parametrům LDAP::SEARCH filter a base (česky např. zde). Nejjednodušší vyhledávací filtr vypadá například takto: uid=vzor
Podle očekávání, najde v LDAP účet VZOR a vypíše všechny jeho údaje (kromě binárních):

<pre>- Datum vzniku: 2007-Feb-21 14:10:11 ------------------------ dn: uid=vzor,dc=users,dc=ktf.cuni.cz,dc=accounts,dc=ktf.cuni,dc=cz objectClass: account,posixAccount,shadowAccount,top,CourierMailAccount?,UVTFtpAccount,sambaSamAccount uid: vzor cn: vzor uidNumber: 1103 gidNumber: 100 homeDirectory: /home/vzor loginShell: /bin/bash shadowLastChange: 12825 mail: vzor v(e) ktf.cuni.cz,vzor@arcs.cuni.cz,vzor@cml.ktf.cuni.cz gecos: vzorovy uzivatel shadowMin: 0 shadowMax: 99999 shadowWarning: 7 sambaSID: S-1-5-21-3169437919-3333673848-299642796-3206 sambaPrimaryGroupSID: S-1-5-21-3169437919-3333673848-299642796-1201 sambaPwdMustChange: 2147483647 sambaPasswordHistory: 0000000000000000000000000000000000000000000000000000000000000000 description: vzor sambaKickoffTime: 0 sambaLogonHours: FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF sambaAcctFlags: UX displayName: vzorový uživatel sambaPwdCanChange: 1172045926 sambaLMPassword: ****4D7D91FD6969AAD3B435B514**** sambaNTPassword: ****59E44F4D7D4A10BAFEF59D5E**** sambaPwdLastSet: 1172045926 userPassword: {MD5}oXXXXknUyLWQYxWSewXXXX== ------------------------</pre>

perl.exe dsasearch.pl -a 3 -b u -f uid=a* -e sambaPwdMustChange,displayName,description,mail,host,gecos -o 2

vypíše (oproti originálu je výpis v Tiki zalomen a nařádkován): <pre># Datum vzniku: 2007-Feb-21 14:10:48 uid;sambaPwdMustChange;displayName;description;mail;host;gecos; Administrator;2147483647;Administrátor;systémový účet;;;; armbruster;2147483647;Ludvík Armbruster, Prof., PhDr?.;děkan;armbruster@arcs.cuni.cz, armbruster v(e) cml.ktf.cuni.cz,armbruster@ktf.cuni.cz,Ludvik.Armbruster@arcs.cuni.cz, Ludvik.Armbruster v(e) ktf.cuni.cz,Ludwig.Armbruster@arcs.cuni.cz,Ludwig.Armbruster@ktf.cuni.cz; A6455E80?;prof. PhDr?. Ludvik Armbruster,KTF; aprethmann;2147483647;Albert-Peter? Rethmannn, Prof., Dr.;zaměstnanec;aprethmann@arcs.cuni.cz, aprethmann v(e) cml.ktf.cuni.cz,aprethmann@ktf.cuni.cz,rethmann@ktf.cuni.cz;56D0A1F7; Albert-Peter? Rethmannn,KTF; andrs;;Pavel Andrs;unknown account;andrs@arcs.cuni.cz,andrs@cml.ktf.cuni.cz, andrs v(e) ktf.cuni.cz,Pavel.Andrs@arcs.cuni.cz,Pavel.Andrs@ktf.cuni.cz;828923B9;Pavel Andrs; adokrt;;Radoslav Babjarčík;student BABJR4AK;adokrt@arcs.cuni.cz,adokrt@cml.ktf.cuni.cz, adokrt v(e) ktf.cuni.cz,Radoslav.Babjarcik@arcs.cuni.cz,Radoslav.Babjarcik@ktf.cuni.cz; B687EFA0;Radoslav Babjarcik,,,; antropius;;;;antropius@ktf.cuni.cz;;; antrr5ak;;Robert Antropius, Bc.;student;antrr5ak@ktf.cuni.cz;82626078;; arcsucetni;2147483647;pouze e-mail;Arcibiskupský seminář;arcsucetni@ktf.cuni.cz,ucetni@arcs.cuni.cz;;; adamp4ak;;Piotr Adamczyk;student;adamp4ak@ktf.cuni.cz;16E9EDA0;;

augul5ak;;Ľubomír Augustin, Mgr.;student;augul5ak@ktf.cuni.cz;34D2EF02;;</pre>


Díky tomuto lze například zkontrolovat, zda-li jsou účty používány (podezřelým účtům stačí nastavit sambaPwdMustChange=0 a pokud je účet používán, uživatel je nucen si změnit heslo, čímž se 0 změní na "něco"), jsou-li to zaměstnanci, studenti nebo "neznámí" a mají-li průkazku (číslo průkazu je v podstatě jediný opravdu unikátní údaj, podle kterého lze lidi z univerzity bezpečně v LDAP identifikovat). Vypisovat lze ledascos (viz parametry příkazového řádku), včetně databáze hesel uživatelů (jen klíče, ty lze rozlousknout pomocí ophcrack).

spojcsv.pl

Vytvořil jsem další perlový skript, s jehož pomocí lze spojit 4 různé seznamy uživatelů do jednoho společného seznamu. Vstupními seznamy jsou:
1) seznam systémových účtů
2) seznam zaměstnanců fakulty
3) seznam studentů fakulty
4) seznam externích uživatelů
přičemž 1) a 4) mají stejný formát a vytvořil jsem si je sám na základě dostupných údajů. 2) je soubor, který vznikne, když se uloží do formátu CSV telefonní seznam zaměstnanců fakulty, o který se stará p. Loubová z děkanátu (např. "N:\telefonní seznam\mistni_tel_07.xls"). 3) je pak export se SISu, který pro tyto účely vytváří p. Mikeš. Všechny CSV soubory se předem musí převést (pokud nejsou) do formátu kódování češtiny UTF-8.

opravudaje.pl

Vytvořil jsem další perlový skript, s jehož pomocí lze na základě výše vytvořeného společného seznamu opravit údaje v LDAP. Tzn. ve společném seznamu jsou u každého uživatelského jména správné údaje, tedy číslo průkazky, nacionále a poznámka (zaměstnanec, student, systémový účet a tak dále) a skript z nich vytvoří LDIF soubory pro změnu údajů v LDAP databázi. Následným RUČNÍM spuštěním připraveného BAT souboru se pak tyto změny aplikují v LDAP. Před tím lze LDIF soubory „promazat“ a ponechat ke zpracování jen ty, které patří k účtům, u kterých má smysl změny provádět (např. pro opravu nově zjištěných nebo chybných informací). Tento skript má cenu spouštět pokaždé, když se do LDAP dostanou neúplné údaje a je jich víc, než aby se vyplatilo je datlovat v programech USRMGR nebo v JXplorer. Z toho také vyplývá jedna velmi důležitá změna „administrativního postupu“: hodnota jakéhokoli údaje, jež má být v LDAP změněn, se MUSÍ zapsat do příslušného seznamu a/nebo do SISu! (Míněno do: seznam systémových účtů, XLS telefonní seznam zaměstnanců fakulty, seznam externích uživatelů.) Jinak se „příště“ přepíše starou hodnotou ze seznamu/exportu.

docasneheslo.pl

Vytvořil jsem další perlový skript, s jehož pomocí lze změnit a zase vrátit na původní hesla uživatelů (např. při hromadném obíhání firmy kvůli něčemu není třeba z lidí mámit předem hesla)

obecné

Výstupy většiny skriptů lze načíst do Excelu (jako csv soubor, u kterého se předem převede převedení kódování z UTF-8 do WIN-1250) a dále s ním pracovat.

Primárně jsou ale skripty určeny k tomu, aby vytvářely podklady pro další skripty, které (až budou napsány) zkontrolují, kdo v LDAP chybí (zpravidla noví studenti), kdo přebývá (zpravidla bývalí studenti) a zjednají nápravu (přidají chybějící účty, disable-ují adepty na smazání, smažou dávno disable-ované účty).

Předpokládám, že v budoucnu bude možné tyto skripty použít i u jiných zákazníků (např. naplnit nový server uživatelskými účty podle předem připraveného seznamu).

skripty se nacházení na počítači správce sítě ve složce c:\skripty a jejich záloha (prováděná po modifikaci některého ze skriptů), je na \\DSA\home\PERL-Roman (pod uživatelem UVT)

Odkazy

viz http://www.abclinuxu.cz/blog/benyho/2005/7/22/95103


Created by stec. Last Modification: Čtvrtek 09 of duben, 2009 11:01:59 CEST by stec.