Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Roadmap
    • Contáctenos
  • LPI.org
104.6 Lección 1
Tema 101: Arquitectura del Sistema
101.1 Determinar y configurar los ajustes de hardware
  • 101.1 Lección 1
101.2 Arranque del sistema
  • 101.2 Lección 1
101.3 Cambiar los niveles de ejecución / objetivos de arranque y apagar o reiniciar el sistema
  • 101.3 Lección 1
Tema 102: Instalación de Linux y gestión de paquetes
102.1 Diseño del esquema de particionado del disco duro duro
  • 102.1 Lección 1
102.2 Instalar un gestor de arranque
  • 102.2 Lección 1
102.3 Gestión de librerías compartidas
  • 102.3 Lección 1
102.4 Gestión de paquetes Debian
  • 102.4 Lección 1
102.5 Gestión de paquetes RPM y YUM
  • 102.5 Lección 1
102.6 Linux como sistema virtualizado
  • 102.6 Lección 1
Tema 103: Comandos GNU y Unix
103.1 Trabajar desde la línea de comandos
  • 103.1 Lección 1
  • 103.1 Lección 2
103.2 Procesar secuencias de texto usando filtros
  • 103.2 Lección 1
103.3 Administración básica de archivos
  • 103.3 Lección 1
  • 103.3 Lección 2
103.4 Uso de secuencias de texto, tuberías y redireccionamientos
  • 103.4 Lección 1
  • 103.4 Lección 2
103.5 Crear, supervisar y matar procesos
  • 103.5 Lección 1
  • 103.5 Lección 2
103.6 Modificar la prioridad de ejecución de los procesos
  • 103.6 Lección 1
103.7 Realizar búsquedas en archivos de texto usando expresiones regulares
  • 103.7 Lección 1
  • 103.7 Lección 2
103.8 Edición básica de archivos
  • 103.8 Lección 1
Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
104.1 Creación de particiones y sistemas de archivos
  • 104.1 Lección 1
104.2 Mantener la integridad de los sistemas de archivos
  • 104.2 Lección 1
104.3 Controlar el montaje y desmontaje de los sistemas de archivos
  • 104.3 Lección 1
104.5 Administración de los permisos y los propietarios de los archivos
  • 104.5 Lección 1
104.6 Crear y cambiar enlaces duros y simbólicos
  • 104.6 Lección 1
104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente
  • 104.7 Lección 1
How to get certified
  1. Tema 104: Dispositivos, sistemas de archivos Linux y el estándar de jerarquía de archivos
  2. 104.6 Crear y cambiar enlaces duros y simbólicos
  3. 104.6 Lección 1

104.6 Lección 1

Certificación:

LPIC-1

Versión:

5.0

Tema:

104 Dispositivos, sistemas de archivos Linux, estándar de jerarquía del sistema de archivos

Objetivo:

104.6 Crear y cambiar enlaces físicos y simbólicos

Lección:

1 de 1

Introducción

En Linux, algunos archivos reciben un tratamiento especial ya sea por el lugar en el que se almacenan, como los archivos temporales, o la forma en que interactúan con el sistema de archivos, como los enlaces. En esta lección aprenderá qué son los enlaces y cómo administrarlos.

Entender los Enlaces

Como ya se mencionó, en Linux todo se trata como un archivo. Pero hay un tipo especial de archivo, llamado link, y hay dos tipos de enlaces en un sistema Linux:

Enlaces simbólicos

También llamados enlaces suaves, apuntan a la ruta de otro archivo. Si borra el archivo al que apunta el enlace (llamado target), el enlace seguirá existiendo, pero “deja de funcionar”, ya que ahora apunta a “nada”.

Enlaces duros

Piense en un enlace físico como un segundo nombre para el archivo original. No son duplicados, sino que son una entrada adicional en el sistema de archivos que apunta al mismo lugar (inodo) en el disco.

Tip

Un inodo es una estructura de datos que almacena atributos para un objeto (como un archivo o directorio) en un sistema de archivos. Entre esos atributos están los permisos, la propiedad y en qué bloques del disco se almacenan los datos del objeto. Piense en ello como una entrada en un índice, de ahí el nombre, que proviene de “index node”.

Trabajar con Enlaces duros

Creación de enlaces duros

El comando para crear un enlace físico en Linux es ln. La sintaxis básica es:

$ ln TARGET LINK_NAME

El TARGET ya debe existir (este es el archivo al que apuntará el enlace), y si el objetivo no está en el directorio actual, o si desea crear el enlace en otro lugar, debe especificar la ruta completa. Por ejemplo, el comando:

$ ln target.txt /home/carol/Documents/hardlink

creará un archivo llamado hardlink en el directorio /home/carol/Documents/, vinculado al archivo target.txt en el directorio actual.

Si omite el último parámetro (LINK_NAME), se creará un vínculo con el mismo nombre que el objetivo en el directorio actual.

Gestión de enlaces duros

Los enlaces duros son entradas en el sistema de archivos que tienen diferentes nombres pero apuntan a los mismos datos en el disco. Todos estos nombres son iguales y pueden usarse para hacer referencia a un archivo. Si cambia el contenido de uno de los nombres, el contenido de todos los demás nombres que apuntan a ese archivo cambia, ya que todos estos nombres apuntan a los mismos datos. Si elimina uno de los nombres, los otros nombres seguirán funcionando.

Esto sucede porque cuando “borras” un archivo, los datos no se borran del disco. El sistema simplemente elimina la entrada en la tabla del sistema de archivos que apunta al inodo correspondiente a los datos en el disco. Pero si tiene una segunda entrada que apunta al mismo inodo, aún puede acceder a los datos. Piense en ello como dos caminos que convergen en el mismo punto. Incluso si bloquea o redirige una de las carreteras, aún puede llegar al destino utilizando la otra.

Puede verificar esto usando el parámetro -i de ls. Considere los siguientes contenidos de un directorio:

$ ls -li
total 224
3806696 -r--r--r-- 2 carol carol 111702 Jun  7 10:13 hardlink
3806696 -r--r--r-- 2 carol carol 111702 Jun  7 10:13 target.txt

El número antes de los permisos es el número de inodo. ¿Nota que tanto el archivo hardlink como el archivo target.txt tienen el mismo número (3806696)? Esto se debe a que uno es un vínculo duro del otro.

Pero, ¿cuál es el original y cuál es el enlace? Realmente no se puede decir, ya que para todos los propósitos prácticos son iguales.

Tenga en cuenta que cada enlace fijo que apunta a un archivo aumenta el conteo de enlaces del archivo. Este es el número justo después de los permisos en la salida de ls -l. De forma predeterminada, cada archivo tiene un recuento de enlaces de 1 (los directorios tienen un recuento de 2), y cada vínculo físico a él aumenta el recuento en uno. Entonces, esa es la razón del recuento de enlaces de 2 en los archivos de la lista anterior.

A diferencia de los enlaces simbólicos, solo puede crear enlaces físicos a archivos, y tanto el enlace como el destino deben residir en el mismo sistema de archivos.

Mover y eliminar enlaces duros

Dado que los enlaces duros se tratan como archivos normales, se pueden eliminar con rm y renombrarlos o moverlos por el sistema de archivos con mv. Y dado que un enlace fijo apunta al mismo inodo del objetivo, se puede mover libremente, sin miedo a “romper” el enlace.

Enlaces Simbólicos

Creación de enlaces simbólicos

El comando utilizado para crear un enlace simbólico también es ln, pero con el parámetro -s agregado. Al igual que:

$ ln -s target.txt /home/carol/Documents/softlink

Esto creará un archivo llamado softlink en el directorio /home/carol/Documents/, apuntando al archivo target.txt en el directorio actual.

Al igual que con los enlaces físicos, puede omitir el nombre del enlace para crear un enlace con el mismo nombre que el destino en el directorio actual.

Gestión de enlaces simbólicos

Los enlaces simbólicos apuntan a otra ruta en el sistema de archivos. Puede crear enlaces suaves a archivos y directorios, incluso en diferentes particiones. Es bastante fácil detectar un enlace simbólico con la salida del comando ls:

$ ls -lh
total 112K
-rw-r--r-- 1 carol carol 110K Jun  7 10:13 target.txt
lrwxrwxrwx 1 carol carol   12 Jun  7 10:14 softlink -> target.txt

En el ejemplo anterior, el primer carácter de los permisos para el archivo softlink es l, lo que indica un enlace simbólico. Además, justo después del nombre del archivo, verá el nombre del destino al que apunta el enlace, el archivo target.txt.

Tenga en cuenta que en los listados de archivos y directorios, los enlaces suaves siempre muestran los permisos rwx para el usuario, el grupo y otros, pero en la práctica los permisos de acceso para ellos son los mismos que los del objetivo.

Mover y eliminar enlaces simbólicos

Al igual que los enlaces físicos, los enlaces simbólicos pueden eliminarse usando rm y moverse o renombrarse usando mv. Sin embargo, se debe tener especial cuidado al crearlos, para evitar “romper” el enlace si se mueve de su ubicación original.

Al crear enlaces simbólicos, debe tener en cuenta que, a menos que se especifique completamente una ruta, la ubicación del objetivo se interpreta como relativa a la ubicación del enlace. Esto puede crear problemas si se mueve el vínculo o el archivo al que apunta.

Esto es más fácil de entender con un ejemplo. Supongamos que tiene un archivo llamado original.txt en el directorio actual y desea crear un enlace simbólico llamado softlink. Podrías usar:

$ ln -s original.txt softlink

Y aparentemente todo estaría bien. Comprobemos con ls:

$ ls -lh
total 112K
-r--r--r-- 1 carol carol 110K Jun  7 10:13 original.txt
lrwxrwxrwx 1 carol carol   12 Jun  7 19:23 softlink -> original.txt

Vea cómo se construye el enlace: softlink apunta a (→) original.txt. Sin embargo, veamos qué sucede si mueve el enlace al directorio anterior e intentas mostrar su contenido usando el comando less:

$ mv softlink ../
$ less ../softlink
../softlink: No such file or directory

Dado que no se especificó la ruta a original.txt, el sistema asume que está en el mismo directorio que el enlace. Cuando esto ya no es cierto, el enlace deja de funcionar.

La forma de evitar esto es especificar siempre la ruta completa al destino al crear el enlace:

$ ln -s /home/carol/Documents/original.txt softlink

De esta manera, no importa dónde mueva el enlace, seguirá funcionando, porque apunta a la ubicación absoluta del objetivo. Verifique con ls:

$ ls -lh
total 112K
lrwxrwxrwx 1 carol carol   40 Jun  7 19:34 softlink -> /home/carol/Documents/original.txt

Ejercicios Guiados

  1. ¿Cuál es el parámetro para chmod en el modo symbolic para habilitar el bit sticky en un directorio?

  2. Imagina que hay un archivo llamado document.txt en el directorio /home/carol/Documents. ¿Cuál es el comando para crear un enlace simbólico llamado text.txt en el directorio actual?

  3. Explique la diferencia entre un vínculo físico a un archivo y una copia de este archivo.

Ejercicios Exploratorios

  1. Imagine que dentro de un directorio crea un archivo llamado recipes.txt. Dentro de este directorio, también creará un enlace físico a este archivo, llamado receitas.txt, y un enlace simbólico (o soft) a este llamado rezepte.txt.

    $ touch recipes.txt
    $ ln recipes.txt receitas.txt
    $ ln -s recipes.txt rezepte.txt

    El contenido del directorio debería ser así:

    $ ls -lhi
    total 160K
    5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt
    5388833 -rw-r--r-- 4 carol carol  0K jun 17 17:25 recipes.txt
    5388837 lrwxrwxrwx 1 carol carol  12 jun 17 17:25 rezepte.txt -> receitas.txt

    Recuerde que, como enlace físico, receitas.txt apunta al mismo inodo que se asigna a recipes.txt. ¿Qué pasaría con el enlace suave rezepte.txt si se elimina el archivo receitas.txt? ¿Por qué?

  2. Imagine que tiene una unidad flash conectada a su sistema y montada en /media/youruser/FlashA. Desea crear un enlace llamado schematics.pdf en su directorio de inicio, apuntando al archivo esquema.pdf en la raíz de la unidad flash. Entonces, escribe el comando:

    $ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf

    ¿Qué pasaría? ¿Por qué?

  3. Considere la siguiente salida de ls -lah:

    $ ls -lah
    total 3,1M
    drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
    drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
    -rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
    -rw-r--r-- 4 carol carol  77K jun 17 17:25 document.txt
    -rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
    -rw-r--r-- 4 carol carol  77K jun 17 17:25 text.txt
    • ¿Cuántos enlaces apuntan al archivo document.txt?

    • ¿Son enlaces suaves o duros?

    • ¿Qué parámetro debería pasar a ls para ver qué inodo ocupa cada archivo?

  4. Imagine que tiene en su directorio ~/Documents un archivo llamado clients.txt que contiene algunos nombres de clientes y un directorio llamado somedir. Dentro de este hay un archivo diferente también llamado clients.txt con diferentes nombres. Para replicar esta estructura, use los siguientes comandos.

    $ cd ~/Documents
    $ echo "John, Michael, Bob" > clients.txt
    $ mkdir somedir
    $ echo "Bill, Luke, Karl" > somedir/clients.txt

    Luego cree un enlace dentro de somedir llamado partners.txt apuntando a este archivo, con los comandos:

    $ cd somedir/
    $ ln -s clients.txt partners.txt

    Entonces, la estructura del directorio es:

    Documents
    |-- clients.txt
    `-- somedir
        |-- clients.txt
        `-- partners.txt -> clients.txt

    Ahora, mueva partners.txt de somedir a ~/Documents y liste su contenido.

    $ cd ~/Documents/
    $ mv somedir/partners.txt .
    $ less partners.txt

    ¿Seguirá funcionando el enlace? Si es así, ¿qué archivo tendrá su contenido en la lista? ¿Por qué?

  5. Considere los siguientes archivos:

    -rw-r--r-- 1 carol carol 19 Jun 24 11:12 clients.txt
    lrwxrwxrwx 1 carol carol 11 Jun 24 11:13 partners.txt -> clients.txt

    ¿Cuáles son los permisos de acceso para partners.txt? ¿Por qué?

Resumen

En esta lección aprendimos:

  • Qué son los enlaces.

  • La diferencia entre enlaces simbólicos y duros.

  • Cómo crear enlaces.

  • Cómo mover, renombrar o eliminar estos enlaces.

Los siguientes comandos se discutieron en esta lección:

  • ln: El comando “link”. Por sí mismo, este comando crea un vínculo físico. Con la opción -s se puede crear un enlace simbólico o suave. Recuerde que los enlaces físicos solo pueden residir en la misma partición y sistema de archivos, y los enlaces simbólicos pueden atravesar particiones y sistemas de archivos (incluso el almacenamiento conectado a la red).

  • El parámetro -i de ls, que permite ver el número de inodo de un archivo.

Respuestas a los ejercicios guiados

  1. ¿Cuál es el parámetro para chmod en el modo symbolic para habilitar el bit sticky en un directorio?

    El símbolo del bit sticky en modo simbólico es t. Como queremos habilitar (agregar) este permiso al directorio, el parámetro debe ser +t.

  2. Imagina que hay un archivo llamado document.txt en el directorio /home/carol/Documents. ¿Cuál es el comando para crear un enlace simbólico llamado text.txt en el directorio actual?

    ln -s es el comando para crear un enlace simbólico. Dado que debe especificar la ruta completa al archivo al que está vinculando, el comando es:

    $ ln -s /home/carol/Documents/document.txt text.txt
  3. Explique la diferencia entre un vínculo físico a un archivo y una copia de este archivo.

    Un enlace físico es solo otro nombre para un archivo. Aunque parezca un duplicado del archivo original, a todos los efectos, tanto el enlace como el original son iguales, ya que apuntan a los mismos datos en el disco. Los cambios realizados en el contenido del enlace se reflejarán en el original y viceversa. Una copia es una entidad completamente independiente que ocupa un lugar diferente en el disco. Los cambios en la copia no se reflejarán en el original y viceversa.

Respuestas a ejercicios exploratorios

  1. Imagine que dentro de un directorio creas un archivo llamado recipes.txt. Dentro de este directorio, también creará un enlace físico a este archivo, llamado receitas.txt, y un enlace simbólico (o soft) a este llamado rezepte.txt.

    $ touch recipes.txt
    $ ln recipes.txt receitas.txt
    $ ln -s receitas.txt rezepte.txt

    El contenido del directorio debería ser así:

    $ ls -lhi
    total 160K
    5388833 -rw-r--r-- 4 carol carol 77K jun 17 17:25 receitas.txt
    5388833 -rw-r--r-- 4 carol carol  0K jun 17 17:25 recipes.txt
    5388837 lrwxrwxrwx 1 carol carol  12 jun 17 17:25 rezepte.txt -> receitas.txt

    Recuerde que, como enlace físico, receitas.txt apunta al mismo inodo que se asigna a recipes.txt. ¿Qué pasaría con el enlace suave rezepte.txt si se elimina el archivo receitas.txt? ¿Por qué?

    El enlace suave rezepte.txt dejaría de funcionar. Esto se debe a que los enlaces suaves apuntan a nombres, no a inodos, y el nombre receitas.txt ya no existe, incluso si los datos todavía están en el disco con el nombre recipes.txt.

  2. Imagine que tiene una unidad flash conectada a su sistema y montada en /media/youruser/FlashA. Desea crear un enlace llamado schematics.pdf en su directorio de inicio, apuntando al archivo esquema.pdf en la raíz de la unidad flash. Entonces, escribe el comando:

    $ ln /media/youruser/FlashA/esquema.pdf ~/schematics.pdf

    ¿Qué pasaría? ¿Por qué?

    El comando fallaría. El mensaje de error sería Invalid cross-device link, y aclara la razón: los enlaces físicos no pueden apuntar a un objetivo en una partición o dispositivo diferente. La única forma de crear un enlace como este es usar un enlace simbólico o suave, agregando el parámetro -s a ln.

  3. Considere la siguiente salida de ls -lah:

    $ ls -lah
    total 3,1M
    drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
    drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
    -rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
    -rw-r--r-- 4 carol carol  77K jun 17 17:25 document.txt
    -rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
    -rw-r--r-- 4 carol carol  77K jun 17 17:25 text.txt
    • ¿Cuántos enlaces apuntan al archivo document.txt?

      Cada archivo comienza con un recuento de enlaces de 1. Dado que el número de enlaces del archivo es 4, hay tres enlaces que apuntan a ese archivo.

    • ¿Son enlaces suaves o duros?

      Son enlaces duros, ya que los enlaces suaves no aumentan el número de enlaces de un archivo.

    • ¿Qué parámetro debería pasar a ls para ver qué inodo ocupa cada archivo?

      El parámetro es -i. El inodo se mostrará como la primera columna en la salida de ls, como se muestra a continuación:

      $ ls -lahi
      total 3,1M
      5388773 drwxr-xr-x 2 carol carol 4,0K jun 17 17:27 .
      5245554 drwxr-xr-x 5 carol carol 4,0K jun 17 17:29 ..
      5388840 -rw-rw-r-- 1 carol carol 2,8M jun 17 15:45 compressed.zip
      5388833 -rw-r--r-- 4 carol carol  77K jun 17 17:25 document.txt
      5388837 -rw-rw-r-- 1 carol carol 216K jun 17 17:25 image.png
      5388833 -rw-r--r-- 4 carol carol  77K jun 17 17:25 text.txt
  4. Imagine que tiene en su directorio ~/Documents un archivo llamado clients.txt que contiene algunos nombres de clientes y un directorio llamado somedir. Dentro de este hay un archivo diferente también llamado clients.txt con diferentes nombres. Para replicar esta estructura, use los siguientes comandos.

    $ cd ~/Documents
    $ echo "John, Michael, Bob" > clients.txt
    $ mkdir somedir
    $ echo "Bill, Luke, Karl" > somedir/clients.txt

    Luego cree un enlace dentro de somedir llamado partners.txt apuntando a este archivo, con los comandos:

    $ cd somedir/
    $ ln -s clients.txt partners.txt

    Entonces, la estructura del directorio es:

    Documents
    |-- clients.txt
    `-- somedir
        |-- clients.txt
        `-- partners.txt -> clients.txt

    Ahora, mueva partners.txt de somedir a ~/Documents y liste su contenido.

    $ cd ~/Documents/
    $ mv somedir/partners.txt .
    $ less partners.txt

    ¿Seguirá funcionando el enlace? Si es así, ¿qué archivo tendrá su contenido en la lista? ¿Por qué?

    Esto es “complicado”, pero el vínculo funcionará, y el archivo que aparece en la lista será el de ~/Documentos, que contiene los nombres John, Michael, Bob.

    Recuerde que, dado que no especificó la ruta completa al destino clients.txt al crear el enlace suave partners.txt, la ubicación de destino se interpretará como relativa a la ubicación del enlace, que en este caso es el directorio actual.

    Cuando el enlace se movió de ~/Documents/somedir a ~/Documents, debería dejar de funcionar, ya que el destino ya no estaba en el mismo directorio que el enlace. Sin embargo, da la casualidad de que hay un archivo llamado clients.txt en ~/Documents, por lo que el enlace apuntará a este archivo, en lugar del destino original dentro de ~/somedir.

    Para evitar esto, siempre especifique la ruta completa al objetivo al crear un enlace simbólico.

  5. Considere los siguientes archivos:

    -rw-r--r-- 1 carol carol 19 Jun 24 11:12 clients.txt
    lrwxrwxrwx 1 carol carol 11 Jun 24 11:13 partners.txt -> clients.txt

    ¿Cuáles son los permisos de acceso para partners.txt? ¿Por qué?

    Los permisos de acceso para partners.txt son rw-r—​r--, ya que los enlaces siempre heredan los mismos permisos de acceso que el destino.

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

104.7 Encontrar archivos de sistema y ubicar archivos en el lugar correspondiente (104.7 Lección 1)

Leer la próxima lección

Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

© 2023 Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© 1999–2023 The Linux Professional Institute Inc. Todos los derechos reservados.