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
Pagina manuale del 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
sandboxcontenente un testoRHCSAall'interno di una directory home utente~/.$ echo "RHCSA" > ~/sandbox
Controlla il contenuto del file usando il
catcomando:$ cat ~/sandbox RHCSA
- Ancora situato all'interno di una directory home utente, crea un collegamento fisico alla
sandboxfile da/tmp/directory chiamatahardlink1.$ ln sandbox /tmp/hardlink1
Ora controlla il contenuto del nuovo hard link
/tmp/hardlink1. Il contenuto del/tmp/hardlink1e lasandboxoriginale il file dovrebbe essere lo stesso:$ cat /tmp/hardlink1 RHCSA
- Controlla le informazioni sul collegamento associate a entrambi i nomi di file
sandboxe/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
2come 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 ilsandboxoriginale e il/tmp/hardlink1appena creato file. Entrambi puntano allo stesso inode utilizzando nomi di file diversi. - Rimuovi il collegamento reale utilizzando
unlinkormcomando.
$ 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
mydire 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
lncomando con una combinazione di-sopzione.$ ln -s ~/mydir /tmp/symdir
Ora, abbiamo creato un collegamento simbolico chiamato
symdirsituato all'interno di/tmpdirectory.$ 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
lindica che abbiamo a che fare con un collegamento simbolico.NOTA
Quando crei un link simbolico tieni presente chelncomando 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
symdirappena 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
lscomando 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?