SS 2005 - Johann Oberleitner - Letzte Änderung: Fri Mar 17 19:26:37 WEST 2006
Die Übung findet in Gruppen zu 4 Studierenden statt. Jede Gruppe hat Gruppenbeispiele zu lösen, und jeder Teilnehmer einer Gruppe hat Einzelbeispiele zu lösen. Für jedes dieser Beispiele (Gruppe und Einzel) gibt es Punkte, wobei zu einem positiven Abschluss mehr als die Hälfte aller Punkte zu erreichen sind. Für jedes Beispiel gibt es eine Frist bis zu der die richtige Lösung abzugeben ist.
Für die Übung werden insgesamt 25% der Gesamtpunkte vergeben. Mit der Prüfung können demnach die restlichen 75% erreicht werden. Die 20 Punkte, die bei der Übung erreicht werden können, werden demnach mit 1,25 multipliziert. Die Beispiele werden direkt auf der Übungsumgebung getestet. Ergebnisse für die jeweiligen Beispiele werden Ihnen nach der Bewertung auch ins /root Verzeichnis gestellt.Die Anmeldeseite für das Abgabegespräch ist online. Beim Abgabegespräch (ca 10min je Gruppe) wird überprüft, ob Sie die Beispiele selbst gelöst haben, bzw. Sie mit der Übungsumgebung vertraut sind. Es gibt keine Punkte beim Abgabegespräch. Dennoch: sollte sich bei dem Gespräch herausstellen, dass Studierende zwar Beispiele richtig gelöst/abgegeben haben, aber auch nicht ansatzweise geringsten erklären können, wie Sie zur Lösung kommen (zum Beispiel weil Sie die Beispiele von jemanden anderen haben Lösen lassen), ist es nicht möglich die LVA positiv abzuschliessen.
Das Abgabegespräch findet jeweils am Institut in der Abteilungsbibliothek statt (Argentinierstrasse 8 / E1841, 3.Stock).Anmeldungen für die Sommer-Übung bitte an mich.
Die Anmeldung für Übungsgruppen war bis 8.7.2005 möglich. Die Liste der Teilnehmerliste für die Sommerübung finden Sie hier. Die Ausgabe der Accounts folgt in den nächsten Tagen.Das erste Beispiel beinhaltet den ersten Einstieg in das Übungssystem, das Anlegen von Benutzern für alle Teilnehmer einer Gruppe, sowie die Konfiguration des Nameservers.
Abgabefrist: 12.9 24:00Unteraufgabe | Typ | Beschreibung |
---|---|---|
Anlegen von Benutzern | Einzelwertung (0 Pkt) | Jedes Gruppenmitglied benötigt zusätzlich zum Administratoraccount der Gruppe einen Unixaccount auf der Zielmaschine. Legen Sie dazu einen Account an, wobei Ihr Benutzername bestehen soll aus nws und Ihrer Matrikelnummer (ohne führenden Buchstaben). Sorgen Sie dafür, dass der Account auch jeweils ein Homeverzeichnis beinhaltet. Der Account soll jedenfalls keine Administrator Privilegien haben. Tätigkeiten, die Sie als Administrator ausführen müssen erledigen Sie auch in Zukunft mit dem jeweiligen Account, den Ihre Gruppe bekommen hat. zB.: nws9325311, das Passwort können Sie frei wählen. Tipp: Benutzer legt man unter Unix als Administrator mit dem Command adduser an. |
Anlegen eines Kunden-Account | Einzelwertung (0 Pkt) | Für jeden Kunden, den Sie betreuen müssen, legen Sie einen Unixaccount auf der Zielmaschine an, der Name und das Passwort des Kunden wird Ihnen bei der Passwortvergabe zugeteilt (Name=Domainname ohne den Bindestrich, zB: Kunden-Domain: nws03-A, Kunden-Name ist dann: nws03A). Sorgen Sie ebenfalls dafür, dass der Account ein Homeverzeichnis hat und das der Account nicht Administrator Rechte hat. |
Konfigurieren des Nameservers. | Gruppenwertung (2 Pkt) | Auf jeder Maschine muss der
Nameserver entsprechend konfiguriert werden. Erstellen Sie dazu im Verzeichnis /etc/bind ein Textfile
Namen nwsxx-zone, wobei xx für Ihre Gruppennummer steht. Die Domäne für Ihren Account
soll die Bauart nwsxx.lab haben (lab ist eine Top-Level Domän, die nur am Übungsrechner funktioniert).
Passen Sie den
Start Of Authority Eintrag in diesem File so an, so dass dass ein Resolver (oder anderer Nameserver, der die Werte cached) alle 2 Stunden eine Aktualisierung durchführt, im Fehlerfalle die Daten jede Stunde abfrägt, die Expiration-Time 100 Stunden, und die Minimale Zeit genau einen Tag. Tragen Sie weiters Einträge für den Nameserver ein, der auf diesem Rechner läuft. Dieser soll öffentlich unter dem Namen ns erreichbar sein (zu überprüfen mit dig).
Die IP-Addresse der (virtuellen) Netzwerkkarte Ihrer Maschine können Sie mit dem Commando ifconfig abfragen.
Eine nicht vollständige Vorlage für das Zonenfile finden Sie hier.
Sie müssen das named.conf File erweitern um das Zonenfile einzubinden, dass sie modifiziert haben. Die Zone
wird analog zu localhost eingebunden.
Verwenden Sie auf jeden Fall einen Address (=A) Eintrag für den Nameserver und tragen Sie nicht nwsxx.lab selbst als Host ein.
Den Nameserver können Sie neu starten mit "/etc/init.d/bind9 restart".
Sie können Ihre Einstellungen mit dem dig Command testen, dass wir in der VO behandelt haben.
Hinweise für den Aufbau des Zonenfiles finden Sie zum Beispiel in RFC 1035. Eine genaue Doku und Beispiele zu bind9 finden Sie zum Beispiel unter BIND 9 Manual Pages. Inbesondere
das Kapitel 6.3. über Zone-Files dürfte für das Beispiel hilfreich sein. Zahlreiche Beispiele zu Zone-Files finden Sie mit beliebigen Suchmaschinenen (zB mit Zone and DNS and Sample).
|
Konfigurieren der Kundeneinträge des Nameservers. | Einzelwertung | Für Ihren Kunden tragen Sie bitte einen zusätzlichen Hostnamen im Nameserver ein (unterhalb Ihrer Domain nwsxx.lab), mit dem Domain-Namen, den Sie bei der Passwortvergabe bekommen haben. Da die Übung nur auf einer einzelnen Maschine läuft, verwenden Sie dieselbe IP-Adresse, die Sie bereits bei der vorigen Unteraufgabe für den Nameserver verwendet haben. Sie können sowohl einen DNS aliase als auch Address Einträge verwenden, aber Sie müssen beim Abgabegespräch dann erklären können warum Sie den Eintrag, den Sie verwendet haben, verwendet haben. |
Eintrag eines TXT Eintrags | Gruppenwertung (1 Pkt) | Tragen Sie bitte einen TXT Resource Record in Ihren DNS Server ein. Tragen Sie hier als String Ihre Gruppennummer ein. Sorgen Sie dafür, das der Eintrag dem Nameserver zugeordnet ist. |
Das zweite Beispiel beinhaltet das Konfigurieren eines SMTP-Severs (Postfix) und die Verarbeitung von eingehenden EMail-Nachrichten mittels procmail
Sie brauchen keine Mail der geänderten Files schicken
Unteraufgabe | Typ & Punkte | Beschreibung |
---|---|---|
Konfigurieren des Mail Exchange im DNS | Gruppenwertung (1 Pkt) | Ändern Sie Ihr Zonenfile dahingehend, dass der Host als Mail Exchange fungieren kann. Beachten Sie, dass eine etwaige Änderung des Zonenfiles eine gewisse Zeit braucht bis Sie von anderen Hosts erkannt wird. |
Konfigurieren des Postfix Mail Servers. | Gruppenwertung (1 Pkt) | Konfigurieren Sie den
Postfix Server dahingehend, dass Sie damit mails verschicken können. Das soll innerhalb der
Laborumgebung möglich sein. Dh. zwischen verschiedenen Gruppen.
Um das zu Testen gibt es die Möglichkeit für Gruppen auf nwsB an den Account joe@nws00.lab eine Mail zu schicken, die im Subject den String autoreply enthält.
Möglicherweise müssen Sie Ihren lokalen nameserver dazu neustarten!
Sie bekommen dann eine Antwort-Mail wenn es funktioniert (keine Antwort wenns nicht geht, aber eine
Fehlermeldung in einem der Log-Files in /var/log/).
Selbstverständlich sollte das Verschicken von emails auch auf Ihrer virtuellen Instanz alleine möglich sein.
Mail verschicken können Sie zum Beispiel mit dem Programm mutt (Funktionsweise: mutt recipient bzw. man-pages man mutt). Sie können auch das Programm mail verwenden.
Für das Lesen von emails müssen Sie bei beiden mit dem Parameter -f den Pfad des Spool-Verzeichnisses angeben (wo Ihre Mails abgelegt werden, siehe /var/spool/mail).
Sie können (müssen aber nicht, dafür gibt es keine Bonuspunkte) postfix auch dahingehend konfigurieren, dass es ein anderes Verzeichnis verwendet, um die Mails abzulegen (zB verwendet mail ein Standardverzeichnis).
Achten Sie darauf, dass der Absender in der Datei /etc/mailname verwendet wird.
Achten Sie beim Konfigurieren von Postfix darauf, dass die Addressen, die in der email stehen, richtig
sind. Dokus zu postfix, finden Sie im Internet (via Suchmaschine, "postfix").
Sie sollten keinerlei postfix Konfigurationsdateien ändern müssen ausser main.cf.
Neustarten können Sie postfix wie auch schon beim nameserver mit dem für den Nameserver entsprechenden
Commando in /etc/init.d .
Selbstverständlich können Sie zum Testen auch telnet verwenden. Das ist manchmal einfacher als die
Verwendung von Nicht-Konfigurierten mail clients.
Hilfreich dürften die Log-Files sein, die Sie in /var/log/ finden. Für emails sind natürlich die
mail.* Files interessant.
|
Konfigurieren von EMail-Eingänge. | Einzelwertung (1 Pkt) | Sorgen (ausprobieren) Sie dafür, dass Sie sowohl Mails auf Ihrem Benutzeraccount wie auch auf Ihrem Kundenaccount empfangen können. Legen Sie zusätzlich Mail-Aliases an, dass Sie Mails der Form "Vorname.Nachname@nwsNN.lab" und "V.Nachname@nwsNN.lab" verschicken können und diese Mails an Ihren Benutzeraccount versendet werden. Legen Sie auch einen Alias an, der es Ihnen erlaubt an mehrere Benutzer (also Ihrem Account und dem Kundenaccount) gleichzeitig Mails zu verschicken (primitive Form von Mailingliste). Das Schreiben von Aliases entnehmen Sie den Man-Pages zu "aliases" (man aliases) Hinweis: vergessen Sie nach dem Ändern des Aliases Files nicht postfix darüber in Kenntnis zu setzen (zB. mittels postalias) |
Konfigurieren von Procmail-Regeln | Gruppenwertung (2 Pkt) | Konfigurieren Sie procmail und schreiben Sie systemweit gültige Regeln um EMails auszufiltern (=nicht an die Benutzer auszuliefern).
Legen Sie für die Verwendung von procmail ein lokales mail-Directory an, dass im Home Verzeichnis des Benutzers liegt. Dieses Verzeichnis soll mail heissen. Speichern Sie Ihre Mails woanders ab, bekommen Sie keine Punkte!
Diese EMails sollen in einem eigenen Spam-Ordner namens spam gespeichert werden (also beispielsweise im Verzeichnis /home/e999999/mail/spam). Wobei dieser Ordner für jeden einzelnen
Benutzer eingerichtet werden soll (Kunde+Benutzer-Account).
Folgende EMail-Typen sollen gefiltert werden (und im Ordner spam ablegen):
|
Konfigurieren Sie lokale Procmail-Regeln | Einzelwertung (2 Pkt) | Konfigurieren Sie eine lokale Procmail Regel, die es Ihnen erlaubt bei Einlangen einer EMail mit dem Subject "Automatisches Sortieren" (ohne die Anführungszeichen), die EMail in einer Datei abzulegen, diese Datei mit dem Unix-Command sort zu sortieren und doppelte Einträge aus dieser Datei mit uniq zu entfernen. Die Datei soll bei jeder eingehenden Mail neu erstellt werden (nicht anhängen!). Hierzu müssen Sie die entsprechenden Commandos mit dem Unix-Pipe-Symbol aneinanderhängen. Die jeweils ersten, zweiten, dritten, ... Gruppenmitglieder (siehe Gruppeneinteilungsliste) sollen nach dem jeweils zweiten, dritten, vierten, ... Feld des Files sortieren. Sie können davon ausgehen, dass die Files die Sie sortieren in etwa so aussehen werden: sort-liste.txt. Sie brauchen nicht berücksichtigen, dass die Felder in speziellen Datenformaten vorliegen und speziell sortiert werden müssen (beispielsweise nach dem Datum oder numerisch). Es genügt einfache alphabetische Sortierung.
Die Datei soll dann in einem File mit dem fixen Namen sortierliste.txt gespeichert werden, und zwar direkt in Ihrem home-Verzeichnis (zB. /home/nwsXYZ/sortierliste.txt).
Legen Sie weiters eine Procmail-Regel an, die es Ihnen erlaubt mails von Ihrem Kunden an Ihren Benutzeraccount in einen eigenen
Ordner zu verschieben. Der Name des ordners soll bestehen aus dem String mailvon und dem Namen des Kunden entsprechen. Beispielsweise mailvonNwsA . Dieses Verzeichnis soll wiederum unterhalb von Ihrem mail Verzeichnis liegen.
Hinweise und Beispiele für sort bekommt man mittels man sort und info sort . Analog für uniq. Bevor Sie das Sortieren und Ausfiltern in Procmail implementieren, probieren Sie diese Beispiele vorher auf der Commandozeile mit Textdaten und dem direkten Aufruf von uniq bzw. sort aus. Das Entfernen des Headers von der EMailvon procmail, können Sie entweder über mit Hilfe von procmail direkt lösen, oder Sie verwenden einen Unix Stream Editor
wie sed oder awk.
|
Das dritte Beispiel beinhaltet das Konfigurieren eines HTTP-Severs (Apache), das Einrichten simpler Websites, und das Erzeugen von Web-Content mittels XSLT.
Sie brauchen keine Mail der geänderten Files schicken
Unteraufgabe | Typ & Punkte | Beschreibung |
---|---|---|
Konfigurieren des Web-Servers | Gruppenwertung (1 Pkt) | Konfigurieren Sie den Apache Web-Server so, dass für alle Benutzer auf Ihrem Host (nwsXXX und Kunden-Account) Webpages via ~user erreichbar sind (beispielsweise http://nws00.lab/~nws8177777/, alternativ ist auch http://www.nws00.lab/~nws81777777/ für die Lösung der Aufgabe ). Im jeweiligen home-Verzeichnis des Unix-Benutzers soll die Web-Page im Verzeichnis public_html liegen. Weiters sollen Sie eine Startseite für Ihren Host entwerfen, auf der die Seiten aller anderen Benutzer verlinked sind (mittels anchor-Tag: a href ...). Die Seite soll ausserdem das aktuelle Datum des Servers enthalten. Dies sollten Sie mit Server-Side-Includes (SSI) machen. Beachten Sie, dass die Uhrzeit nicht notwendigerweise korrekt ist, weil die virtuellen Hosts ander getimed sind. Von ausserhalb des Übungsnetzes können Sie die Webpages aufrufen mit http://nwsB.dslab.tuwien.ac.at.:1xx80 je nachdem wo Ihr Host liegt. Vom Host selbst mit lynx bzw. telnet. Das Konfigurationsfile httpd.conf des Apache Web Server liegt im Verzeichnis /etc/apache. Neustarten bzw neuladen der Konfiguration können Sie mittels /etc/init.d/apache. Die Dokumentation zum Apache Web-Server 1.3 inklusive Tutorials finden Sie unter http://httpd.apache.org/docs/. Für dieses Beispiel (inklusive nächste Unteraufgabe) wesentlich sind die Punkte URL Mapping, CGI: Dynamic Content with CGI, und Server Side Includes. |
Aufsetzen von Web-Pages | Einzelwertung (2 Pkt) | Schreiben Sie für die beiden von Ihnen als User vrwalteten Seiten je eine Web-Page (HTML). Sie soll eine HTML-Tabelle enthalten (Table), aus der Hervorgeht, wie der jeweilige Benutzer heisst, und einen Link auf die jeweils andere Seite. Verwenden Sie für die Formatierung der beiden Pages dasselbe CSS Stylesheet bei dem die Tabellenköpfe und Tabelleninhalte anders formatiert werden.
Inkludieren Sie weiters einen Hit-Counter und das Datum an dem die Seite das letzte mal erstellt worden ist. Den Counter können Sie mit CGI-Script via perl schreiben, das Datum kann zB. via Apache Server-Side-Includes eingebaut werden.
Entsprechenden Beispiele finden Sie bei den Apache-Docs weiter oben.
Da ich nicht erwarte, dass Sie perl für die Übung lernen, finden Sie hier ein Sample wie manin Perl aus einem File einen Wert liest und diesen wieder zurückschreibt. Das Hier angegebene File ist aber nicht vollständig, um als CGI-Script verwendet zu werden! Sie können das File aber auch über die Command-Line mittels perl sample.pl testen.
Es ist bei diesem Beispiel möglich ein globales CGI-Script zu schreiben, dass für alle anderen Benutzer zur Verfügung steht, als auch ein lokales CGI-Script zu verwenden, dass Sie dann innerhalb Ihres public_html Verzeichnis ablegen.
Möglicherweise müssen Sie an den Executable Permissions für CGI-Scripts im httpd.conf dann etwas ändern.
|
Erzeugen eines XSLT Stylesheets | Einzelwertung (2 Pkt) |
Schreiben Sie ein XSLT Stylesheet, mit dem Sie XML Dateien der Bauart sample-customers.xml File in eine HTML Tabelle umwandeln (inklusive Kopfzeile). Wenn ein oder mehrere Elemente include-only-relations-with existieren sollen nur jene Kunden tabellarisch ausgegeben werden, die ein Kind-Element relations-to-customer existiert und dessen Attribute number dem Inhalt eines include-only-relations-with Element entspricht. Existiert kein solches Feld include-only-relations-with , sollen alle Customer Elemente als Zeilen der Tabelle ausgegeben werden. Die relations-to-customer Felder sollen Sie nicht ausgeben.
Verlinken Sie das erzeugte HTML File auch von Ihrem Kundenseite.
Das Übersetzen des XML Files können Sie mit dem Commando xsltproc durchführen.
Hinweis: Versuchen Sie zuerst, die Tabelle für alle Kunden zu erstellen. Das dürfte wesentlich einfacher sein und gibt einen der beiden Punkte.
|
Stellen Sie das xslt Stylesheet bitte in das Homeverzeichnis Ihres Kundenaccounts mit dem Namen trafo-sample.xslt
Das vierte Beispiel beinhaltet das Konfigurieren von WebDAV und des HTTP-Severs (Apache).
Abgabefrist: 19.9.2005 24:00 Sie brauchen keine Mail der geänderten Files schickenUnteraufgabe | Typ & Punkte | Beschreibung |
---|---|---|
Konfigurieren eines WebDAV Folders | Gruppenwertung (1 Pkt) | Konfigurieren Sie innerhalb des Apache einen WebDAV Folder, mit dem relativen Pfad /images (zum Document-Root / der Homepage Ihres Servers). Es soll sowohl das Lesen, als auch das Schreiben auf den Folder möglich sein! Es soll keinerlei Passworteingabe notwendig zu sein, um lesend, oder schreibend zuzugreifen. Ausprobieren können Sie den Folder innerhalb der Umgebung mit dem Tool cadaver (klingt komisch, heisst aber so). Dieses funktioniert ähnlich einem FTP Client. Hilfe bekommen Sie nach dem Starten von cadaver mit ?. Docu und Beispiele zu dieser und den folgenden Unteraufgaben finden Sie auf der Apache Homepage, sowie im Internet via Suchmaschinen. |
Automatisches Auflisten der Bilder im WebDAV Folder | Gruppenwertung (1 Pkt) | Ermöglichen Sie weiters die automatisierte Erstellung einer Seite /myimages.html (oder /myimages.shtml) via SSI oder CGI-Script, die Grafikbilder, die im /images Pfad liegen darstellt (via HTML). Unter dem Bild soll der Name des Files stehen. Um die Einträge zu generieren soll über alle Verzeichnis-Einträge von /images iteriert werden. Diese automatisch erstellte Seite soll von Ihrer Startseite via HTML link erreichbar sein. Wer SSI benutzt für den wird die Directive #exec cmd="myscript" von nutzen sein. Ein Beispiel für ein Shell-Script, dass Files in einem Verzeichnis auflistet finden Sie unter list-files-with-bash. |
Konfigurieren von HTTP Authentication | Gruppenwertung (1 Pkt) | Erstellen Sie ein Verzeichnis /private, dass via HTTP nur von Benutzern einer realm nwsXX (XX ist dabei Ihre Gruppennummer) erreichbar sind. Dazu soll Digest HTTP authentication verwendet werden. In dieser realm sollen alle Studierenden Ihrer Gruppe eingetragen sein, sowie die Kunden. In dieses Verzeichnis kopieren Sie bitte Ihr /etc/aliases File. Die Passwörter der Kunden sollen denen entsprechend, die Sie bei der Account-Vergabe bekommen haben. |
Konfigurieren von Redirection Rules | Gruppenwertung (1 Pkt) | Schreiben Sie 4 HTML Files, die von Ihrem Document-Root Folder erreichbar sind. Die Namen der Files sollen lauten: permanent-file.html, temp-file.html, seeother-file.html, und gone-file.html Legen Sie relativ zum Document-Root ein Verzeichnis /redirected-files an. Kopieren Sie diese Daten in das Verzeichnis redirected und benennen Sie die Original-Dateien um, indem Sie jeweils das Wort file durch oldfile ersetzen. Schreiben Sie Redirection Rules um die Files jeweils an Ihrem neuen Bestimmungsort zu matchen (welche Redirection Typ für welches File verwendet werden soll ist hoffentlich selbst-erklärend). Bei gone brauchen Sie das File nicht in redirected-files zu kopieren. Kontrollieren Sie auch via telnet (oder anderen Tools) die Statusline des HTTP Response. |