GNU/Linux >> Tutoriales Linux >  >> Linux

Crear enlaces duros y blandos:preparación para el examen RHCSA

En esta parte de la preparación para el examen RHCSA, centraremos nuestra atención en los enlaces. Hay dos tipos de enlace, enlaces duros y enlaces blandos. En este artículo hablaremos sobre cómo crear y eliminar enlaces y también discutiremos algunos antecedentes básicos detrás de los enlaces duros y suaves.

En este tutorial aprenderás:

  • ¿Qué son los enlaces simbólicos (suaves)?
  • ¿Qué son los enlaces duros?
  • Cómo crear un enlace simbólico
  • Cómo crear un vínculo físico
  • Cómo eliminar el enlace

Página de manual del ln comando

Requisitos de software y convenciones utilizadas

¿Qué son los enlaces en los sistemas GNU/Linux?

Cada archivo tiene información sobre su fecha de creación, modificación, acceso, así como la propiedad del archivo y sus permisos almacenados en un llamado inodo . Además de los metadatos almacenados ya mencionados, el inodo también almacena información sobre un bloque de datos donde el contenido real del archivo se almacena en el sistema de archivos.

Por tanto, la función principal del inodo es describir un objeto del sistema de archivos, como un archivo o un directorio. Para acceder al objeto del sistema de archivos asociado con un inodo específico necesitamos proporcionar al usuario un vínculo físico cuál es el nombre real del archivo o directorio.

Esto explica el primer tipo de enlaces que son enlaces duros . El segundo tipo de enlaces en el sistema operativo GNU/Linux son los enlaces simbólicos también conocido como enlaces blandos. La diferencia entre los enlaces duros y los simbólicos es que los enlaces simbólicos solo apuntan a los enlaces duros, es decir, apuntan a los nombres de archivos o directorios existentes. En pocas palabras, los enlaces permiten al usuario acceder a archivos o directorios a través de múltiples nombres.

Enlaces duros

Desde enlaces duros están asociados con los inodos que a su vez son una característica del sistema de archivos, los enlaces duros no pueden cruzar sistemas de archivos, por lo tanto, solo son válidos dentro del mismo sistema de archivos. Además, no es posible crear enlaces duros en los directorios. Cualquier intento de crear un enlace físico desde un directorio resultará en hard link not allowed for directory mensaje de error.

Vamos a crear algunos enlaces duros. En este ejemplo, primero crearemos un archivo arbitrario llamado sandbox que contiene un texto linuxconfig.org . Una vez que esté listo, crearemos múltiples enlaces duros a este archivo apuntando desde diferentes ubicaciones.

  1. Cree un archivo llamado sandbox que contiene un texto RHCSA dentro de un directorio de inicio de usuario ~/ .
    $ echo "RHCSA" > ~/sandbox
    

    Verifique el contenido del archivo usando el cat comando:

    $ cat ~/sandbox
    RHCSA
    
  2. Aún ubicado dentro de un directorio de inicio de usuario, cree un enlace fijo al sandbox archivo de /tmp/ directorio llamado hardlink1 .
    $ ln sandbox /tmp/hardlink1
    

    Ahora verifique el contenido del enlace duro recién creado /tmp/hardlink1 . El contenido del /tmp/hardlink1 y el sandbox original el archivo debe ser el mismo:

    $ cat /tmp/hardlink1
    RHCSA
    
  3. Compruebe la información del vínculo asociada con ambos nombres de archivo sandbox y /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
    

    Tenga en cuenta el número asociado 2 como se muestra en la salida anterior. Este número indica el número de enlaces duros asociados con un inodo específico.

    NOTA
    En esta etapa, es importante comprender que no existe una diferencia real entre el sandbox original y el recién creado /tmp/hardlink1 expediente. Ambos apuntan al mismo inodo utilizando diferentes nombres de archivo.
  4. Eliminar el enlace fijo usando unlink o rm dominio.
  5. $ unlink sandbox 
    $ ls -l /tmp/hardlink1 
    -rw-rw-r--. 1 linuxconfig linuxconfig 6 Jul 25 10:20 /tmp/hardlink1
    

    En este caso, tanto rm o unlink Los comandos eliminarán un enlace fijo, pero no los datos e inodos asociados reales. Desde el sandbox Se eliminó el enlace físico, solo hay 1 enlace duro a la izquierda asociado con el inodo original. A continuación, eliminaremos el último enlace fijo asociado con este archivo:

    $ rm /tmp/hardlink1
    

    En este punto, el enlace al inodo que apunta al contenido de nuestro archivo original se pierde, por lo que consideramos este archivo como eliminado. Si no hay enlaces duros que apunten a un inodo, el sistema de archivos ahora puede sobrescribir la ubicación de este inodo con nuevos datos.

¿SABÍAS QUE?
¿Puede eliminar cualquier archivo (dado que tiene los permisos adecuados) usando el comando desvincular? Pruébalo ahora:

$ touch file
$ unlink file

Si entendió los comandos anteriores, entonces domina los enlaces duros de GNU/Linux como se explica en este tutorial.

Enlaces simbólicos

Además de los enlaces duros, también hay un tipo diferente de enlaces disponibles en el sistema operativo GNU/Linux. Enlaces simbólicos puede cruzar sistemas de archivos, y también es posible crear un enlace simbólico de un directorio. Sin embargo, los enlaces simbólicos en lugar del inodo real , solo enlace a un enlace duro existente (nombre de archivo o directorio). Por esta razón, si se elimina el enlace físico real al que apunta el enlace simbólico, el enlace simbólico se rompe.

  1. Primero vamos a crear algunos objetos de sandbox para jugar. En este caso crearemos un directorio llamado mydir y dentro de este directorio crearemos un archivo llamado myfile .
    $ mkdir mydir
    $ touch mydir/myfile
    
  2. A continuación, crearemos un nuevo enlace simbólico del directorio existente midir usando el ln comando con una combinación de -s opción.
    $ ln -s ~/mydir /tmp/symdir
    

    Ahora, hemos creado un enlace simbólico llamado symdir ubicado dentro del /tmp directorio.

    $ cd /tmp/
    $ ls -l symdir
    lrwxrwxrwx. 1 linuxconfig linuxconfig 23 Jul 25 14:05 symdir -> /home/linuxconfig/mydir
    

    Tenga en cuenta el primer carácter de la salida anterior. En este caso el caracter l indica que estamos tratando con un enlace simbólico.

    NOTA
    Al crear enlaces simbólicos, tenga en cuenta que el ln El comando almacena la ruta real proporcionada como cadena. Si no está dentro del mismo directorio, en muchos casos debe proporcionar la ruta completa para que el enlace simbólico funcione

    El symdir recién creado debe contener el archivo previamente creado myfile :

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

Ejercicios

  1. Juega con enlaces simbólicos. Cree un enlace simbólico a un archivo, luego elimine el archivo original y vea qué sucedió con su enlace simbólico.
  2. Qué pasa cuando ejecutas ls Comando con un solo argumento. Por ejemplo, ejecute el siguiente comando ln -s /etc/services . ¿Qué pasó?
  3. Determine si necesita ser propietario del archivo para crear un enlace simbólico a él. ¿Se aplica la misma regla para los enlaces físicos?

  4. Linux
    1. Enlaces duros y enlaces blandos en Linux explicados

    2. Ulimit:¿Diferencia entre límites duros y suaves?

    3. ¿La diferencia entre enlaces simbólicos y duros?

    4. Cómo crear enlaces blandos y duros en Linux

    5. Qué son los Enlaces Simbólicos (Soft Links) y cómo crearlos bajo Linux

    Objetivos de estudio para el examen RHCSA y guía de preparación

    Crear y configurar directorios setgid para colaboración:preparación de objetivos de RHCSA

    Cómo crear enlaces duros y blandos (enlace simbólico) en sistemas Linux

    Explicación de Soft Link y Hard Link en Linux con ejemplos

    El comando ln en Linux:crear enlaces blandos y duros

    Enlaces duros y enlaces blandos en Linux:todo lo que necesita saber

    Requisitos de software y convenciones de la línea de comandos de Linux
    Categoría Requisitos, convenciones o versión de software utilizada
    Sistema Red Hat Enterprise Linux 8 o cualquier otra distribución GNU/Linux
    Software N/A
    Otro Acceso privilegiado a su sistema Linux como root o a través de sudo comando.
    Convenciones # – requiere que los comandos de Linux dados se ejecuten con privilegios de root, ya sea directamente como usuario root o mediante el uso de sudo comando
    $ – requiere que los comandos de Linux dados se ejecuten como un usuario normal sin privilegios