|
|
(42 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
| '''LPIC101/104.6 Harte und symbolische Links''' - erkennen, anlegen, ändern | | '''LPIC101/104.6 - Harte und symbolische Links''' - Erkennen, anlegen, ändern |
|
| |
|
| == Wichtigste Wissensgebiete == | | == Beschreibung == |
| # Links anlegen
| | [[Datei:SoftHardlink.jpg|mini]] |
| # harte und/oder symbolische Links identifizieren
| | [[Links]] ermöglichen es, auf Dateien von verschiedenen [[Orten|Verzeichnissen]] oder [[Dateiname|Namen]] zuzugreifen |
| # Dateien kopieren vs. verlinken
| |
| # Links verwenden, um Systemadministrationsaufgaben zu unterstützen
| |
|
| |
|
| == Wichtiger Dateien, Verzeichnisse und Anwendungen ==
| | ; Vorteile |
| *[[Linuxbefehle (Liste)|ln]]
| | # Links sparen Platz auf dem Datenträger |
| * [[ls|ls]] | | #* weil eine Datei nicht mehrfach vorhanden sein muss, wenn sie über mehr,als nur einen Pfad bereitgestellt werden soll |
| | # Andererseits wird die Administration vereinfacht |
| | #* weil man nicht mehrere Versionen einer Datei pflegen muss |
|
| |
|
| == Allgemeines == | | {| class="wikitable big options" |
| Wenn es ermöglicht werden soll, auf eine Datei von verschiedenen Verzeichnissen aus zuzugreifen,
| | ! Typ !! Bescheibung |
| * können Sie auf diese Datei einen Link legen, anstatt die Datei in die verschiedenen Verzeichnisse zu kopieren
| | |- |
| * Das hat im Wesentlichen zwei Vorteile: Einerseits sparen Links Platz auf dem Datenträger,
| | | [[Softlink]] || (loser) Zeiger auf einen anderen Punkt |
| * weil eine Datei nicht mehrfach vorhanden sein muss, wenn sie über mehr,als nur einen Pfad bereitgestellt werden soll
| | |- |
| * Andererseits wird die Administration vereinfacht, weil man nicht mehrere Versionen einer Datei pflegen muss
| | | [[Hardlink]] || (feste) Verknüpfung zwischen zwei Punkten |
| [[Datei:SoftHardlink.jpg]] | | |- |
| | |} |
|
| |
|
| === Softlink ===
| | <noinclude> |
| Softlinks werden auch als symbolische Links bezeichnet
| |
| * Ein Softlink ist im Prinzip ein Zeiger, der auf eine Datei zeigt
| |
| * Er belegt nur wenig Speicherplatz auf dem Datenträger, auf dem er angelegt wurde
| |
| * Die Besonderheiten eines Softlinks sind
| |
| * Er kann sowohl auf Dateien als auch auf Verzeichnisse verweisen
| |
| * Er kann auf Dateien und Verzeichnisse einer anderen oder der Partition angewandt werden, auf der er sich selbst befindet
| |
| * Er verwendet die Dateiberechtigungen der Zieldatei und ist deshalb immer mit Lese-, Schreib- und Ausführungsrechten versehen
| |
| * Ein Softlink bleibt bestehen, wenn die Zieldatei gelöscht wird
| |
| * Man bezeichnet einen solchen verwaisten Link auch als gebrochenen Link
| |
|
| |
|
| Die folgenden kommentierten Kommandos demonstrieren das Verhalten von Softlinks
| | == Anhang == |
| * Das erste Kommando ln-s erzeugt einen Softlink mit der Bezeichnung
| | === Siehe auch === |
| softlink,der auf die existierende Datei file1 verweist
| | {{Special:PrefixIndex/LPIC101/104}} |
| * Mit dem zweiten Kommando wird das Ergebnis der Aktion überprüft
| | === Links === |
| /testfiles # ln -s file1 softlink
| | ==== Weblinks ==== |
| /testfiles # ls -l
| |
| total 44
| |
| drwxr-xr-x 2 root root 4096 Jan 2 18:00
| |
| drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| -rw-r--r-- 1 root root 35184 Jan 2 17:55 file1
| |
| lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
| |
| Die erste Spalte der letzten Zeile des Kommandos ls-l zeigt an, dass es sich um einen Link handelt
| |
| * Beachten Sie bitte auch, dass in der Zugriffssteuerungsliste alle Rechte gesetzt sind
| |
| * Wenn Sie nun den Modus dieses Links verändern, ändert sich stattdes-sen der Modus der Zieldatei
| |
| | |
| /testfiles # chmod a+w softlink
| |
| /testfiles # ls -l
| |
| total 44
| |
| drwxr-xr-x 2 root root 4096 Jan 2 18:00
| |
| drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| -rw-rw-rw- 1 root root 35184 Jan 2 17:55 file1
| |
| lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
| |
| | |
| Das erste Kommando fügt zu softlink Schreibrechte für alle hinzu
| |
| * Diese Rechte werden aber stattdessen der Datei file1 hinzugefügt,wie Sie sehen.Es gibt mehrere Methoden, sich die Auswirkungen von Links anzusehen
| |
| * Mit dem Kommando ls-li kann z. B. nachgewiesen werden, dass die Zieldatei und der Softlink zwei verschiedene Inodes verwenden
| |
| | |
| /testfiles # ls -li
| |
| total 44
| |
| 1896834 drwxr-xr-x 2 root root 4096 Jan 2 18:00
| |
| 2 drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| 1896921 -rw-rw-rw- 1 root root 35184 Jan 2 17:55 file1
| |
| 1896920 lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
| |
| Die Datei file1 verwendet den Inode 1896921, während der Softlink softlink den Inode 1896920 belegt
| |
| * Mit dem Kommando stat kann Ähnliches nachgewiesen werden
| |
| /testfiles # stat softlink
| |
| File: `softlink' -> `file1'
| |
| Size: 5 Blocks: 0 IO Block: 4096 symbolic link
| |
| Device: 302h/770d Inode: 1896920 Links: 1
| |
| Access: (0777/lrwxrwxrwx) Uid: ( 0/ root) Gid: ( 0/ root)
| |
| Access: 2017-01-02 18:26:45.000000000 +0100
| |
| Modify: 2017-01-02 18:00:07.000000000 +0100
| |
| Change: 2017-01-02 18:00:07.000000000 +0100
| |
| | |
| In der zweiten Zeile der Kommandoausgabe wird angezeigt, dass es sich um einen symbolischen Link handelt
| |
| * Die Zugriffsrechte sind auch noch einmal deutlich dargestellt
| |
| * Wenden Sie dasselbe Kommando auf die Zieldatei des Links an, ergibt sich folgendes Bild
| |
| /testfiles # stat file1
| |
| File: `file1'
| |
| Size: 35184 Blocks: 72 IO Block: 4096 regular file
| |
| Device: 302h/770d Inode: 1896921 Links: 1
| |
| Access: (0666/-rw-rw-rw-) Uid: ( 0/ root) Gid: ( 0/ root)
| |
| Access: 2017-01-02 17:55:38.000000000 +0100
| |
| Modify: 2017-01-02 17:55:38.000000000 +0100
| |
| Change: 2017-01-02 18:01:03.000000000 +0100
| |
| Die zweite Zeile besagt, dass es sich um eine gewöhnliche Datei handelt
| |
| * Auch hier sieht man deutlich, dass die Zieldatei und der Softlink zwei verschiedene Inodes verwenden
| |
| | |
| Mit den nächsten Kommandos wird demonstriert, was geschieht, wenn Sie die Zieldatei eines symbolischen Links löschen, den Link selbst aber nicht
| |
| /testfiles # rm file1
| |
| | |
| Die Zieldatei ist nun gelöscht
| |
| | |
| /testfiles # ls -l
| |
| total 8
| |
| drwxr-xr-x 2 root root 4096 Jan 2 18:40
| |
| drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| lrwxrwxrwx 1 root root 5 Jan 2 18:00 softlink -> file1
| |
| | |
| Der Softlink ist, wie Sie sehen, bestehen geblieben
| |
| * Wenn Sie nun versuchen, über diesen Link auf die nicht mehr existieren
| |
| de Datei zuzugreifen, erhalten Sie jedoch eine Fehlermeldung
| |
| /testfiles # cat softlink
| |
| cat: softlink: No such file or directory
| |
| | |
| Ein typisches Beispiel für die praktische Verwendung von Softlinks sind die Verlinkungen der init-Skripte, die beim Systemstart abgearbeitet werden. »Runlevel wechseln und das System anhalten oder neu starten«, behandelt
| |
| * Sie sehen hier einen Teil der Links, die zum Runlevel 3 eines Systems gehören
| |
| | |
| /etc/rc.d/rc3.d # ls -l
| |
| total 8
| |
| drwxr-xr-x 2 root root 4096 Oct 19 21:53 ./
| |
| drwxr-xr-x 11 root root 4096 Dec 19 11:04 ../
| |
| lrwxrwxrwx 1 root root 7 Jul 20 2017 K03cron -> ../cron*
| |
| lrwxrwxrwx 1 root root 8 Jul 20 2017 K03smbfs -> ../smbfs*
| |
| lrwxrwxrwx 1 root root 6 Jul 20 2017 K05smb -> ../smb*
| |
| lrwxrwxrwx 1 root root 8 Jul 20 2017 K05squid -> ../squid*
| |
|
| |
| * weitere Zeilen wurden entfernt
| |
| [[Datei: Hardlink.png]]
| |
| | |
| === Hardlink === | |
| Bei einem Hardlink handelt es sich eigentlich nur um einen weiteren Verzeichniseintrag für eine existierende Datei
| |
| * Demzufolge belegt er auch keinen eigenen Inode und fast gar keinen Speicherplatz im Dateisystem
| |
| * Daraus ergeben sich völlig andere Eigenschaften im Vergleich zu einem symbolischen Link
| |
| * Hardlinks können nicht auf Verzeichnisse angewandt werden, sondern nur auf Dateien
| |
| * Hardlinks können nicht partitionsübergreifend eingesetzt werden
| |
| * Es gibt keine verwaisten bzw. gebrochenen Hardlinks
| |
| * Eine Datei wird gelöscht,wenn der letzte Hardlink zu dieser Datei gelöscht wird
| |
| * Die Zieldatei und der Hardlink verwenden eine gemeinsame Zugriffssteuerungsliste (ACL)
| |
| * Ein Hardlink ist im Nachhinein nicht mehr von seiner Zieldatei zu unterscheiden
| |
| | |
| Wenn Sie das Kommando ln ohne Optionen verwenden, wird ein Hardlink erstellt
| |
| * Die folgenden Kommandos demonstrieren die Eigenarten von Hardlinks
| |
| * Zunächst werden zwei Hardlinks zu einer bestehenden Datei erstellt
| |
| * Das Kommando ls-l zeigt das Ergebnis der Aktion
| |
| | |
| /testfiles # ln file1 hardlink1
| |
| /testfiles # ln file1 hardlink2
| |
| /testfiles # ls -l
| |
| total 80
| |
| drwxr-xr-x 2 root root 4096 Jan 2 19:21
| |
| drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| -rw-r--r-- 3 root root 22271 Jan 2 19:21 file1
| |
| -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink1
| |
| -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink2
| |
| | |
| Die drei Dateien sind offensichtlich gleich groß und verfügen auch sonst über dieselben Eigenschaften
| |
| * Mit ls -li soll festgestellt werden, welche Inodes die Dateien jeweils belegen
| |
| | |
| /testfiles # ls -li
| |
| total 80
| |
| 1896834 drwxr-xr-x 2 root root 4096 Jan 2 19:21
| |
| 2 drwxr-xr-x 24 root root 4096 Jan 2 17:55
| |
| 1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 file1
| |
| 1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink1
| |
| 1896921 -rw-r--r-- 3 root root 22271 Jan 2 19:21 hardlink2
| |
| | |
| Alle drei Dateien verwenden ein und de nselben Inode
| |
| * Wenn Sie das Kommando stat auf eine der drei Dateien anwenden, sehen Sie zwei interessante Details
| |
| * Erstens werden die Hardlinks als reguläre Dateien erkannt, und zweitens erkennt das Programm drei Links
| |
| * Es wird also auch die ursprüngliche Datei als Link dargestellt
| |
| | |
| /testfiles # stat hardlink1
| |
| File: `hardlink1'
| |
| Size: 22271 Blocks: 48 IO Block: 4096 regular file
| |
| Device: 302h/770d Inode: 1896921 Links: 3
| |
| Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
| |
| Access: 2017-01-02 19:21:30.000000000 +0100
| |
| Modify: 2017-01-02 19:21:30.000000000 +0100
| |
| Change: 2017-01-02 19:21:46.000000000 +0100
| |
|
| |
|
| [[Kategorie:Linux/LPIC/101]] | | [[Kategorie:Linux/LPIC/101]] |
| [[Kategorie:Linux/Datei/Link]] | | [[Kategorie:Linux/Datei/Link]] |
| | |
| | </noinclude> |