Cos'è il collegamento simbolico in Linux e perché viene utilizzato?
Un collegamento simbolico, noto anche come collegamento simbolico o collegamento software , è un tipo speciale di file che punta semplicemente a un altro file o directory, proprio come le scorciatoie in Windows. Creare un collegamento simbolico è come creare un alias in un file reale.
Se si tenta di accedere al collegamento simbolico, si accede effettivamente al file di destinazione a cui punta il collegamento simbolico. Le modifiche apportate al contenuto del file di collegamento modificano il contenuto del file di destinazione effettivo.
Se usi il comando ls con l'opzione -l, ecco come appare un collegamento simbolico:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Nella maggior parte delle distribuzioni Linux, i collegamenti vengono visualizzati in un colore diverso rispetto al resto delle voci in modo da poter distinguere i collegamenti dai normali file e directory.
I collegamenti simbolici offrono un modo conveniente per organizzare e condividere file. Forniscono un rapido accesso a percorsi di directory lunghi e confusi. Sono molto utilizzati per collegare le librerie in Linux.
Ora che conosci un po' i link simbolici, vediamo come crearli.
Come creare un collegamento simbolico in Linux
Per creare un collegamento simbolico al file di destinazione dal nome del collegamento , puoi usare il comando ln con l'opzione -s in questo modo:
ln -s target_file link_name
L'opzione -s è importante qui. Determina che il collegamento è soft link. Se non lo usi, creerà un collegamento fisico. Spiegherò la differenza tra soft link e hard link in un altro articolo.
Cose da tenere a mente sui link simbolici
I collegamenti simbolici a volte possono confondere, quindi dovresti prendere nota di alcune cose.
Le modifiche apportate al collegamento si riflettono nel file originale
Questo è l'intero scopo dei collegamenti, dopotutto. Si accede al file di destinazione accedendo al collegamento. È possibile apportare modifiche al file di destinazione tramite i collegamenti. Vediamo con esempio.
Ho un file prog.py in newdir/test_dir. Ha i seguenti attributi:
-rw-r--r-- 1 abhishek abhishek 163 Apr 13 15:07 newdir/test_dir/prog.py
Ora creerò un collegamento software a questo file nella mia directory attuale:
ln -s newdir/test_dir/prog.py link_prog
Ecco gli attributi del link appena creato:
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Nota la l (è L, non uno) all'inizio della riga? Se hai familiarità con i permessi dei file in Linux, sapresti che la "l" significa collegamento e quindi ti dice che questo file è in realtà un collegamento. Per rinfrescare la memoria, – significa file e d significa directory.
Ora, se uso questo collegamento per modificare il contenuto o gli attributi, lo stesso si rifletterà nel file di destinazione. Ad esempio, sto usando il comando touch sul collegamento software e noterai che cambia il timestamp del file di destinazione.
touch link_prog
ls -l newdir/test_dir/prog.py
-rw-r--r-- 1 abhishek abhishek 163 Jul 2 10:04 newdir/test_dir/prog.py
Si collega a un file o una directory? Potresti non saperlo!
Come faresti a sapere se il collegamento punta a un file o a una directory? Non puoi saperlo finché non segui il percorso e accedi al file di destinazione stesso.
Puoi creare collegamenti a file o directory inesistenti
Sì, è del tutto possibile. Questo è il motivo per cui dovresti stare attento durante la creazione di collegamenti software in Linux. Il file di destinazione a cui stai collegando non deve esistere. Non riceverai alcun errore o avviso per la creazione di un collegamento a un file/directory che non esiste.
Riceverai un errore solo quando proverai ad accedere al file di destinazione, tramite il collegamento o da solo. Il comando ls funzionerà comunque.
ln -s non_existant_dir link_dir
less link_dir
link_dir: No such file or directory
I link simbolici vengono creati con il permesso 777 ma non significa nulla
Hai notato il permesso del file sul collegamento simbolico? I collegamenti simbolici vengono sempre creati con l'autorizzazione 777 (rwxrwxrwx). Per un file normale, ciò significherebbe che chiunque può accedere al file. Ma non è il caso dei link.
lrwxrwxrwx 1 abhishek abhishek 23 Jul 2 08:51 link_prog -> newdir/test_dir/prog.py
Se le autorizzazioni dei file sui collegamenti fossero trattate così come sono, qualsiasi utente potrebbe creare un collegamento simbolico a un file protetto e accedervi liberamente. Sarebbe un grosso problema di sicurezza. Per fortuna, ciò non accade. Perché l'autorizzazione sui file di destinazione è importante, non l'autorizzazione sui collegamenti.
Puoi utilizzare il comando chmod per modificare l'autorizzazione sul collegamento, ma cambierà l'autorizzazione del file collegato, non il collegamento stesso.
Puoi collegarti a un collegamento di un collegamento noto anche come collegamento simbolico concatenato
È possibile creare un collegamento simbolico che punti a un altro collegamento e così via. Questo è chiamato collegamento simbolico concatenato. È meglio evitarli perché creano più confusione.
Bene, questo è tutto. Presumo che tu abbia una migliore conoscenza dei collegamenti software ora e tu sappia come creare collegamenti simbolici in Linux. Potresti leggere del comando symlinks che può aiutarti a trovare collegamenti simbolici interrotti in Linux e gestirli facilmente.
Se hai domande o suggerimenti, lascia un commento qui sotto.