Archiv für den Autor: dennis

Powershell und NTFS

Es geht wieder einmal um meine beiden Lieblingsthemen Microsoft und BlueArc. Seit nunmehr einem Jahr liegen unsere Daten auf dem BlueArc Mercury System und werden von dort via NFS zur Verfügung gestellt. Für die Windowsclients gibt bzw. gab es bisher zwei BSD-Samba Server die eben diese NFS-Freigabe weitergeleitet haben. Natürlich beherrscht das Mercury auch CIFS und der Zwischenschritt über Samba war noch von dem Vorgängersystem. Wie auch immer, sollen die Verzeichnisse nun direkt vom Mercury kommen sowohl für CIFS wie auch NFS für unixbasierte Clients. Das ist in der Theorie kein Problem und steht auch schön im Hochglanzprospekt beschrieben. In der Praxis funktioniert das auch für ein frisches Dateisystem mehr oder minder problemlos, sofern man dem NFS-Teil einfach sagt er solle sämtliche Rechteänderungen einfach in die Tonne treten und die NTFS-Vorgaben umsetzen, ansonsten kann es schon mal sein das man sich mit chmod/chgrp/chown ein paar Zugriffsrechte zerlegt, teilweise auch rekursiv, was man vermeiden möchte.

Gut, wir haben nur halt kein frisches Dateisystem sondern 35.000 Accounts mit 36.000.000 Dateien. Mein Vorschlag zu behaupten der Plattenstappel wäre abgebrannt und man hätte auch kein Backup um es wieder herzustellen damit man bei Null anfangen kann, wurde leider nicht angenommen.
Zusätzlich sollte es noch einige Umstrukturierungen im Active Directory geben, genauer gesagt eine Reorganisation der Nutzerobjekte in neue OUs.
Damit verbunden dann auch gleich eine neue Primärgruppe der Nutzer, womit sich auch die Gruppe unter Unix ändert.
Da unsere Nutzerobjekte alle vom Novell eDirectory verwaltet werden, muss man da nur ein paar Kleinigkeiten ändern und für Neuanlagen hat man das dann erledigt. Die Bestandskunden möchte man aber dann doch aus Perfomancegründen lieber direkt im AD ändern, da ich inzwischen die Powershell ja ganz nützlich finde, war das auch relativ einfach und sieht so aus:

Bisher waren die Nutzer je nach Nachname in die OU=A-L bzw. M-Z einsortiert, jetzt werden sie in eine OU mit dem ersten Buchstaben der UID eingegliedert. Damit haben nun also Nutzerobjekte ein neues Zuhause, einen neuen Windowsprofilpfad, eine Neue gidNumber und ein neues UnixHomeDirectory. Problem eins gelöst ;)

Problem Nummer Zwei war dann etwas hartnäckiger, wie erstellt man für dieses vollgemüllte Dateisystem nun sauberer ACLs? Auch da fangen wir erstmal klein an, erstmal setzen wir die Primarygroup um und weil es dafür auch chgrp tut, anstatt das irgendwo unter Windows zusuchen startet man einfach mal “chgrp -R 1000513 /home” im Screen und wartet dann halt 3 Tage bis das fertig ist …

Währenddessen überlegt man sich dann wie man neue Verzeichniss über die Powershell mit entsprechenden ACLs anlegt und das sieht dann so aus:

Damit wird ein neuer Securitydescriptor erzeugt mit Full-Control-Rechten für den Besitzer, Domainadmins und Admins der Admins sowie als Veranschaulichung Read&Only für eine Nutzer unter dem das Tapebackup laufen könnte. Dazu noch Owner und Groupinformation geändert, neues Verzeichnis erstellen, die ACL da drüber bügeln und schon haben wir ein schönes neues Homeverzeichnis mit feinen vererbaren NTFS-Regeln.

Problem Drei wie bekommt man diese Regeln jetzt in das bestehende Dateisystem? Tja und hier hab ich dann einfach mal nach 3 Tagen keinen Bock mehr gehabt -.-
Setzt man diese Regel nämlich auf ein bestehendes Verzeichnis, dann vererbt er zwar den Owner auf sämtliche Children, die ACL aber aus einem mir unerfindlichen Grund nicht. In der GUI kann man dann einen Haken setzen “Apply for all Children bla” und angeblich erwischt man den auch über irgendein WMI-Object, aber anscheinend hat das noch niemand in der Realität probiert. “Best-Practice” ist ein:
get-chiditems $Homedir | for-each { set-acl -path $_.fullname }
oder ähnlich, das dauert dann halt leider auch nur etwa 5 Minuten pro Account, statt der 5 Sekunden die das Häckchen in der GUI braucht, naja dafür muss ich nicht 35 tausendmal auf OK klicken.

Linux und Dell

Wie Niels schon auf einer Unterseite berichtete, haben wir im Sommer unsere betagten Latitude E6400 gegen etwas aktuellere Hardware eingetauscht, das Latitude E6220. Mir war diesmal wichtig, dass das Gerät klein und stromsparend ist… also im Vergleich zum besagten E6400 welches ich mit einer halbwegs performanten NVidia-Grafikkarte konfiguriert hatte.

Kleiner ist es, nur noch etwas über 12 Zoll, statt 14; kein interens optisches Laufwerk (und auch nicht als extern, weil nicht mitbestellt …); etwas leichter ist es auch und die Akkulaufzeit liegt mit über 4 Stunden deutlich über den 20 Minuten die mein alter gehalten hat (der im Auslieferungszustand auch nur knapp über 2 Stunden hielt). Der Core-i5 ist ausreichend schnell um nicht zu sagen, schneller als mein Spielrechner daheim und die Intelgrafik reicht für Bürozeug mehr als aus, Filme schafft die sicher auch hab ich aber noch nicht getestet. Die meiste Zeit arbeite ich damit tatsächlich, daher ist auf der Festplatte auch nur ein Debian/Testing installiert..
Wie ich das installiert habe weiß ich gar nicht mehr, aber als Niels seines neulich neuinstallieren wollte, ging das nicht so auf anhieb. Ich glaube damals einfach eine Testing-CD auf einen USB-Stick kopiert zu haben, möglich wäre aber auch eine Installation über mein Diskless-Linux zu Hause … war nicht mehr nachvollziehbar, anscheinend war ich an dem Tag betrunken :/

Bis auf anfängliche Abstürze die mit irgendeinem Kernelupdate behoben waren, hatte ich auch keine Probleme bis ich letzte Woche das BIOS updaten wollte. Das ist zwar unter Linux auch schon eine Weile möglich und Dell selbst bietet hier dafür eine Anleitung, Tools und entsprechende Firmwarebinaries, aber natürlich nicht für das E6220 ..
Dann gibt es zumindest noch das Delltechcenter das mir auch unbekannt war, wo man für Windows CAB-Dateien findet die man in WinPE einbauen kann, das half mir nur auch wieder nicht, weil da auch keine Firmwarebinaries drin waren..

Also mittels WAIK mal eben einen USB-Stick mit WinPE zusammengefrickelt und die beiden Windows-Bios-Updates mit drauf kopiert, fertig … naja fast. Der USB-Stick hat sich da irgendwie immer etwas quer gestellt, weil da schon diverse Bootloader ihre Spuren hinterlassen hatten. Da sei nur der Hinweis auf Diskpart gegeben, das ist mehr oder minder selbsterklärend um eine Primärpartition anzulegen und mit Fat32 zu formatieren, ja ich weiß das geht auch in bunt -.-

Dann kopiert man da halt mit xcopy oder was auch immer seine von copype erstellten Dateien drauf, hängt den USB-Stick an den Laptop und bootet und ein paar Augenblicke später hat man dann auch die aktuelleste BIOS Version und nicht mehr die A01

Kundenservice

Ich finde Unternehmen ja toll, die einem Rundum-Sorglos-Pakete verkaufen, wo ich mir als Kunde überhaupt keine Gedanken mehr machen muss. Sowas wie Pizzalieferdienste, da klicke ich im Internet etwas zusammen, 15 Minunten später klingelt es an der Tür und ein freundlicher Mensch überreicht mir eine warme Mahlzeit. Kabeldeutschland, obwohl sich viele darüber beschweren, Internet+Telefon+Fernsehen, das bestellt man, 2 Tage später schliesst das ein Techniker an und dann hat man nie wieder Probleme damit (ich hab nur einen etwa 4 stündigen Ausfall in 2 Jahren erlebt und der war mitten in der Nacht).
Dann gibt es Unternehmen die werben noch mit günstigen Preise wie eine größere Elektronikmarktkette, deren Service einfach nur mies ist. Anno 2003 hatte ich da mal angefragt ob die eine Cherrytastatur mit USB-Hub und englischer Sprache liefern können, Preis egal, da hab ich nie eine Antwort bekommen obwohl die zu dem Zeitpunkt angeblich einer der größeren Cherry Vertragspartner waren. Neulich hab ich beim stöbern im Laden ein nettes 5.1-Heimkinosystem gesehen, von dem ich wußte das es das gleiche Gerät bei Amazon etwa 80€ billiger gibt, aber die wollten nicht so recht mit sich handeln lassen oder anders gesagt denen ist mein Geld wohl nicht gut genug…

Da wir an der Universität im Prinzip ja auch nur ein Serviceanbieter sind, stellt sich die Frage wie und in welchem Umfang bietet man Service überhaupt an. Darüber diskutieren wir schon eine ganze Weile, leider bisher ohne konkretes Ziel.
Als Kunde wünsche ich mir das eigentlich in etwa so:
Ich möchte ein Produkt erwerben oder einen Service in Anspruch nehmen, z.b Winterreifen kaufen und wechseln lassen. Dann möchte ich das mich ein Mitarbeiter zu den Produkten berät, mir als Laien im Automobil bereich also sagt welche Reifen ich auf meinem Fahrzeug überhaupt fahren darf, was die Vor und Nachteile sind etc.
Ich möchte nicht das mir der Servicemitarbeiter verschweigt, das sie die von mir gewählten Felgen erst beschaffen wenn das noch 3 andere Kunden ebenfalls tun. Entsprechend bin ich dann, trotz meiner zurückhaltenden, ruhigen Art, sauer wenn ich nach 3 Wochen mal Frage wie der Stand ist und mir ein anderer Mitarbeiter sagt, das die Bestellung hier noch rumliegt, weil eben kein anderer Kunde soetwas in dieser Saison kaufen will… Also die Reifen schon, nur die Felgen halt nicht, aber wer kauft schon häßliche Felgen aus dem Angebot wenn man für 100€ mehr auch passabel aussehende bekommen kann?
Aber der zweite Mitarbeiter hat sich dann sehr viel Mühe gegeben, mich als Kunden zufrieden zustellen: nach 10 Minunten bekam ich einen Rückruf mit der Nachricht, innerhalb von 4 Tagen, sprich zum heutigen Freitag wären die bestellten Räder Vor-Ort und könnten montiert werden.

Da wußte er allerdings noch nicht, das die Felgen dann zwar in Göttingen sind, aber ohne Reifen, die waren oder sind, nämlich noch auf dem LKW -.- Das konnte man mir natürlich nicht schon mitteilen als ich fast pünktlich mein Auto beim Service abgegeben habe… ich war also wieder etwas schlecht gelaunt, ich denke zurecht. Zum Glück sieht sich das Unternehmen BMW wohl auch als Kundenfreundlich, nach etwas rumtelefonieren stellt sich heraus das die Reifen “jeden Moment” ankommen sollten und dann werden die “sofort montiert” … ja schön und was mach ich solang? Das hab ich nichtmal Fragen müssen, da wurde mir schon ein Leihwagen angeboten zumindest für heute.
So stelle ich mir das dann wieder vor, kulant wird mir also ein ähnliches Fahrzeug gestellt damit ich weiter meinem Dingen nachgehen kann, in der Hoffnung das sich bis zum Feierabend die Sache klärt, damit ich ein zufriedener Kunde bin.

Sei zu erwähnen das ich heute das erste Mal Automatik gefahren bin und nachher noch fahren werde, das Faceliftmodel sieht zwar schon etwas netter aus und das Navi ist wohl ein witziges Spielzeug. Negativ aufgefallen ist mir der Sitzkomfort der Ledersitze, da sind meine Sportteile irgendwie sehr viel angenehmer, außerdem weiß ich nun die Parksensoren vorn zu schätzen, die hat der geliehene nämlich leider nicht.
Tiptronic ist jedenfalls nichts für mich, obwohl ich die Idee cool fand und rein Automatik ist auch nichts für mich, weil ich (gedanklich woanders) beim halten dann auch mal eine Vollbremsung mache, sprich die Bremse ins Bodenblech trete statt der nicht vorhandenen Kupplung.  Ein Gimmick was mir dann wieder fehlt sind die elektrisch anklappbaren Außenspiegel, dafür gefällt mir die neue Form nicht, naja ..
Allerdings bin ich  ja auch nur ein paar Kilometer damit gefahren, vieles ist da sicher einfach Gewöhnung. Ein paar Tage hab ich ja auch gebraucht um mich von Opel auf BMW umzustellen und jetzt frag ich mich wie ich den Corsa so lang ausgehalten hab, allein wegen der Klimaautomatik .. naja und der 177 PS die einen recht flott Richtung 230Km/h bringen, statt der 60 die mit gutem Willen 170 Km/h geschafft haben.

Hätte ich bloß auf meinen Papa gehört …

Letztes Jahr hat mich mein Papa noch gefragt ob ich mein kleines Auto verkaufen möchte, weil ich dem mal eine Innenraumreinigung verpasst habe, tja hätte ich da mal auf Papa gehört :(
Noch guter Dinge hatte ich dem kleinen Opel Corsa Grand Slam  im Winter noch neue Reifen gegönnt und vor zwei Monaten dann noch neue Sommerschüchen, weil ich damit gerechnet hatte, dass das Auto einfach nicht sterben will. 16 Jahre ist der nun alt und trotz intensiver Nicht-Pflege meinerseits und einem für diese Fahrzeug nicht zuträglichem Fahrstil war nie irgendwas großartig kaputt.
Leider mußte ich am vergangenen Mittwoch den TÜV aufsuchen, weil irgendwie im Fahrzeugschein Mai/2011 als nächster HU/ASU Termin vermerkt war und der nette Mensch war leider nicht so sehr begeistert. Zwei rostige Stellen die ausgebessert werden sollten und neue Stoßdämpfer sollte ich mir auch besorgen …
Da ich  von Autos keine Ahnung hab, hatte ich noch gehofft das würde sich finanziell in einem erträglichen Rahmen wiederfinden … genaugenommen hat es das eigentlich auch, der Ortsansäßige Opellieferant würde gern 800€ für die Reparatur haben und 1000€ hatte ich mir eigentlich als Grenze gesetzt, die ich noch bereit wäre zu zahlen um noch zwei Jahre mit dem kleinen Gefährt unterwegs zu sein…
Naja meine Mutter meinte dann das lohnt sich nicht und ich hab eh schon eine ganze Weile wieder mit dem Gedanken gespielt mir ein neues Auto zu kaufen, da ich weder vom Opel allgemein noch dem Corsa im speziellen wirklich überzeugt war. Eigentlich mochte ich den Corsa überhaupt nie, aber nach dem ich den irgendwann mal in einem Graben geparkt hatte, hat es sich irgendwie ergeben das er in meinen Besitz überging..
So sah der ungefär aus: Opel Corsa Grand Slam

Lange Rede kurzer Sinn, am Samstag war ich also bei einem örtlichen Automobilverkäufer eines süddeutschen Herstellers und habe mich dort mal etwas umgeschaut was es denn dort an halbwegs bezahlbaren Fahrzeugen gibt… Auch da hatte ich eine Schmerzgrenze die ich knapp überschritten habe -.-
Wie in jedem anderen Geschäft sollte man niemals dem Verkäufer signalisieren das man etwas unbedingt möchte, das ist eine ganz schlechte Ausgangsbasis für Verhandlungen, was auch der Grund ist warum ich kein Poker spiele :/
Auf dem Hof also 4 Fahrzeuge etwas genauer betrachtet, das erste war eine schwarze Limousine mit einem vermutlich ausreichendem Dieselaggregat, die anderen drei jeweils Kombis. Ein Benziner in Montegoblau und höchstwahrscheinlich sehr sprithungrigem 200+ PS Motor sowie zwei fast identische Kombis in Sparkling Graphit Metallic, einmal als 105KW Benziner und einmal in der 130KW Dieselausführung …
Da ich mich immer nicht entscheiden kann, hab ich das mal wieder halbwegs geschickt outgesourced und den blauen besser gleich verschwiegen, zur Wahl standen also schwarz oder graphit und es wurde sich für graphit entschieden, damit war die Limousine dann raus und es stand fest es wird ein Kombi.
Am Montag dann den Nachmittag für eine Probefahrt freigenommen und zunächst den Benziner knapp 100km durch die Gegend bewegt, ehrlicherweise muß ich ja zugeben das die Fahrleistung für mich mehr als ausreichend ist, zumal man bedenken muß was ich vorher gefahren hab, aber etwas enttäuscht war ich doch.
Grad als ich nach zweistündiger Fahrt auf den Hof zurückkam begrüßte man mich schon mit den Schlüsseln für den Diesel und viel konnte ich auch nicht sagen, bevor ich damit fast schon weggescheucht wurde … naja, ich war noch nicht ganz vom Gelände wieder runter als sich dann der versprochene Slogan  ”Freude am Fahren” mit einem relativen breitem Grinsen eingestellt hat. Viel muss ich von der zweiten Fahrt nicht erzählen, man merkt nicht wirklich wie schnell man unterwegs ist, da muß man schon auf den Tacho schauen … die 200 überschreitet er jedenfalls ziemlich spielend und überholen macht auf der Landstraße dann auch Spass.
Man muß mir sehr deutlich angesehen haben, das ich die Schlüssel nicht mehr hergeben wollte, es hat jedenfalls nicht lang gedauert bis ich bereitwillig die Unterlagen unterschrieben habe um das Fahrzeug in ein paar Tagen dauerhaft fahren zu dürfen.
Und so sieht der neue dann aus: BMW 320d TouringWenn nichts dazwischen kommt, werde ich den wohl am kommenden Freitag in Empfang nehmen dürfen. Viel muß man zu dem Wagen nicht sagen, erst 3 Jahre alt und lächerliche 54.000km auf den Tacho, was für einen Diesel wohl bedeutet das er grad erst eingefahren ist Oo
Dazu ein paar ganz nette Extras wie Klimaautomatik, Einparkhilfe vorn und hinten, Sportsitze und anderen Schnickschnack, der sich dann leider etwas negativ auf den nicht weiter erwähenswerten Preis ausgeübt hat .. aber ich bin sicher ich werd damit eine Menge Freude haben :D

Systemumstellung und Stromabschaltung im Rechenzentrum

Niels hatte es ja im letzten Artikel schon verkündet: unser Diskless Linux ist nun auf einem aktuellem Stand am Campus im Einsatz. Wenn man berücksichtigt wie ausführlich wir das System getestet haben, sind erstaunlich wenige Fehler bisher aufgetreten. Ein kleines Missgeschick geht dabei natürlich wieder auf mein Konto… Das setzen der Uhrzeit sollte man erledigen, bevor man versucht sich am AD anzumelden, ansonsten kann das dazu führen das es behauptet die Abweichungen zwischen den Uhrzeiten sei zu groß. Etwas hinderlich ist es dann wenn man nicht genau weiß ob man die Systemzeit auf UTC oder GMT+1 (+/- Sommerzeit) setzen muß, aber das werde ich wohl noch in den nächsten Tagen herausfinden. Ansonsten hab ich nur vergessen 4 Rechner im AD einzutragen, das hab ich heute mal nachgeholt…

In der Nacht vom Freitag auf Samstag im Rechenzentrum der Strom abgestellt, das wurde lange vorher angekündigt und entsprechend von uns ebenso generalstabsmäßig geplant. In der Realität hab ich einfach gegen 23 Uhr nacheinander unsere Server heruntergefahren und der Plan war es am Samstag gegen neun bei der GWDG aufzuschlagen um die Server wieder einzuschalten… der Plan ging leider nicht so ganz auf, aus irgendeinem Grund habe ich verschlafen was möglicherweise mit dem Konsum von alkoholhaltigen Getränken zu tun haben könnte :/
Also etwas verspätet im Maschinensaal unsere Server wieder eingeschaltet und bei zweien festgestellt das der Bootloader kaputt ist, dummerweise natürlich ausgerechnet der LDAP-Server … hat leider auch etwas länger gedauert, aber gegen 12 Uhr lief wieder alles und das war auch die Uhrzeit die ich angekündigt hatte. Kurz noch in der SUB vorbeigeschaut um mich persönlich davon zu überzeugen, dass unsere Studierenden wieder arbeiten können und dann gemütlich nach Hause gedackelt …
Um kurz vor 15Uhr hatte dann noch mal Daniela angerufen und mitgeteilt, dass es noch kleine Probleme mit einigen Nutzerkonten gibt, also nochmal kurz in die SUB gefahren, weil ich von zuhause nicht an die Server komme -.- Das Problem konnte dann auch relativ schnell gelöst werden und lässt nur die Frage offen warum ich ein dienstliches Mobiltelefon habe, wenn man mich eh auf meinem privatem Handy anruft Oo
Sonntag gab es dann noch ein klitzekleines Rechteproblem  auf dem Webserver, da gehörte irgendwie das mysql-Verzeichnis nicht mehr dem mysql-Nutzer.. naja Voodoozeug halt, auch etwas womit ich mich beschäftige sollte ich mich irgendwann mal wieder langweilen.

Und als Notiz an mich selbst: beim nächsten GWDG-Besuch mal ein aktuelles Bild vom Serverschrank machen, vor allem die Verkabelung auf der Rückseite. Das ist ein abschreckendes Beispiel wie man es nicht machen sollte..

Lustige Programmierfehler

Programmierfehler ist jetzt nicht unbedingt richtig, denn das meiste sind simple Shellskripte, aber wir wollen mal nicht so kleinlich sein.
Für unser Kooperationsprojekt mit der SUB sollen wir einen zusätzliches Login anbieten, das nur auf lokale Resourcen im GoeNet zugreifen darf. Das ist soweit kein Problem, der Account wird einfach mit adduser erstellt und dann hängt man da mit iptables ein paar Regeln dran die mittels Ownermatch einfach alles verbieten.
Zusätzlich soll das Homeverzeichnis nach dem Ausloggen gelöscht werden, auch kein Problem das machen wir einfach über den das Init-Script des Displaymanagers, jedesmal wenn der startet schaut er nach welche Accounts lokal angelegt sind und schmeißt die Weg.
Schon am Freitag Nachmittag war allerdings irgendwas nicht in Ordnung, aus irgendeinem Grund stürzte der GDM schon beim booten ab, da ich ein bisschen mit upstart und rcconf rumgespielt habe, dachte ich mir das wär meine Schuld und verschiebe die Problembehebung einfach auf Montag …
Heute habe ich also die meiste Zeit des Tages damit verbracht einen Fehler in den Startabhängigkeiten zu suchen der nicht existiert. Genaugenommen kommen da eigentlich zwei Fehler auf einmal zusammen, zum einem meine unfähigkeit zu kommunizieren und zum anderen ein kleiner logischer Fehler in Niels GDM Anpassung.
Um diese Zusatzaccountgeschichte möglichst flexibel zu gestalten habe ich einfach /etc/default/custom-accounts  angelegt und dort stehen halt die Accountnamen drin die mein Script dann verarbeitet. Das gleiche macht Niels auch, hat er nur woanders abgelegt, nicht weiter schlimm ich wunderte mich nur die ganze Zeit warum der falsche Account angelegt wird …
Fehler zwei ist dann das wegwerfen des Homeverzeichnisses das sieht so aus:

HOMEDIR_TO_CLEAN=awk -F: -v user=$i 'user == $1 {print $(NF - 1)}' /etc/passwd
rm -rf $HOMEDIR_TO_CLEAN/*
rm -rf $HOMEDIR_TO_CLEAN/.[A-Za-z0-9]*

An dieser Stelle kann man sich überlegen, wenn in Niels Datei ein Account drin steht den ich nicht anlege und dessen Homeverzeichnis trotzdem gelöscht wird. Kleiner Tip, die Rückgabe des Awk-Kommandos ist dann leer …
Aus rm -rf nutzer/* wird dann /* und das ist etwas hinderlich -.-
Also ein kurzer if ! [ -z ] eingebaut -> nicht leer, und schon werfen wir beim booten auch nicht mehr unser Rootverzeichnis ins Nirvana. Natürlich ist das auch letztlich wieder meine Schuld, weil ich /bin, /sbin, /lib und /usr komplett in das AuFS lege, sonst würde da einfach eine Fehlermeldung stehen das man die Dateien nicht löschen kann …

man müsste sich Dinge auch notieren ..

Da ich dazu neige alles mögliche zu vergessen, was ich nicht irgendwo notiert habe und Google uns bei der Suche immer brav hilft, möchte ich hier mal wieder in ein paar Zeilen die Geschehnisse der letzten Wochen festhalten.

Den Witz mit der FX160 brauch ich nicht zu erwähnen, ich versteh nicht wieso eine Grafikkarte kein DVI unterstützt obwohl ein DVI-Port vorhanden ist, ist mir auch egal.
Nach einigen Stunden des Feintunings an unserem Diskless Debian, haben wir am vergangenen Montag ein paar Freiwillige das System testen lassen insgesamt ist es wohl bereit für den Produktiveinsatz. Ein paar kleine Bugs gab es noch zu beseitigen, von meiner Seite waren das natürlich wieder absolute Perlen administrativen Nicht-könnens. Herr Hinke, also ich, ist der Meinung den Kernel könnte man wenigstens schon noch selbst übersetzen und das tue ich auch gern und häufig. Ich vergesse dann nur ab und zu die Zielgruppe aus den Augen, so wurde mir freundlich mitgeteilt, dass Cardreaderunterstützung schon eine feine Sache ist im 21. Jahrhundert. Die Ausrede das ich keine Module kompiliere die ich selbst nicht benutze wurde nicht akzeptiert ..
Das hat natürlich direkt Fehler 2 hervorgerufen, nicht funktionierende udisks mit Active-Directory Accounts. Dazu sei nur erwähnt das der nscd vor dbus starten sollte, dann funktioniert es auch, zumindest in der Theorie. In der Praxis benötigt der eingesetze XFCE noch HAL, welches über PolicyKit gestartet werden soll und das tut es auch nachdem sich jemand einloggt.
Irgendwann ist mir aufgefallen das immer nach dem ersten Login das automagische Mounten von Laufwerken nicht klappt, weil HAL anscheinend zu spät startet. Die häßliche Lösung: hald –daemon=yes in die rc.local schreiben, mit der nächsten XFCE-Version fliegt das eh raus …
Der dritte Fehler war es dann sich darauf zu verlassen das man bei der Installtion schon drauf geachtet hat, das die Abhängigkeiten von sysv-rc alle geklappt haben. Nach dem nun die Uhrzeit synchronisiert wird, bevor man sich am AD anmeldet klappt das nun auch fehlerfrei. Zusätzlich ist die Bootzeit jetzt auf knapp 25 Sekunden herunter, was ich schon ganz in Ordnung finde.

Heute Nachmittag hab ich mir dann vorgenommen den Beweis anzutreten, dass das System auch Distributionsunabhängig ist und wollte Archlinux aufsetzen, mehr als das Basissystem hab ich aber auch nicht installiert, zwischendurch hab ich aus versehen noch ein LVM kaputt gespielt. Merke lvresize führt nicht selbstständig rezisefs aus … naja, das steht auch in jedem HowTo und in der manpage, aber wer liest sowas schon vorher?
Stattdessen hab ich neben Squeeze i386 ein amd64 aufgesetzt. Sobald dort unsere angegepassten Pakete eingespielt werden, könnte man also darüber nachdenken auf den x86-64 Clients ein 64-Bit System anzubieten.

Ein Gedanke ging mir noch durch den Kopf, ob man anhand des dhcp-request Pakets das Betriebssystem herausfinden kann, damit beschäftige ich mich vermutlich morgen. Hintergrund des ganzen ist eine Dualbootumgebung für den Kursbetrieb. Da beide Maschinen im AD betrieben werden, ich aber noch keine Möglichkeit gefunden habe, eine Windowskeytab “zu klauen”, möchte ich denen einfach je nach Betriebssystem einen anderen Hostnamen zuweisen.

Am Rande sei noch erwähnt das es lustig ist wenn eine Firma sich meldet mit “Hallo der Kollege der ihre Anfrage bearbeitet hat, arbeitet nicht mehr bei uns. Könnten Sie uns ihre Unterlagen noch mal zuschicken? Wir haben nur ein paar unvollständige Notizen gefunden…”, dabei geht es natürlich auch wieder um größeres Projekt und ich frage mich wie sich solche Firmen überhaupt auf dem Markt halten können Oo

Auch lustig ist es, wenn man beim Ausparken aus der elterlichen Hofeinfahrt (mit Mama’s Auto) mit dem Hoftor kollidiert, weil man vergessen hat es vorher auch zu öffnen. Naja ich fand es nicht lustig, meine Mutter schon, zum Glück hab ich nur ein Loch in die untere Plastikheckschürze gefahren -.-

Niels ist ja der Meinung das Wort “lustig” würde hier, also im Büro, ziemlich inflationär benutzt und wir sollten damit aufhören. Vor allem wenn man damit nicht lustig im Sinne von witzig meint. Eine brauchbare Alternative ist ihm allerdings nicht eingefallen. Da dieses Phänomen allerdings auch im deutschsprachigem EU-Ausland auftritt, scheint es zumindest zu keinen größeren Missverständnissen zu führen. Ich hab zwar manchmal den Eindruck dort versteht man mich auch nicht immer richtig, aber das liegt in den meisten Fällen vermutlich eher an meiner ungeschickten Wortwahl. In den anderen Fällen ist es wohl “nicht verstehen wollen” oder wie mir gestern mitgeteilt wurde, macht es anscheinend Spass mich (grundlos) zu ärgern -.-

Und weil ich das hier als Notizzettel gerne missbrauche, erinner ich mich grad nochmal daran Dienstag in die Werkstatt zu fahren.

Update: das Archlinux bootet auch, mir war nur nicht klar dass das ein “Profisystem” ist, wo der grafische Installer laut Herrn I. vim und bash sind…
Ich hab da ja eigentlich nichts gegen, aber von der “hauptsache bunt und shiny”-Fraktion hatte ich etwas anderes erwartet ..

… und jetzt scripten wir um das ActiveDirectory herum …

Vorweg, ich habe 5 Minuten länger gebraucht als geplant, ansonsten möchte ich darauf hinweisen das Mr. Scott immernoch das Maschinendeck am laufen hält und zwar erfolgreich.

Heute habe ich mich mal mit der Windows Powershell beschäftigt. Ich stand vor dem Problem, das ich 400+ Rechner automatisiert mit einem von mir festgelegten Kontenpasswort im ActiveDirectory anlegen wollte. Dabei handelt es sich um die Linuxrechner hier am Standort die in naher Zukunft unsere DXS Umgebung bereichern sollen.

Schritt 1: lernen wie man mit der PowerShell überhaupt etwas macht, das obligatorische “hallo welt!” war sehr einfach.
Schritt 2: Aufrufe über das ADSI-Commandlet um die API zum anlegen von Objekten zu benutzen, das war auch einfach.
Schritt 3: Herausfinden wo im Technet die UserAccountControl-Zahlen stehen, das hat schon etwas länger gedauert
Schritt 4: MultiValue-Felder .. da benutzt man wohl Arrays und .PutEx
Schritt 5: Passwort setzen auf einen vorgegeben Wert und nicht mehr den Computernamen

Das ganze hat mich jetzt die meiste Zeit des Nachmittages beschäftigt, funktioniert aber schon mal soweit. Morgen mach ich das dann noch schön und ordentlich damit keiner mehr meckert.
Und so sieht das bis jetzt aus:

Als kleines extra hab ich mir dann doch nochmal ktpass genauer angesehen worüber ich solang geflucht habe. Offensichtlich schreibt das bei uns einfach nur die Passwörter nicht ins Kerberos was die Option +rndpass etwas unsinnig macht.
Wenn man das aber mit “-pass Klartextpasswort” aufruft erzeugt mir das eine Keytab die auch unter Linux richtig funktioniert.
Zum schluss lass ich mir also die Passwörter zufällig von der PowerShell erzeugen und übergebe die als Parameter an ktpass -> Wiese grün …
Aber auch erst morgen …

Mr. Scott macht jetzt Feierabend

Update: Testweise für 150 Klienten ein Konto angelegt mit Zufallspasswort und zugehöriger Keytab, läuft :)
Script ist auch etwas schöner bin nur zu faul es upzudaten, aber ich erstelle jetzt auch unter-OUs und teste vorm anlegen ob  vielleicht schon ein gleichnamiges Objekt vorhanden ist.

AD Halbwissen die Zweite

Nachdem es ein wenig ruhig geworden ist und wir mehr oder minder wochenlang auf der Stelle getreten sind, hab ich doch wieder ein paar Kleinigkeiten gelernt.
Der Hersteller unseres Massenspeichers ist auch ein wenig ratlos, warum sich deren System nicht mit dem ActiveDirectory unterhalten mag, naheliegender Weise darf sich nun auch Microsoft damit auseinandersetzen.
Gelernt hab ich für mich zumindest dass das ändern der ServicePrincipalName-Einträge die KVNO erhöht, Computerkonten kann ich nebender Klicki-Bunti-Variante, dem dsadd-Kommando nun auch via PowerShell anlegen und wenn das so weiter geht, versuch ich das über die Perl-API.
Ein sehr lustiges Phänomen scheinen Computerkonten-Passwörter zu sein, wenn der Computer einen längeren Namen hat, wird das wohl irgendwie abgeschnitten, was nicht sehr hilfreich ist, wenn man sich darauf verlässt, dass das Passwort nach dem zurücksetzen auf den Namen des Kontos gesetzt wird.
Lustiges Phänomen Nummer zwei: auch Computerkontennamen scheinen einer Beschränkung von 15 Zeichen zu unterliegen, wenn man auf den SAMAccountName angewiesen ist, da ich in der Windowswelt nicht zu Hause bin war mir das nicht bewußt …

Der für mich eigentlich einzige interessante Punkt: NFSv4 mit sec=krb5[ip] funktioniert endlich nachdem ich ein bisschen im AD rumgespielt hab. Und weil ich dazu neige solche wichtigen Dinge zu vergessen (im Gegensatz zu Dingen wie z.B. Namensschildchen ..) schreibe ich das mal auf.
Wie im letzten Beitrag schon mal zu lesen war, ist der Best Practice Ansatz eine Linuxmaschine ins AD zu bekommen dieses Murkszeug mit ktpass-Aufruf und Usermapping, das findet man im Internet haufenweise. In unserem Fall bedeutet Best Practice allerdings, dass es so mal sicher nicht funktionieren wird.
Unser Massenspeichersystem hängt jetzt also auch als 0815 Computerkonto im AD. Was mich etwas überrascht hat, war die Tatsache das sich die GSSAPI wohl doch irgendwie an den ServicePrincipals entlang hangelt, jedenfalls hat es nicht gereicht den userPrincipalName zu setzen damit der NFS-Service das vernünftig ausliest.

Angelegt wird das Computerkonto also einfach mit dsadd computer toller-servername -desc “NFS Server”
Dann werden mit setspn -r toller-servername. Die Host-Service gesetzt, das sollte das AD eigentlich selbst machen, aber unseres ist da wohl nicht ganz Standardkonform, egal …
Da das ganze auch mit einem generischen Namen funkioniert, kann man das auch weglassen. Wichtig sind die ServicePrincipals nfs/hostname und nfs/fqdn und halt der UPN in der Form nfs/fqdn@REALM.
Damit lässt sich auch einfach ein kinit -k -t neue.keytab nfs/fqdn@REALM ausführen welches funktioniert .. im Gegensatz halt zum Best Practice Guide … und die spielen wir dann einfach auf dem Massenspeicher ein und gut ..

Ich möchte kurz festhalten, dass ich manchmal der Meinung bin, dass ich unterbezahlt bin :(

PS: ich werde nicht für Textlayout bezahlt, das kann ich offensichtlich nicht

Update: Ein paar lustige Details hab ich noch unterschlagen, es gab einen Firmwarebug, der deutlich negative Performaceauswirkungen hatte, weswegen ich nun auch mit GNUPlot halbwegs gut umgehen kann, sprich ich kann mehrfarbige Graphen basteln. Außerdem war mal für einen Tag die Webseite der Universität weg, weil da ein Raidsystem “abgeraucht” ist, das hat zum Glück unsere Daten auf dem System nicht betroffen…

ActiveDirectory Halbwissen

Nach einigen nervigen Stunden/Tagen des rumprobierens und lesens diverser Artikel die man als Dokumentation betrachten könnte, haben der Niels und ich es nun doch geschafft einen NFS4-Server und Client unter Linux im Microsoft Active Directory zu authentifizieren.
Wenn man sich mal durch das Internet wühlt und liest wie das funktionieren soll, wird man an einigen Stellen enttäuscht feststellen das es eben genau so nicht in der Realität funktioniert. Vielleicht liegt das auch an unserer AD-Struktur die etwas größer und untypischer ist, als die in den HowTo’s und Tutorials erwähnten. Entsprechend hatten wir bei der ein oder anderen Fehlermeldung auch mal eine Mandantentrennung in Verdacht, insbesondere als ich verzweifelt versucht hab mich mit dem Likewise-Paket der Domäne anzuschliessen.

Inzwischen ist das ganze im Clientsystem auch weitestgehend automatisiert, praktischerweise erfolgen LDAP-Anfragen an das AD nun auch über SASL. Wenn das Kerberos schon funktioniert kann man es schliesslich auch gleich für jeden Mist nutzen.

Im Prinzip ist die Einrichtung auch super simpel und selbsterklärend und ich hatte mir fest vorgenommen mein gesamtes Wissen einfach mit ins Grab zu nehmen. Aber da ich mich selbst kenne und weiß das ich in spätestens 6 Monaten nicht mehr nachvollziehen kann wie und warum das funktioniert, schreib ich hier mal kurz die wenigen Einrichtungsschritte auf um das AD dafür zu Nutzen zwei Unix/Linuxmaschinen NFSv4 mit sec=krb5[ip] nutzen zu können:

Zunächst legt man ein Computerkonto im AD an, wir haben das auf einem Windows 2008 gemacht, weil man dort wenigstens im Log sehen konnte wenn etwas schief läuft, authentifizieren tun wir allerdings gegen einen 2003 DC. In den ganzen Sambahowtos steht immer man soll ein Benutzerkonto anlegen, kann man machen, muß man aber nicht.
In unserem AD werden leider die ServicePrincipalNames nicht richtig angelegt, das kann man mit setspn.exe -r Kontenname “reparieren”,  oder man schreibt das wie ich einfach mit ADSIEdit da rein … letzlich wird das wohl ein Powershell oder Perlscript erledigen.
Als SPN sollte der FQDN z.b. “lilith.meine.domain.de” und host/FQDN “host/lilith.meine.domain.de” vorhanden sein, da wir NFS auch nutzen wollen fügen wir noch “nfs/lilith.meine.domain.de” hinzu.
An dieser Stelle sei angemerkt, dass die SPNs nicht richtig verarbeitet werden um nicht zu sagen der 2003DC interessiert sich nicht recht dafür und der 2008 bekommt das Lookup der Attribute nicht geregelt …

Damit das ganze ordentlich ist, setzten wir noch den DNS-Namen im AD, das dient in unserem Fall allerdings auch nur der Optik, weil wir dafür ein gesondertes IPAM-System benutzen. Und ganz wichtig, wir setzen den UPN auf “host/fqdn” also z.b. “host/lilith.meine.domain.de”. Der Grund ist einfach weil das mit den SPNs nicht funktioniert, davon ab wird wohl das ganze ServicePrincipalgeraffel ignoriert sobald ein Wert irgendwo im AD doppelt auftaucht.  In der Theorie sollte es reichen die SPNs zu setzen so wie es z.B. in der MIT-Kerberos Doku auch beschrieben wird, in der Praxis setzen wir halt den UPN auf den ServiceNamen den wir benutzen in unserem Fall also host ..

Normalerweise sollte man sich nun von der Linuxmaschine mit “kinit host/fqdn@REALM” anmelden können und ein TGT bekommen, falls nicht, tja Pech ..
Für den NFS-Server setzt man den UPN aber besser direkt auf nfs/fqdn, mit host/.. ist irgendwie der gssvcd das ein oder andere mal nicht richtig gestartet. In der Doku dazu steht übrigens das in den Keytabs die Einträge in der Reihenfolge “root/fqdn”, “nfs/fqdn” und “host/fqdn” und zuletzt “nfs/*@REALM” als Credentials probiert werden. Zumindest als Client funktioniert das auch und es hat den Vorteil das man über den host-Principal noch andere Dinge laufen lassen kann, das dient aber auch  nur als Übergangslösung bis das mit den SPNs klappt…

Damit das nun alles automatisch klappt, wir nutzen den Kernel-Automounter um Homedirectories zu mounten, muß  man es nur noch schaffen eine Keytab zu erzeugen und das ist wieder ein sehr spannendens Kapitel.
Im Internet steht dazu: führen sie “ktpass.exe -princ host/lilith.meine.domain.de@REALM -mapuser DOMAINlilith -pass +rndpass -DES-DBC-CRC +DesOnly KRB5_NT_PRINCIPAL -out bla.keytab” aus oder so ähnlich das ist aus dem Gedächtnis zitiert. Dieses Kommando mapped ein Nutzerkonto auf einen ServicePrincipal, zu deutsch schreibt den UPN um. Da wir kein Nutzerkonto haben und den UPN schon manuell geändert haben, weil wir wissen das die SPNs nicht gehen können wir uns das sparen.
Interessant ist eigentlich nur der Hinweis auf +DesOnly, unser AD ist leider nicht in der Lage AES zu benutzen, warum weiß ich nicht ist mir auch egal. Bleiben als mögliche Chiffren also des-cbc-crc, des-cbc-md5 und rc4-hmac, letzteres will unser AD gern haben und macht die wenigsten Probleme ist dafür halt nicht mehr State-Of-The-Art.
Was man nun wissen muß, weil das in der Knowledgebase widersprüchlich steht: ktpass verhält sich je nach Windowsversion etwas anders und bekommt es nicht hin die aktuelle KVNO aus der Kerberosdatenbank zu lesen sondern legt die Keytabs immer mit Version 1 an außer man setzt das manuell via -kvno auf einen anderen Wert, den man aber nicht so trivial unter Windows heraus bekommt …
Sollte man das doch irgendwie schaffen muß man die Keytab natürlich noch auf den Client kopieren, um sich den ganzen Scheiß zu sparen kann man die Keytab auch gleich mit den MIT-KRB-Tools auf dem Linuxclient erstellen.

Als erstes finden wir die KVNO raus, dafür gibt es den Befehl kvno, Parameter ist der Kontenname, hat man noch das gültige TGT vom kinit-Test wirft einem das direkt eine Zahl entgegen, anderfalls will es ein Passwort oder mault das es keine Credentials hat -> kinit machen, glücklich sein.
Dann startet man ktutil und erstellt sich die Keytab mit folgender Zeile:

Und schon sind wir fertig. Die Chiffren heißen übrigens “des-cbc-crc”, “des-cbc-md5″, “rc4-hmac”, “aes256-cts-hmac-sha1-96″ und “aes128-cts-hmac-sha1-96″, bei uns halt rc4, weil Baum …
Ob das klappt testet man einfach mal mit “kinit -k -c /tmp/testcc”, dann sollte man mit “klist -c /tmp/testcc” die laufenden Tickets sehen.

Herzlichen Glückwunsch, sie haben nun einen Linuxclient ohne Sambageraffel an einem Windows 2003R2 angebunden und können ihre Dienste dagegen authentifzieren.
Wenn man den rpc.gssvcd mit -vvv startet sieht man die ganzen Debugmeldungen im Log und etwaige Fehler die auftreten, die es an dieser Stelle aber nicht mehr geben dürfte.
Bei aktuelleren Linuxdistributionen muß man allerdings in der krb5.conf bei den libdefaults noch “allow-weak-crypte = true” hinzufügen, da rc4-hmac nicht mehr standardmässig akzeptiert wird, da das AD eigentlich auch Aes256 kann sollte man das zumindest ausprobieren und nehmen sofern es denn funktioniert.

Und wenn wir schon eine funktionierende Keytab haben können wir auch gleich noch die LDAP-Anfragen damit aufrufen, dazu schreibt man in die nss-ldap.conf:

Den Credentialcache lassen wir per Cron erzeugen mit einem “kinit -k -t /etc/krb5.keytab -c /var/tmp/nssldap.cred 2>&1 > /dev/null” zu Zeiten die unter der Defaultleasetime liegen, bei uns hab ich das auf alle 6 Stunden eingestellt, die Tickets sind 10 Stunden gültig.

Und alles was jetzt noch fehlt um unser cooles BlueArc in Betrieb zu nehmen ist nicht mehr direkt mein Problem, bzw. sind das nur noch Kleinigkeiten :)