// Author: Sebastian Magnus Übungsblatt I Aufgabe 1 (Unix Basics, 4 Punkte) 1.Wie lautet das vollständige Kommando, um die Dateien im Verzeichnis /usr/include aufzulisten? ls /usr/include ls ist der Befehl, um den Inhalt eines Verzeichnisses auszugeben. /usr/include ist der Pfadname, dessen Inhalt ausgegeben wird. Dabei wird zunächst im root (/) nachgesehen, ob es das Verzeichnis usr enthält. Im Verzeichnis usr wird nachgesehen, ob dieses das Verzeichnis include enthält. War dies erfolgreich, wird der Inhalt ausgegeben. Root bezeichnet den obersten Knoten im Verzeichnisbaum. Alle Verzeichnisse sind (direkt oder indirekt über andere Verzeichnisse) Unterverzeichnis des Root. 2. Wie sind dir File Permissions (Rechte) für /bin/ls gesetzt? ls /bin/ls -l das Parameter -l gibt Anweisung, zusätzliche Informationen zum Inhalt des Verzeichnisses auszugeben. Dabei werden Zugriffsrechte, Anzahl der Dateien, Benutzername, Name der Benutzergruppe, Dateigröße, Erstellungszeitpunkt und Dateiname angegeben. Die Zugriffsrechte sind die ersten 10 Zeichen der Information im Format -rwxrwxrwx . Das erste Zeichen gibt den Dateityp an: - Datei d Verzeichnis (Directory) l Link Die nächsten 9 Zeichen geben die Zugriffsrechte in 3 Dreiergruppen an: rwx Besitzer (owner), rwx Gruppe (Group), rwx Restwelt (others) dabei steht r für Leserecht (read), w für Schreibrecht (write), x für Ausführrecht (eXecute). Ein - bedeutet, daß das an dieser Stelle stehende Recht nicht gewährt wird. 3. Wem gehören die Dateien im Verzeichnis /usr ? ls /usr -l Die Dateien gehören dem Root. Der Root ist ein mit Sonderrechten ausgestatteter Administrator- User. 4. Welche Permissions hat Ihr Home- Verzeichnis? ls ~/.. -l Das Verzeichnis hat die Rechte drwx------. Das Bedeutet, lediglich Sie als Besitzer haben Lese, Schreib und Ausführrecht. ~ ist ein besonderer, überall verfügbarer Link auf das Homeverzeichnis. Um nicht den Inhalt des Verzeichnisses, sondern die Rechte auf das Verzeichnis selbst angezeigt zu bekommen, muß mit /.. noch ein Schritt herausgegangen werden. 5. Was ist der Unterschied zwischen ls -1t und -lt? Testen Sie dieses mit dem Verzeichnis /bin. ls /bin -lt ls /bin -1t Wie man erkennt, können unterschiedliche Befehle fast gleich aussehen, aber Unterschiedliches bewirken. Insbesondere verwechseln Programmieranfänger oft die unterschiedlichen Semikoli. -lt bewirkt zunächst, daß die aus den vorherigen Aufgaben bekannten Zusatzinformationen angezeigt werden. das t dahinter steht für eine zeitlich sortierte ausgabe. -1t gibt sein Ergebnis ebenfalls zeitlich geordnet aus, aber ohne Zusatzinformationen. Dafür bewirkt die 1, daß die Ausgabe in einer Spalte untereinander erfolgt (statt nebeneinander in Zeilen). 6. Kopieren Sie die Ausgabe der vorherigen Aufgabe und fügen Sie diese in eine Textdatei namens "Testfile" ein. Benutzen Sie einen beliebigen Editor und rufen Sie diesen mit "Editorname Dateiname" auf. Speichern Sie die Datei ab. Hinweis: Kopieren - text mit gedrückter Maustaste markieren Einfügen - mit mittlerer Maustaste im Editor klicken (Bitte wenden Sie sich gegebenenfalls an den Tutor, um Ihnen die Benutzung eines Texteditors zu zeigen.) 7. Welche Permissions hat die gerade erzeugte Datei? Wem gehört sie und welcher Gruppe ist sie zugeordnet? Beispiel: mit Kate erzeugt Die Textdatei hat die Rechte -rw-r--r--. Das bedeutet, jeder, für den die Datei erreichbar ist, darf diese auch lesen (allerdings kann nicht jeder auf den Ordner zugreifen, in dem sie sich befindet). Niemand außer Ihnen kann die Datei ändern (es sei denn, in einer Kopie), wodurch Schädigungen vermieden werden. Besitzer sind Sie. Benutzergruppe ist cipuser, also alle User mit Account des CIP-Pools. Aufgabe 2 (Symbolische Links, 3 Punkte) 1. Was entsteht bei folgendem Kommando: "ln -s /usr/include ~" ? Es wird ein Symbolischer Link erzeugt. Ein Symbolischer Link ist eine Art Visitenkarte, die auf ein Verzeichnis oder eine Datei verweist. Wird der Link aufgerufen, sucht das Betriebssystem stattdessen in der Originaldatei/Originalverzeichnis. Im Gegensatz zu einer Kopie existieren die Daten aber nur einmal. Der Link wählt als Ziel den Pfad hinter -s, also das Verzeichnis /usr/include. Dannach folgt (Parameterlos) das Ziel. hier ist es das Homeverzeichnis ~. Wird kein Zielname angegeben, erzeugt ln einen Link mit dem gleichen Namen wie die Quelle, er heißt nun also ebenfalls include. 2. Was bewirkt folgendes Kommando: "ls include" ? Befindes man sich im Homeverzeichnis, wird der Link include als Parameter an ls übergeben. Da dieser zuerst aufgelöst wird, passiert das gleiche, als hätte man das Ziel übergeben. Das Ergebnis ist das gleiche wie beim Aufruf von "ls /usr/include". 3. Was passiert bei folgendem Kommando: "ln -s /bin/ls ~/Verzeichnis_auflisten" ? Wie in a) wird ein symbolischer Link erzeugt, allerdings diesmal auf die ausführbare Datei ls im Verzeichnis /bin/ . Diesmal geben wir einen Zielnamen an: Der erstellte Link heißt diesmal nicht wie das Original, ls, sondern "verzeichnis_auflisten". Praktisch bedeutet das, daß innerhalb des Home-Verzeichnisses "Verzeichnis_auflisten" als alternativer Name für "ls" verwendet werden kann. 4. Was erhalten Sie beim Aufruf von "./Verzeichnis_auflisten" ? Es bewirkt das gleiche wie die Eingabe "ls". 5. Erzeugen Sie einen Symlink, der aus dem Homeverzeichnis nach /bin zeigt und den Namen BIN hat. ln -s /bin ~BIN Die Aufgabe ist analog zu c).