GNU/Linux >> Linux Esercitazione >  >> Linux

Crea collegamenti rigidi e morbidi - Preparazione all'esame RHCSA

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

Requisiti software e convenzioni della riga di comando Linux
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.

  1. Crea un file chiamato sandbox contenente un testo RHCSA all'interno di una directory home utente ~/ .
    $ echo "RHCSA" > ~/sandbox
    

    Controlla il contenuto del file usando il cat comando:

    $ cat ~/sandbox
    RHCSA
    
  2. Ancora situato all'interno di una directory home utente, crea un collegamento fisico alla sandbox file da /tmp/ directory chiamata hardlink1 .
    $ ln sandbox /tmp/hardlink1
    

    Ora controlla il contenuto del nuovo hard link /tmp/hardlink1 . Il contenuto del /tmp/hardlink1 e la sandbox originale il file dovrebbe essere lo stesso:

    $ cat /tmp/hardlink1
    RHCSA
    
  3. 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 il sandbox originale e il /tmp/hardlink1 appena creato file. Entrambi puntano allo stesso inode utilizzando nomi di file diversi.
  4. Rimuovi il collegamento reale utilizzando unlink o rm comando.
  5. $ 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.

LO SAPEVATE?
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.

  1. 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 chiamato myfile .
    $ mkdir mydir
    $ touch mydir/myfile
    
  2. 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 che ln 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 funzioni

    La symdir appena creata dovrebbe contenere un file precedentemente creato myfile :

    $ cd symdir
    $ ls
    myfile
    $pwd 
    /tmp/symdir
    

Esercizi

  1. 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.
  2. Cosa succede quando esegui ls comando con un solo argomento. Ad esempio, esegui il seguente comando ln -s /etc/services . Cosa è successo?
  3. Determina se è necessario possedere il file per creare un collegamento simbolico ad esso. La stessa regola si applica ai collegamenti reali?

Linux
  1. Come creare collegamenti rigidi e simbolici in Linux

  2. Spiegazione di hard link e soft link in Linux

  3. Ulimit:differenza tra limiti hard e soft?

  4. La differenza tra collegamenti simbolici e hard?

  5. Come creare collegamenti soft e hard in Linux

Obiettivi di studio per la guida all'esame e alla preparazione RHCSA

Crea e configura le directory setgid per la collaborazione – Preparazione dell'obiettivo RHCSA

Come creare collegamenti hard e soft (collegamento simbolico) su sistemi Linux

Spiegazione di Soft Link e Hard Link in Linux con esempi

Il comando ln in Linux:crea collegamenti soft e hard

Hard link e soft link in Linux:tutto ciò che devi sapere