Zum Inhalt springen

LPIC101/104.6 - Harte und symbolische Links: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Zeile 34: Zeile 34:
softlink,der auf die existierende Datei file1 verweist
softlink,der auf die existierende Datei file1 verweist
* Mit dem zweiten Kommando wird das Ergebnis der Aktion überprüft
* Mit dem zweiten Kommando wird das Ergebnis der Aktion überprüft
  /testfiles # ln -s file1 softlink
  sudo ln -s file1 softlink
  /testfiles # ls -l
  sudo ls -l
  total 44
  total 44
  drwxr-xr-x 2 root root 4096 Jan 2 18:00  
  drwxr-xr-x 2 root root 4096 Jan 2 18:00  
Zeile 45: Zeile 45:
* Wenn Sie nun den Modus dieses Links verändern, ändert sich stattdes-sen der Modus der Zieldatei
* Wenn Sie nun den Modus dieses Links verändern, ändert sich stattdes-sen der Modus der Zieldatei


  /testfiles # chmod a+w softlink
  sudo chmod a+w softlink
  /testfiles # ls -l
  sudo ls -l
  total 44
  total 44
  drwxr-xr-x 2 root root 4096 Jan 2 18:00  
  drwxr-xr-x 2 root root 4096 Jan 2 18:00  
Zeile 57: Zeile 57:
* Mit dem Kommando ls-li kann z. B.  nachgewiesen werden, dass die Zieldatei und der Softlink zwei verschiedene Inodes verwenden
* Mit dem Kommando ls-li kann z. B.  nachgewiesen werden, dass die Zieldatei und der Softlink zwei verschiedene Inodes verwenden


  /testfiles # ls -li
  sudo ls -li
  total 44
  total 44
  1896834 drwxr-xr-x 2 root root 4096 Jan 2 18:00  
  1896834 drwxr-xr-x 2 root root 4096 Jan 2 18:00  
Zeile 65: Zeile 65:
Die Datei file1 verwendet den Inode 1896921, während der Softlink softlink den Inode 1896920 belegt
Die Datei file1 verwendet den Inode 1896921, während der Softlink softlink den Inode 1896920 belegt
* Mit dem Kommando stat kann Ähnliches nachgewiesen werden
* Mit dem Kommando stat kann Ähnliches nachgewiesen werden
  /testfiles # stat softlink
  sudo stat softlink
  File: `softlink' -> `file1'
  File: `softlink' -> `file1'
  Size: 5 Blocks: 0 IO Block: 4096 symbolic link
  Size: 5 Blocks: 0 IO Block: 4096 symbolic link
Zeile 77: Zeile 77:
* Die Zugriffsrechte sind auch noch einmal deutlich dargestellt
* Die Zugriffsrechte sind auch noch einmal deutlich dargestellt
* Wenden Sie dasselbe Kommando auf die Zieldatei des Links an, ergibt sich folgendes Bild
* Wenden Sie dasselbe Kommando auf die Zieldatei des Links an, ergibt sich folgendes Bild
  /testfiles # stat file1
  sudo stat file1
  File: `file1'
  File: `file1'
  Size: 35184 Blocks: 72 IO Block: 4096 regular file
  Size: 35184 Blocks: 72 IO Block: 4096 regular file
Zeile 89: Zeile 89:


Mit den nächsten Kommandos wird demonstriert, was geschieht, wenn Sie die Zieldatei eines symbolischen Links löschen, den Link selbst aber nicht
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
  sudo rm file1


Die Zieldatei ist nun gelöscht
Die Zieldatei ist nun gelöscht


  /testfiles # ls -l
  sudo ls -l
  total 8
  total 8
  drwxr-xr-x 2 root root 4096 Jan 2 18:40  
  drwxr-xr-x 2 root root 4096 Jan 2 18:40  
Zeile 102: Zeile 102:
* Wenn Sie nun versuchen, über diesen Link auf die nicht mehr existieren
* Wenn Sie nun versuchen, über diesen Link auf die nicht mehr existieren
de Datei zuzugreifen, erhalten Sie jedoch eine Fehlermeldung
de Datei zuzugreifen, erhalten Sie jedoch eine Fehlermeldung
  /testfiles # cat softlink
  sudo cat softlink
  cat: softlink: No such file or directory
  cat: softlink: No such file or directory


Zeile 136: Zeile 136:
* Das Kommando ls-l zeigt das Ergebnis der Aktion
* Das Kommando ls-l zeigt das Ergebnis der Aktion


  /testfiles # ln file1 hardlink1
  sudo ln file1 hardlink1
  /testfiles # ln file1 hardlink2
  sudo ln file1 hardlink2
  /testfiles # ls -l
  sudo ls -l
  total 80
  total 80
  drwxr-xr-x 2 root root 4096 Jan 2 19:21  
  drwxr-xr-x 2 root root 4096 Jan 2 19:21  
Zeile 149: Zeile 149:
* Mit ls -li soll festgestellt werden, welche Inodes die Dateien jeweils belegen
* Mit ls -li soll festgestellt werden, welche Inodes die Dateien jeweils belegen


  /testfiles # ls -li
  sudo ls -li
  total 80
  total 80
  1896834 drwxr-xr-x 2 root root 4096 Jan 2 19:21  
  1896834 drwxr-xr-x 2 root root 4096 Jan 2 19:21  
Zeile 162: Zeile 162:
* Es wird also auch die ursprüngliche Datei als Link dargestellt
* Es wird also auch die ursprüngliche Datei als Link dargestellt


  /testfiles # stat hardlink1
  sudo stat hardlink1
  File: `hardlink1'
  File: `hardlink1'
  Size: 22271 Blocks: 48 IO Block: 4096 regular file
  Size: 22271 Blocks: 48 IO Block: 4096 regular file

Version vom 3. Januar 2025, 13:27 Uhr

LPIC101/104.6 Harte und symbolische Links - erkennen, anlegen, ändern

Wichtigste Wissensgebiete

  1. Links anlegen
  2. harte und/oder symbolische Links identifizieren
  3. Dateien kopieren vs. verlinken
  4. Links verwenden, um Systemadministrationsaufgaben zu unterstützen

Wichtiger Dateien, Verzeichnisse und Anwendungen

Allgemeines

Wenn es ermöglicht werden soll, auf eine Datei von verschiedenen Verzeichnissen aus zuzugreifen,

  • 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,
  • 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

Softlink

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

  • Das erste Kommando ln-s erzeugt einen Softlink mit der Bezeichnung

softlink,der auf die existierende Datei file1 verweist

  • Mit dem zweiten Kommando wird das Ergebnis der Aktion überprüft
sudo ln -s file1 softlink
sudo 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
sudo chmod a+w softlink
sudo 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
sudo 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
sudo 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
sudo 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

sudo rm file1

Die Zieldatei ist nun gelöscht

sudo 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

sudo 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

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
sudo ln file1 hardlink1
sudo ln file1 hardlink2
sudo 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
sudo 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
sudo 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