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 (nicht wie ursprünglich angegeben nur 20%). 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 Resultate der Beispiele werden an die EMail Addresse versandt, die Sie angegeben haben. Wenn Sie keine derartige Mail bekommen bzw. bekommen haben, können Sie die Bewertung vom Tutor (fede@infosys.tuwien.ac.at) erhalten. Ab dem 2.Beispiel, wird die Bewertung auch an Ihren Benutzer-Account geschickt.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 Übung bitte an den Tutor Daniel Fede.
Die Anmeldung für Übungsgruppen ist ab sofort nicht mehr möglich. Für all jene, die die Übung dennoch machen wollen kann ich nur auf die Möglichkeit hinweisen, den Übungsteil im Sommer zu absolvieren. Für diese Möglichkeit hat es am 29.6.2005 um 14:30 eine Vorbesprechung im EI 5 gegeben. Die Liste mit der Gruppeneinteilung finden Sie hier.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: 15.5 24:00Unteraufgabe | Typ | Beschreibung |
---|---|---|
Anlegen von Benutzern | Einzelwertung | 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). 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 | 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. |
Konfigurieren des Nameservers. | Gruppenwertung | 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, dass die Refresh-Time 3 Stunden beträgt, die Retry-Time 1 Stunde, 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 unter dem lokalen Namen ns erreichbar sein.
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.
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.
|
Konfigurieren der Kundeneinträge des Nameservers. | Einzelwertung | Für Ihren Kunden tragen Sie bitte eine Subdomain im Nameserver ein, mit dem Domain-Namen, den Sie bei der Passwortvergabe bekommen haben. |
Eintrag eines HINFO Eintrags | Gruppenwertung | Tragen Sie bitte einen HINFO Eintrag ein. Tragen Sie im OS Feld Ihre Gruppennummer ein, und im CPU Feld den String UML .
Hinweis: normalerweise wird HINFO verwendet, um die CPU und das Betriebssystem eines einzelnen Hosts zu identifizieren.
|
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. |
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. Für die Gruppen auf nwsA die Möglichkeit an
joe@nws80.lab.
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. 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 Mailinglist). Das Schreiben von Aliases entnehmen Sie den Man-Pages zu "aliases" (man aliases) Wenn es bei Ihrem Kunden-Account nicht klar ist, welcher Teil der Vorname bzw. Nachname ist, nehmen Sie einen der beiden Teile, zB. bei Wein-Klub, wäre W.Klub als auch Wein.K gültig. 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.
Diese EMails sollen in einem eigenen Spam-Ordner namens spam gespeichert werden. Wobei dieser Ordner für jeden einzelnen
Benutzer eingerichtet werden soll.
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 "Automatische Auswertung" (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. 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 ersten, zweiten, dritten, ... 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. Es genügt einfache alphabetische Sortierung.
Die Datei soll dann in einem File mit dem fixen Namen sortierte-liste.txt gespeichert werden, und zwar direkt in Ihrem home-Verzeichnis (zB. /home/nwsXYZ/sortierte-liste.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 Familiennamen des Kunden entsprechen. Beispielsweise mailvonHuber
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/ möglich). 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://nwsA.dslab.tuwien.ac.at:1xx80 bzw http://nwsB.dslab.tuwien.ac.at.:1xx80 je nachdem wo Ihr Host liegt. Vom Host selbst 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: 27.6 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). 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. |