In questa parte della preparazione all'esame RHCSA rivolgeremo la nostra attenzione ai link. Ci sono due tipi di link, hard link e soft link. In questo articolo parleremo di come creare e rimuovere collegamenti e discuteremo anche alcune basi di base su entrambi, gli hard link e i soft link.
In questo tutorial imparerai:
- Cosa sono i link simbolici (soft)
- Cosa sono gli hard link
- Come creare un collegamento simbolico
- Come creare un collegamento fisico
- Come rimuovere il collegamento

ln
comando Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | Red Hat Enterprise Linux 8 o qualsiasi altra distribuzione GNU/Linux |
Software | N/D |
Altro | Accesso privilegiato al tuo sistema Linux come root o tramite sudo comando. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Cosa sono i link sui sistemi GNU/Linux
Ogni file ha informazioni sulla sua data di creazione, modifica, accesso, nonché sulla proprietà del file e le sue autorizzazioni memorizzate in un cosiddetto inode . Oltre ai già citati metadati memorizzati, l'inode memorizza anche un'informazione su un blocco di dati in cui il contenuto effettivo del file è archiviato nel file system.
Pertanto, la funzione principale dell'inode è descrivere un oggetto del file system come un file o una directory. Per accedere all'oggetto del file system associato a uno specifico inode dobbiamo fornire all'utente un collegamento fisico che è il nome effettivo del file o della directory.
Questo spiega il primo tipo di link che sono collegamenti fisici . Il secondo tipo di link sul sistema operativo GNU/Linux sono link simbolici alias collegamenti morbidi. La differenza tra collegamenti fisici e simbolici è che i collegamenti simbolici puntano solo a collegamenti reali, ovvero puntano ai nomi di file o directory esistenti. In poche parole i collegamenti consentono all'utente di accedere a file o directory tramite più nomi.
Collegamenti reali
Dal momento che collegamenti reali sono associati agli inode che a loro volta sono una caratteristica del file system, gli hard link non possono attraversare i file system, quindi sono validi solo all'interno dello stesso file system. Inoltre, non è possibile creare collegamenti fisici su directory. Qualsiasi tentativo di creare un collegamento fisico da una directory risulterà in hard link not allowed for directory
messaggio di errore.
Creiamo alcuni collegamenti reali. In questo esempio creeremo prima un file arbitrario chiamato sandbox
contenente un testo linuxconfig.org
. Una volta pronto, creeremo più collegamenti reali a questo file che punta da posizioni diverse.
- Crea un file chiamato
sandbox
contenente un testoRHCSA
all'interno di una directory home utente~/
.$ echo "RHCSA" > ~/sandbox
Controlla il contenuto del file usando il
cat
comando:$ cat ~/sandbox RHCSA
- Ancora situato all'interno di una directory home utente, crea un collegamento fisico alla
sandbox
file da/tmp/
directory chiamatahardlink1
.$ ln sandbox /tmp/hardlink1
Ora controlla il contenuto del nuovo hard link
/tmp/hardlink1
. Il contenuto del/tmp/hardlink1
e lasandbox
originale il file dovrebbe essere lo stesso:$ cat /tmp/hardlink1 RHCSA
- Controlla le informazioni sul collegamento associate a entrambi i nomi di file
sandbox
e/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
Prendere nota del numero associato
2
come mostrato dall'output sopra. Questo numero indica il numero di collegamenti fisici associati a un inode specifico.NOTA
In questa fase è importante capire che non c'è una reale differenza tra ilsandbox
originale e il/tmp/hardlink1
appena creato file. Entrambi puntano allo stesso inode utilizzando nomi di file diversi. - Rimuovi il collegamento reale utilizzando
unlink
orm
comando.
$ unlink sandbox $ ls -l /tmp/hardlink1 -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
In questo caso, entrambi rm
o unlink
i comandi rimuoveranno un collegamento fisico ma non i dati e l'inode associati effettivi. Dal sandbox
il collegamento fisico è stato rimosso c'è solo 1
hard link lasciato associato all'inode originale. Successivamente, rimuoveremo l'ultimo hard link associato a questo file:
$ rm /tmp/hardlink1
A questo punto il collegamento all'inode che punta al contenuto del nostro file originale è perso, quindi consideriamo questo file rimosso. Se non ci sono collegamenti fisici che puntano a un inode, il filesystem potrebbe ora sovrascrivere la posizione di questo inode con nuovi dati.
Puoi rimuovere qualsiasi file (dato che hai i permessi appropriati) usando il comando unlink? Provalo ora:
$ touch file $ unlink file
Se hai compreso i comandi di cui sopra, allora hai padroneggiato gli hard link GNU/Linux come spiegato in questo tutorial.
Link simbolici
Oltre agli hard link, c'è anche un diverso tipo di link disponibile sul sistema operativo GNU/Linux. Link simbolici può attraversare file system ed è anche possibile creare un collegamento simbolico di una directory. Tuttavia, collegamenti simbolici invece dell'effettivo inode , collega solo a collegamenti reali esistenti (nome file o directory). Per questo motivo, se il collegamento reale a cui punta il collegamento simbolico viene rimosso, il collegamento simbolico viene interrotto.
- Prima creiamo alcuni oggetti sandbox con cui giocare. In questo caso creeremo una directory chiamata
mydir
e all'interno di questa directory creeremo un file chiamatomyfile
.$ mkdir mydir $ touch mydir/myfile
- In seguito, creeremo un nuovo collegamento simbolico della directory esistente mydir utilizzando il
ln
comando con una combinazione di-s
opzione.$ ln -s ~/mydir /tmp/symdir
Ora, abbiamo creato un collegamento simbolico chiamato
symdir
situato all'interno di/tmp
directory.$ cd /tmp/ $ ls -l symdir lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
Nota il primo carattere dell'output sopra. In questo caso il carattere
l
indica che abbiamo a che fare con un collegamento simbolico.NOTA
Quando crei un link simbolico tieni presente cheln
comando memorizza il percorso effettivo fornito come stringa. Se non all'interno della stessa directory, in molti casi è necessario fornire il percorso completo per l'ordine affinché il collegamento simbolico funzioniLa
symdir
appena creata dovrebbe contenere un file precedentemente creatomyfile
:$ cd symdir $ ls myfile $pwd /tmp/symdir
Esercizi
- Gioca con i link simbolici. Crea un collegamento simbolico a un file dopodiché rimuovi il file originale e guarda cosa è successo con il tuo collegamento simbolico.
- Cosa succede quando esegui
ls
comando con un solo argomento. Ad esempio, esegui il seguente comandoln -s /etc/services
. Cosa è successo? - Determina se è necessario possedere il file per creare un collegamento simbolico ad esso. La stessa regola si applica ai collegamenti reali?