5.4 Lektion 1
Zertifikat: |
Linux Essentials |
---|---|
Version: |
1.6 |
Thema: |
5 Sicherheit und Dateiberechtigungen |
Lernziel: |
5.4 Besondere Verzeichnisse und Dateien |
Lektion: |
1 von 1 |
Einführung
Unter Linux wird alles wie eine Datei behandelt, aber einige Dateien erhalten eine besondere Behandlung, entweder wegen des Ortes, an dem sie gespeichert sind, wie z.B. temporäre Dateien, oder wegen der Art und Weise, wie sie mit dem Dateisystem interagieren, wie z.B. Links. In dieser Lektion geht es darum, wo sich solche Dateien befinden, wie sie funktionieren und wie man sie verwaltet.
Temporäre Dateien
Temporäre Dateien sind Dateien, die von Programmen verwendet werden, um Daten zu speichern, die nur für eine kurze Zeit benötigt werden. Dies können die Daten laufender Prozesse, Crash-Protokolle, Scratch-Dateien von einem Autosave, Zwischendateien, die während einer Dateikonvertierung verwendet werden, Cache-Dateien und so weiter sein.
Speicherort temporärer Dateien
Version 3.0 des Filesystem Hierarchy Standard (FHS) definiert Standard-Speicherorte für temporäre Dateien auf Linux-Systemen. Jeder Speicherort hat einen anderen Zweck und ein anderes Verhalten, und es wird empfohlen, dass Entwickler den vom FHS festgelegten Konventionen folgen, wenn sie temporäre Daten auf die Festplatte schreiben.
/tmp
-
Laut FHS sollten Programme nicht davon ausgehen, dass hier abgelegte Dateien zwischen den Aufrufen eines Programms erhalten bleiben. Die Empfehlung ist, dass dieses Verzeichnis während des Systemstarts gelöscht wird (alle Dateien werden gelöscht), es ist also nicht zwingend.
/var/tmp
-
Ein anderer Speicherort für temporäre Dateien, der aber während des Systemstarts nicht gelöscht werden sollte, d.h. hier gespeicherte Dateien bleiben normalerweise zwischen den Neustarts erhalten.
/run
-
Dieses Verzeichnis enthält Daten von Laufzeitvariablen, die von laufenden Prozessen verwendet werden, wie z.B. Prozesskennungsdateien (
.pid
). Programme, die mehr als eine Laufzeitdatei benötigen, können hier Unterverzeichnisse anlegen. Dieser Ort muss während des Systemstarts gelöscht werden. Der Zweck dieses Verzeichnisses wurde einst durch/var/run
erfüllt, und auf einigen Systemen kann/var/run
ein symbolischer Link zu/run
sein.
Beachten Sie, dass es nichts gibt, was ein Programm daran hindert, temporäre Dateien an anderer Stelle im System zu erstellen, aber es ist gute Praxis, den vom FHS festgelegten Konventionen zu folgen.
Berechtigungen für temporäre Dateien
Systemweite temporäre Verzeichnisse auf einem Mehrbenutzersystem stellen eine Herausforderung bezüglich der Zugriffsrechte dar. Zunächst könnte man denken, solche Verzeichnisse seien “welt-schreibbar”, d.h. jeder Benutzer könne darin Daten schreiben oder löschen. Aber wenn das so wäre, wie könnte man verhindern, dass ein Benutzer Dateien, die von einem anderen erstellt wurden, löscht oder verändert?
Die Lösung ist eine spezielle Berechtigung namens Sticky Bit, die sowohl für Verzeichnisse als auch für Dateien gilt. Aus Sicherheitsgründen ignoriert der Linux-Kernel jedoch das Sticky Bit für Dateien. Wenn dieses spezielle Bit für ein Verzeichnis gesetzt ist, verhindert es, dass Benutzer eine Datei innerhalb dieses Verzeichnisses entfernen oder umbenennen können, wenn sie die Datei nicht besitzen.
Verzeichnisse mit gesetztem Sticky Bit zeigen ein t
anstelle des x
in der Berechtigung für andere in der Ausgabe von ls -l
. Betrachten wir zum Beispiel die Berechtigungen für die Verzeichnisse /tmp
und /var/tmp
:
$ ls -ldh /tmp/ /var/tmp/ drwxrwxrwt 25 root root 4,0K Jun 7 18:52 /tmp/ drwxrwxrwt 16 root root 4,0K Jun 7 09:15 /var/tmp/
Wie Sie an dem t
erkennen, das das x
in der Berechtigung für andere ersetzt, haben beide Verzeichnisse das Sticky Bit gesetzt.
Um das Sticky Bit eines Verzeichnisses mit chmod
im numerischen Modus zu setzen, verwenden Sie die vierstellige Notation und 1
als erste Ziffer, zum Beispiel:
$ chmod 1755 temp
setzt das Sticky Bit für das Verzeichnis namens temp
und die Berechtigungen auf rwxr-xr-t
.
Im symbolischen Modus benutzen Sie den Parameter t
, also +t
, um das Sticky Bit zu setzen, und -t
, um es zu deaktivieren:
$ chmod +t temp
Links verstehen
Wir haben bereits gesagt, dass unter Linux alles als Datei behandelt wird, aber es gibt eine spezielle Art von Datei, Link genannt, und es gibt zwei Arten von Links in einem Linux-System:
- Symbolische Links (Symbolic Links)
-
Auch Softlinks genannt, zeigen auf den Pfad einer anderen Datei. Wenn Sie die Datei löschen, auf die der Link zeigt (Target oder Ziel genannt), existiert der Link zwar noch, aber er “funktioniert” nicht mehr, da er nun auf “nichts” zeigt.
- Harte Links (Hard Links)
-
Stellen Sie sich einen Hard Link als zweiten Namen für die Originaldatei vor. Er ist kein Duplikat, sondern ein zusätzlicher Eintrag im Dateisystem, der auf dieselbe Stelle auf der Platte (Inode) zeigt.
Tip
|
Ein Inode ist eine Datenstruktur, die Attribute für ein Objekt (wie eine Datei oder ein Verzeichnis) auf einem Dateisystem speichert. Zu diesen Attributen gehören der Dateiname, die Berechtigungen, der Eigentümer und auf welchen Blöcken der Platte die Daten für das Objekt gespeichert werden. Stellen Sie sich das als einen Eintrag in einem Index vor, daher auch der Name: “Index Node”, also “Index-Knoten”. |
Mit Hard Links arbeiten
Hard Links erstellen
Der Befehl zum Erstellen eines Hard Links unter Linux lautet ln
mit der Syntax:
$ ln TARGET LINK_NAME
Das TARGET
muss bereits existieren (dies ist die Datei, auf die der Link zeigen wird), und wenn das Ziel nicht im aktuellen Verzeichnis liegt oder wenn Sie den Link anderswo erstellen wollen, müssen Sie den vollständigen Pfad dorthin angeben, z.B.:
$ ln target.txt /home/carol/Documents/hardlink
Der Befehl erstellt eine Datei namens hardlink
im Verzeichnis /home/carol/Documents/
, die mit der Datei target.txt
im aktuellen Verzeichnis verknüpft ist.
Wenn Sie den letzten Parameter (LINK_NAME
) weglassen, wird ein Link mit demselben Namen wie das Ziel im aktuellen Verzeichnis erstellt.
Hard Links verwalten
Hard Links sind Einträge im Dateisystem, die unterschiedliche Namen haben, aber auf dieselben Daten auf der Festplatte zeigen. Alle diese Namen sind gleichwertig und können verwendet werden, um auf eine Datei zu verweisen. Wenn Sie den zu einem Namen gehörenden Inhalt ändern, ändert sich der Inhalt aller Namen, die auf diese Datei zeigen, da alle diese Namen auf dieselben Daten zeigen. Wenn Sie einen der Namen löschen, funktionieren die anderen Namen trotzdem.
Das geschieht, weil beim “Löschen” einer Datei deren Daten nicht wirklich von der Platte gelöscht werden. Das System löscht lediglich den Eintrag in der Dateisystemtabelle, der auf den Inode zeigt, der den Daten auf der Platte entspricht. Aber wenn Sie einen zweiten Eintrag haben, der auf denselben Inode zeigt, gelangen Sie immer noch an die Daten. Stellen Sie sich vor, dass zwei Straßen im selben Punkt zusammenlaufen. Selbst wenn Sie eine der Straßen blockieren oder umleiten, können Sie das Ziel immer noch über die andere erreichen.
Sie überprüfen dies mit dem Parameter -i
von ls
. Betrachten Sie den folgenden Inhalt eines Verzeichnisses:
$ ls -li total 224 3806696 -r--r--r-- 2 carol carol 111702 Jun 7 10:13 hardlink 3806696 -r--r--r-- 2 carol carol 111702 Jun 7 10:13 target.txt
Die Zahl vor den Berechtigungen ist die Inode-Nummer. Sehen Sie, dass die Dateien hardlink
und target.txt
dieselbe Nummer haben (3806696
). Das liegt daran, dass die eine ein Hard Link der anderen ist.
Welche das Original und welche der Link ist, kann man nicht sagen, da sie für alle praktischen Zwecke gleich sind.
Beachten Sie, dass jeder Hard Link, der auf eine Datei zeigt, den Link Count der Datei erhöht. Dies ist die Zahl direkt nach den Berechtigungen in der Ausgabe von ls -l
. Standardmäßig hat jede Datei einen Link Count von 1
(Verzeichnisse haben einen Count von 2
), und jeder Hard Link darauf erhöht den Count um eins. Das ist der Grund für den Link Count 2
auf die Dateien in der obigen Auflistung.
Im Gegensatz zu symbolischen Links können Sie harte Links nur auf Dateien erstellen, wobei sich der Link und das Ziel im selben Dateisystem befinden müssen.
Hard Links verschieben und entfernen
Da Hard Links wie normale Dateien behandelt werden, können sie mit rm
gelöscht und mit mv
umbenannt oder im Dateisystem verschoben werden. Und da ein Hard Link auf denselben Inode wie das Ziel zeigt, kann er frei bewegt werden, ohne dass der Link “bricht”.
Symbolic Links
Symbolic Links erstellen
Der Befehl zum Erstellen eines symbolischen Links ist ebenfalls ln
, aber mit dem Parameter -s
aufgerufen:
$ ln -s target.txt /home/carol/Documents/softlink
Der Befehl erstellt eine Datei namens softlink
im Verzeichnis /home/carol/Documents/
, die auf die Datei target.txt
im aktuellen Verzeichnis verweist.
Wie bei harten Links können Sie den Linknamen weglassen, um einen Link mit demselben Namen wie das Ziel im aktuellen Verzeichnis zu erstellen.
Symbolic Links verwalten
Symbolische Links zeigen auf einen anderen Pfad im Dateisystem. Sie können Softlinks für Dateien und Verzeichnisse erstellen, sogar auf verschiedenen Partitionen. Ein symbolischer Link ist in der Ausgabe von ls
leicht zu erkennen:
$ ls -lh total 112K -rw-r--r-- 1 carol carol 110K Jun 7 10:13 target.txt lrwxrwxrwx 1 carol carol 12 Jun 7 10:14 softlink -> target.txt
Im obigen Beispiel ist das erste Zeichen in den Berechtigungen für die Datei softlink
ein l
, was auf einen symbolischen Link hinweist. Außerdem sehen wir direkt nach dem Dateinamen den Namen des Ziels, auf das der Link zeigt, die Datei target.txt
.
Beachten Sie, dass in Datei- und Verzeichnisauflistungen Softlinks selbst immer die Berechtigungen rwx
für den Benutzer, die Gruppe und andere anzeigen; tatsächlich sind die Zugriffsrechte für sie aber die gleichen wie die für das Ziel.
Symbolic Links verschieben und entfernen
Wie harte Links können auch symbolische Links mit rm
entfernt und mit mv
verschoben oder umbenannt werden. Allerdings sollten Sie bei der Erstellung besonders darauf achten, dass der Link nicht “bricht”, wenn er von seinem ursprünglichen Platz verschoben wird.
Bei der Erstellung symbolischer Links sollten Sie sich bewusst sein, dass der Speicherort des Ziels als relativ zum Speicherort des Links interpretiert wird, wenn der Link oder die Datei, auf die er zeigt, nicht vollständig angegeben wird. Das kann zu Problemen führen, wenn der Link oder die Datei, auf die er zeigt, verschoben wird.
Das ist an einem Beispiel einfacher nachzuvollziehen: Angenommen wir haben eine Datei namens original.txt
im aktuellen Verzeichnis und wollen einen symbolischen Link darauf erstellen, der softlink
heißt:
$ ln -s original.txt softlink
Alles scheint in Ordnung, wie auch ls
zeigt:
$ ls -lh total 112K -r--r--r-- 1 carol carol 110K Jun 7 10:13 original.txt lrwxrwxrwx 1 carol carol 12 Jun 7 19:23 softlink -> original.txt
Sehen Sie, wie der Link aufgebaut ist: softlink
zeigt auf (→
) original.txt
. Schauen wir, was passiert, wenn wir den Link in das Elternverzeichnis verschieben und versuchen, seinen Inhalt mit dem Befehl less
anzuzeigen:
$ mv softlink ../ $ less ../softlink ../softlink: No such file or directory
Da der Pfad zu original.txt
nicht angegeben wurde, geht das System davon aus, dass sich die Datei im selben Verzeichnis wie der Link befindet. Ist das nicht der Fall, funktioniert der Link nicht mehr.
Um das zu vermeiden, sollten Sie bei der Erstellung des Links immer den vollständigen Pfad zum Ziel angeben:
$ ln -s /home/carol/Documents/original.txt softlink
Auf diese Weise wird der Link, egal wohin Sie ihn verschieben, immer noch funktionieren, weil er auf die absolute Position des Ziels zeigt. Überprüfen Sie dies mit ls
:
$ ls -lh total 112K lrwxrwxrwx 1 carol carol 40 Jun 7 19:34 softlink -> /home/carol/Documents/original.txt
Geführte Übungen
-
Angenommen ein Programm muss eine temporäre Datei zur einmaligen Verwendung erstellen, die nach dem Beenden des Programms nie wieder benötigt wird. In welchem Verzeichnis sollte diese Datei erstellt werden?
-
Welches ist das temporäre Verzeichnis, das während des Bootvorgangs gelöscht werden muss?
-
Wie lautet der Parameter für
chmod
im symbolischen Modus, um das Sticky Bit für ein Verzeichnis zu aktivieren? -
Angenommen es gibt eine Datei namens
document.txt
im Verzeichnis/home/carol/Documents
. Wie lautet der Befehl, um einen symbolischen Link mit dem Namentext.txt
im aktuellen Verzeichnis darauf zu erstellen? -
Erklären Sie den Unterschied zwischen einem harten Link auf eine Datei und einer Kopie dieser Datei.
Offene Übungen
-
Angenommen Sie erstellen in einem Verzeichnis eine Datei namens
recipes.txt
. In diesem Verzeichnis erstellen Sie zudem einen Hard Link namensreceitas.txt
zu dieser Datei sowie einen symbolischen Link namensrezepte.txt
.$ touch recipes.txt $ ln recipes.txt receitas.txt $ ln -s receitas.txt rezepte.txt
Der Inhalt des Verzeichnisses sollte so aussehen:
$ ls -lhi total 160K 5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt 5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 recipes.txt 5388837 lrwxrwxrwx 1 carol carol 12 jun 24 10:12 rezepte.txt -> receitas.txt
Denken Sie daran, dass
receitas.txt
als Hard Link auf denselben Inode wierecipes.txt
zeigt. Was würde mit dem Softlinkrezepte.txt
passieren, wenn der Namereceitas.txt
gelöscht wird? Warum? -
Angenommen Sie haben ein Flash-Laufwerk an Ihr System angeschlossen und unter
/media/youruser/FlashA
gemountet. Sie möchten in Ihrem Home-Verzeichnis einen Link namensschematics.pdf
erstellen, der auf die Dateiesquema.pdf
im Hauptverzeichnis des Flash-Laufwerks verweist. Sie geben also den folgenden Befehl ein:$ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf
Was würde passieren? Warum?
-
Betrachten Sie die folgende Ausgabe von
ls -lah
:$ ls -lah total 3,1M drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 . drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 .. -rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip -rw-r--r-- 4 carol carol 77K jun 17 17:25 document.txt -rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png -rw-r--r-- 4 carol carol 77K jun 17 17:25 text.txt
-
Wie viele Links zeigen auf die Datei
document.txt
? -
Sind es Soft oder Hard Links?
-
Welchen Parameter sollten Sie an
ls
übergeben, um zu sehen, welchen Inode jede Datei belegt?
-
-
Angenommen Sie haben in Ihrem
~/Documents
-Verzeichnis eine Datei namensclients.txt
, die einige Kundennamen enthält, und ein Verzeichnis namenssomedir
. Darin befindet sich eine andere Datei, die ebenfallsclients.txt
heißt und andere Namen enthält. Um diese Struktur zu replizieren, benutzen Sie die folgenden Befehle:$ cd ~/Documents $ echo "John, Michael, Bob" > clients.txt $ mkdir somedir $ echo "Bill, Luke, Karl" > somedir/clients.txt
Sie erstellen dann einen Link in
somedir
mit dem Namenpartners.txt
, der auf diese Datei zeigt:$ cd somedir/ $ ln -s clients.txt partners.txt
Die Verzeichnisstruktur ist dann die folgende:
Documents |-- clients.txt `-- somedir |-- clients.txt `-- partners.txt -> clients.txt
Jetzt verschieben Sie
partners.txt
vonsomedir
nach~/Documents
und listen den Inhalt auf.$ cd ~/Documents/ $ mv somedir/partners.txt . $ less partners.txt
Funktioniert der Link noch? Wenn ja, welcher Dateiinhalt wird angezeigt? Warum?
-
Betrachten Sie die folgenden Dateien:
-rw-r--r-- 1 carol carol 19 Jun 24 11:12 clients.txt lrwxrwxrwx 1 carol carol 11 Jun 24 11:13 partners.txt -> clients.txt
Wie lauten die Zugriffsrechte für
partners.txt
? Warum?
Zusammenfassung
In dieser Lektion haben Sie gelernt:
-
Wo temporäre Dateien gespeichert werden.
-
Welche speziellen Berechtigungen für diese gelten.
-
Was Links sind.
-
Den Unterschied zwischen symbolischen und harten Links.
-
Wie man Links erstellt.
-
Wie man Links verschiebt, umbenennt oder entfernt.
Die folgenden Befehle wurden in dieser Lektion behandelt:
-
ln
-
Der Parameter
-i
fürls
Lösungen zu den geführten Übungen
-
Angenommen ein Programm muss eine temporäre Datei zur einmaligen Verwendung erstellen, die nach dem Beenden des Programms nie wieder benötigt wird. In welchem Verzeichnis sollte diese Datei erstellt werden?
Da die Datei keine Rolle mehr spielt, nachdem das Programm beendet ist, ist
/tmp
das richtige Verzeichnis. -
Welches ist das temporäre Verzeichnis, das während des Bootvorgangs gelöscht werden muss?
Das Verzeichnis ist
/run
oder, auf einigen Systemen,/var/run
. -
Wie lautet der Parameter für
chmod
im symbolischen Modus, um das Sticky Bit für ein Verzeichnis zu aktivieren?Das Symbol für das Sticky Bit im symbolischen Modus ist
t
. Da wir diese Berechtigung für das Verzeichnis aktivieren (hinzufügen) wollen, sollte der Parameter+t
sein. -
Angenommen es gibt eine Datei namens
document.txt
im Verzeichnis/home/carol/Documents
. Wie lautet der Befehl, um einen symbolischen Link mit dem Namentext.txt
im aktuellen Verzeichnis darauf zu erstellen?ln -s
ist der Befehl, um einen symbolischen Link zu erstellen. Da wir den absoluten Pfad zu der Datei, auf die wir verlinken, angeben sollten, lautet der Befehl:$ ln -s /home/carol/Documents/document.txt text.txt
-
Erklären Sie den Unterschied zwischen einem harten Link auf eine Datei und einer Kopie dieser Datei.
Ein Hard Link ist nur ein anderer Name für eine Datei. Auch wenn er wie ein Duplikat der Originaldatei aussieht, sind Link und Original für alle Zwecke gleich, da sie auf die gleichen Daten auf der Festplatte zeigen. Änderungen am Inhalt des Links werden auf das Original übertragen und umgekehrt. Eine Kopie ist eine völlig unabhängige Einheit, die einen anderen Platz auf der Festplatte einnimmt. Änderungen an der Kopie werden nicht auf das Original übertragen und umgekehrt.
Lösungen zu den offenen Übungen
-
Angenommen Sie erstellen in einem Verzeichnis eine Datei namens
recipes.txt
. In diesem Verzeichnis erstellen Sie zudem einen Hard Link namensreceitas.txt
zu dieser Datei sowie einen symbolischen Link namensrezepte.txt
.$ touch recipes.txt $ ln recipes.txt receitas.txt $ ln -s receitas.txt rezepte.txt
Der Inhalt des Verzeichnisses sollte so aussehen:
$ ls -lhi total 160K 5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt 5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 recipes.txt 5388837 lrwxrwxrwx 1 carol carol 12 jun 24 10:12 rezepte.txt -> receitas.txt
Denken Sie daran, dass
receitas.txt
als Hard Link auf denselben Inode wierecipes.txt
zeigt. Was würde mit dem Softlinkrezepte.txt
passieren, wenn der Namereceitas.txt
gelöscht wird? Warum?Der Softlink
rezepte.txt
würde nicht mehr funktionieren. Das liegt daran, dass Softlinks auf Namen und nicht auf Inodes verweisen und der Namereceitas.txt
nicht mehr existiert, auch wenn die Daten noch unter dem Namenrecipes.txt
auf der Festplatte vorhanden sind. -
Angenommen Sie haben ein Flash-Laufwerk an Ihr System angeschlossen und unter
/media/youruser/FlashA
gemountet. Sie möchten in Ihrem Home-Verzeichnis einen Link namensschematics.pdf
erstellen, der auf die Dateiesquema.pdf
im Hauptverzeichnis des Flash-Laufwerks verweist. Sie geben also den folgenden Befehl ein:$ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf
Was würde passieren? Warum?
Der Befehl würde fehlschlagen. Die Fehlermeldung wäre
Invalid cross-device link
, und sie macht den Grund klar: Hard Links können nicht auf ein Ziel auf einer anderen Partition oder einem anderen Gerät zeigen. Der einzige Weg, einen solchen Link zu erstellen, ist ein symbolischer Link, wobeiln
mit dem Parameter-s
aufgerufen wird. -
Betrachten Sie die folgende Ausgabe von
ls -lah
:$ ls -lah total 3,1M drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 . drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 .. -rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip -rw-r--r-- 4 carol carol 77K jun 17 17:25 document.txt -rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png -rw-r--r-- 4 carol carol 77K jun 17 17:25 text.txt
-
Wie viele Links zeigen auf die Datei
document.txt
?Jede Datei beginnt mit einer Linkzahl von
1
. Da die Anzahl der Links für die Datei4
ist, gibt es drei Links, die auf diese Datei zeigen. -
Sind es Soft oder Hard Links?
Es handelt sich um Hard Links, da Softlinks die Linkzahl einer Datei nicht erhöhen.
-
Welchen Parameter sollten Sie an
ls
übergeben, um zu sehen, welchen Inode jede Datei belegt?Der Parameter ist
-i
. Der Inode wird als erste Spalte in der Ausgabe vonls
angezeigt:$ ls -lahi total 3,1M 5388773 drwxr-xr-x 2 rigues rigues 4,0K jun 17 17:27 . 5245554 drwxr-xr-x 5 rigues rigues 4,0K jun 17 17:29 .. 5388840 -rw-rw-r-- 1 rigues rigues 2,8M jun 17 15:45 compressed.zip 5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 document.txt 5388837 -rw-rw-r-- 1 rigues rigues 216K jun 17 17:25 image.png 5388833 -rw-r--r-- 4 rigues rigues 77K jun 17 17:25 text.txt
-
-
Angenommen Sie haben in Ihrem
~/Documents
-Verzeichnis eine Datei namensclients.txt
, die einige Kundennamen enthält, und ein Verzeichnis namenssomedir
. Darin befindet sich eine andere Datei, die ebenfallsclients.txt
heißt und andere Namen enthält. Um diese Struktur zu replizieren, benutzen Sie die folgenden Befehle:$ cd ~/Documents $ echo "John, Michael, Bob" > clients.txt $ mkdir somedir $ echo "Bill, Luke, Karl" > somedir/clients.txt
Sie erstellen dann einen Link in
somedir
mit dem Namenpartners.txt
, der auf diese Datei zeigt:$ cd somedir/ $ ln -s clients.txt partners.txt
Die Verzeichnisstruktur ist dann die folgende:
Documents |-- clients.txt `-- somedir |-- clients.txt `-- partners.txt -> clients.txt
Jetzt verschieben Sie
partners.txt
vonsomedir
nach~/Documents
und listen den Inhalt auf.$ cd ~/Documents/ $ mv somedir/partners.txt . $ less partners.txt
Funktioniert der Link noch? Wenn ja, welcher Dateiinhalt wird angezeigt? Warum?
Das ist knifflig, aber der Link wird funktionieren und die aufgelistete Datei wird die in
~/Documents
sein, die die NamenJohn
,Michael
,Bob
enthält.Da wir beim Erstellen des Soft Links
partners.txt
nicht den vollständigen Pfad zum Zielclients.txt
angegeben haben, wird der Zielort als relativ zum Ort des Links interpretiert, der in diesem Fall das aktuelle Verzeichnis ist.Wenn der Link von
~/Documents/somedir
nach~/Documents
verschoben wurde, sollte er nicht mehr funktionieren, da sich das Ziel nicht mehr im selben Verzeichnis wie der Link befand. Allerdings gibt es zufällig eine Datei namensclients.txt
in~/Documents
, so dass der Link auf diese Datei zeigt, statt auf das ursprüngliche Ziel in~/somedir
.Um dies zu vermeiden, geben wir bei der Erstellung eines symbolischen Links immer den vollständigen Pfad zum Ziel an.
-
Betrachten Sie die folgenden Dateien:
-rw-r--r-- 1 rigues rigues 19 Jun 24 11:12 clients.txt lrwxrwxrwx 1 rigues rigues 11 Jun 24 11:13 partners.txt -> clients.txt
Wie lauten die Zugriffsrechte für
partners.txt
? Warum?Die Zugriffsberechtigungen für
partners.txt
sindrw-r—r--
, da Links immer dieselben Zugriffsberechtigungen wie das Ziel haben.