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
sandboxmit einem TextRHCSAinnerhalb eines Benutzer-Home-Verzeichnisses~/.$ echo "RHCSA" > ~/sandbox
Prüfen Sie den Inhalt der Datei mit
catBefehl:$ cat ~/sandbox RHCSA
- Sie befinden sich immer noch in einem Benutzer-Home-Verzeichnis und erstellen einen festen Link zur
sandboxDatei von/tmp/Verzeichnis namenshardlink1.$ ln sandbox /tmp/hardlink1
Überprüfen Sie nun den Inhalt des neu erstellten Hardlinks
/tmp/hardlink1. Der Inhalt von/tmp/hardlink1und die ursprünglichesandboxDatei sollte gleich sein:$ cat /tmp/hardlink1 RHCSA
- Überprüfen Sie die Linkinformationen, die mit beiden Dateinamen
sandboxverknü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
2wie 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ünglichensandboxgibt und den neu erstellten/tmp/hardlink1Datei. Beide zeigen auf denselben Inode mit unterschiedlichen Dateinamen. - Entfernen Sie den festen Link, indem Sie
unlinkverwenden oderrmBefehl.
$ 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
mydirund 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
lnBefehl mit einer Kombination aus-sOption.$ ln -s ~/mydir /tmp/symdir
Jetzt haben wir einen symbolischen Link namens
symdirerstellt befindet sich im/tmpVerzeichnis.$ 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
lzeigt an, dass es sich um einen symbolischen Link handelt.HINWEIS funktioniert
Beachten Sie beim Erstellen eines symbolischen Links, dasslnDer 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
symdirsollte die zuvor erzeugte Dateimyfileenthalten :$ 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
lsausfü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?