In diesem Teil der RHCSA-Prüfungsvorbereitung werden wir unsere Aufmerksamkeit auf Links richten. Es gibt zwei Arten von Links, Hardlinks und Softlinks. In diesem Artikel werden wir darüber sprechen, wie man Links erstellt und entfernt, und wir werden auch einige grundlegende Hintergründe sowohl hinter den Hardlinks als auch den Softlinks diskutieren.
In diesem Tutorial lernen Sie:
- Was sind symbolische (weiche) Links
- Was sind harte Links
- So erstellen Sie einen symbolischen Link
- So erstellen Sie einen festen Link
- So entfernen Sie den Link
Handbuchseite des
ln
Befehl Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | Red Hat Enterprise Linux 8 oder eine andere GNU/Linux-Distribution |
Software | Nicht zutreffend |
Andere | Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl. |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Was sind Links auf GNU/Linux-Systemen
Jede Datei hat Informationen über ihr Erstellungs-, Änderungs-, Zugriffs- sowie Dateieigentum und ihre Berechtigungen, die in einem sogenannten Inode gespeichert sind . Neben den bereits erwähnten gespeicherten Metadaten ist der Inode speichert auch Informationen über einen Datenblock, in dem der tatsächliche Inhalt der Datei im Dateisystem gespeichert ist.
Daher ist die Hauptfunktion des Inode soll ein Dateisystemobjekt wie eine Datei oder ein Verzeichnis beschreiben. Um auf das Dateisystemobjekt zuzugreifen, das einem bestimmten Inode zugeordnet ist wir müssen dem Benutzer einen harten Link bereitstellen das ist der tatsächliche Datei- oder Verzeichnisname.
Dies erklärt die erste Art von Links, die harte Links sind . Die zweite Art von Links auf dem GNU/Linux-Betriebssystem sind symbolische Links auch bekannt als Softlinks. Der Unterschied zwischen harten und symbolischen Links besteht darin, dass symbolische Links nur auf harte Links verweisen, d. h. auf die vorhandenen Datei- oder Verzeichnisnamen. Kurz gesagt ermöglichen Links dem Benutzer den Zugriff auf Dateien oder Verzeichnisse über mehrere Namen.
Harte Links
Da harte Links sind den Inodes zugeordnet die wiederum eine Dateisystemfunktion sind, können die Hardlinks Dateisysteme nicht überqueren und sind daher nur innerhalb desselben Dateisystems gültig. Außerdem ist es nicht möglich, feste Links auf Verzeichnisse zu erstellen. Jeder Versuch, einen festen Link von einem Verzeichnis aus zu erstellen, führt dazu, dass hard link not allowed for directory
wird Fehlermeldung.
Lassen Sie uns einige harte Links erstellen. In diesem Beispiel erstellen wir zuerst eine beliebige Datei namens sandbox
enthält einen Text linuxconfig.org
. Sobald wir fertig sind, erstellen wir mehrere feste Links auf diese Datei, die von verschiedenen Orten verweist.
- Erstellen Sie eine Datei namens
sandbox
mit einem TextRHCSA
innerhalb eines Benutzer-Home-Verzeichnisses~/
.$ echo "RHCSA" > ~/sandbox
Prüfen Sie den Inhalt der Datei mit
cat
Befehl:$ cat ~/sandbox RHCSA
- Sie befinden sich immer noch in einem Benutzer-Home-Verzeichnis und erstellen einen festen Link zur
sandbox
Datei von/tmp/
Verzeichnis namenshardlink1
.$ ln sandbox /tmp/hardlink1
Überprüfen Sie nun den Inhalt des neu erstellten Hardlinks
/tmp/hardlink1
. Der Inhalt von/tmp/hardlink1
und die ursprünglichesandbox
Datei sollte gleich sein:$ cat /tmp/hardlink1 RHCSA
- Überprüfen Sie die Linkinformationen, die mit beiden Dateinamen
sandbox
verknüpft sind und/tmp/hardlink1
.$ ls -l /tmp/hardlink1 -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1 $ ls -l ~/sandbox -rw-rw-r--. 2 linuxconfig linuxconfig 6 Jul 25 10:20 /home/linuxconfig/sandbox
Beachten Sie die zugehörige Zahl
2
wie die obige Ausgabe zeigt. Diese Zahl gibt die Anzahl der Hardlinks an, die einem bestimmten Inode zugeordnet sind.HINWEIS
In diesem Stadium ist es wichtig zu verstehen, dass es keinen wirklichen Unterschied zwischen der ursprünglichensandbox
gibt und den neu erstellten/tmp/hardlink1
Datei. Beide zeigen auf denselben Inode mit unterschiedlichen Dateinamen. - Entfernen Sie den festen Link, indem Sie
unlink
verwenden oderrm
Befehl.
$ unlink sandbox $ ls -l /tmp/hardlink1 -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
In diesem Fall sind sowohl rm
oder unlink
Befehle entfernen einen festen Link, aber nicht die eigentlichen zugehörigen Daten und Inodes. Da die sandbox
Hardlink wurde entfernt, es gibt nur noch 1
harter Link, der mit dem ursprünglichen Inode verbunden bleibt. Als Nächstes entfernen wir den letzten Hardlink, der dieser Datei zugeordnet ist:
$ rm /tmp/hardlink1
An diesem Punkt geht der Link zum Inode verloren, der auf den Inhalt unserer Originaldatei verweist, daher betrachten wir diese Datei als entfernt. Wenn es keine festen Links gibt, die auf einen Inode zeigen, kann das Dateisystem jetzt diesen Inode-Speicherort mit neuen Daten überschreiben.
Sie können jede Datei entfernen (vorausgesetzt, Sie haben die entsprechenden Berechtigungen), indem Sie den Befehl zum Aufheben der Verknüpfung verwenden? Probieren Sie es jetzt aus:
$ touch file $ unlink file
Wenn Sie die obigen Befehle verstanden haben, dann haben Sie die GNU/Linux-Hardlinks gemeistert, wie in diesem Tutorial erklärt.
Symbolische Links
Zusätzlich zu festen Links gibt es auch eine andere Art von Links, die auf dem GNU/Linux-Betriebssystem verfügbar sind. Symbolische Links kann Dateisysteme überqueren, und es ist auch möglich, einen symbolischen Link zu erstellen eines Verzeichnisses. Allerdings symbolische Links anstelle des eigentlichen Inodes , nur auf einen bestehenden Hardlink (Datei- oder Verzeichnisname) verlinken. Aus diesem Grund wird der symbolische Link unterbrochen, wenn der eigentliche harte Link, auf den der symbolische Link zeigt, entfernt wird.
- Erstellen wir zunächst einige Sandbox-Objekte zum Spielen. In diesem Fall erstellen wir ein Verzeichnis namens
mydir
und innerhalb dieses Verzeichnisses erstellen wir eine Datei namensmyfile
.$ mkdir mydir $ touch mydir/myfile
- Als nächstes erstellen wir einen neuen symbolischen Link des bestehenden Verzeichnisses meindir mit
ln
Befehl mit einer Kombination aus-s
Option.$ ln -s ~/mydir /tmp/symdir
Jetzt haben wir einen symbolischen Link namens
symdir
erstellt befindet sich im/tmp
Verzeichnis.$ cd /tmp/ $ ls -l symdir lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
Beachten Sie das erste Zeichen der obigen Ausgabe. In diesem Fall das Zeichen
l
zeigt an, dass es sich um einen symbolischen Link handelt.HINWEIS funktioniert
Beachten Sie beim Erstellen eines symbolischen Links, dassln
Der Befehl speichert den tatsächlichen Pfad, der als Zeichenfolge bereitgestellt wird. Wenn Sie sich nicht im selben Verzeichnis befinden, müssen Sie in vielen Fällen den vollständigen Pfad angeben, damit der symbolische LinkDas neu erstellte
symdir
sollte die zuvor erzeugte Dateimyfile
enthalten :$ cd symdir $ ls myfile $pwd /tmp/symdir
Übungen
- Spielen Sie mit symbolischen Links. Erstellen Sie einen symbolischen Link zu einer Datei, entfernen Sie anschließend die Originaldatei und sehen Sie, was mit Ihrem symbolischen Link passiert ist.
- Was passiert, wenn Sie
ls
ausführen Befehl mit nur einem einzigen Argument. Führen Sie zum Beispiel den folgenden Befehl ausln -s /etc/services
. Was ist passiert? - Stellen Sie fest, ob Sie der Eigentümer der Datei sein müssen, um einen symbolischen Link darauf zu erstellen. Gilt die gleiche Regel für Hardlinks?