Los enlaces simbólicos en Linux

Los Enlaces simbólicos en Linux también se conocen como Soft Links o Enlaces blandos. Se trata de meros “accesos directos” a ficheros. Vamos a ver cómo crear enlaces simbólicos, cómo verlos, cómo eliminarlos, y algunas características interesantes.

 
enlaces simbolicos linux
 
En este artículo:

 

 

1. ¿ QUÉ SON LOS ENLACES SIMBÓLICOS (ENLACES BLANDOS) EN LINUX?

 
Los enlaces simbólicos son archivos que apuntan a  otro archivo (o a un directorio). Son como los “accesos directos” en Windows.

O sea, que todos los accesos directos que tienes en tu escritorio en Windows, son “enlaces bandos“.

 
En Linux se pueden ver muy claramente (en la terminal) que son enlaces blandos. Se muestran con una flechita que indica a qué archivo apuntan. Lo vemos a continuación.
 

 

2. Ejemplo: Crear un enlace Simbólico en Linux

 
Primero creamos un directorio llamado dir1, donde crearemos un enlace de uno de los archivos que se encuentran en nuestro directorio actual, que se llama nombres.txt.
 
así:

mkdir dir1
ln -s nombres.txt dir1/enlace1

 
Y listamos el contenido del directorio dir1 para ver cómo aparece el enlace simbólico (soft link) creado:

ls -lha dir1/

Hemos listado con la opción -lha, viendo la info adicional (l), los archivos ocultos (a) y el tamaño en Kbytes (h):

 

crear enlace simbolico linux
 
Podemos ver que el enlace tiene una l (de link) delante de la primera columna, la de los permisos. Con esto ya sabemos que es un enlace.

Pero también observamos en la última columna que aparece el nombre del enlace1, con una flechita que señala al fichero nombres.txt. La cosa está clara entonces.
 

 

3. Particularidades de los enlaces blandos en Linux

 

3.1 Permisos en los enlaces blandos

 
Los permisos que aparecen en un enlace blando solo determinan quien puede intentar seguir el enlace.
Después, al intentar seguir el enlace, se aplicarán los permisos efectivos del archivo al cual enlaza
. O sea, que aunque el enlace muestre ciertos permisos para intentar seguir el enlace, los permisos reales y efectivos serán los del archivo al que enlaza.
 

 
Por ejemplo con el usuario “test” creamos un fichero llamado “original“, y hacemos un enlace blando llamado “enlaceblando“.

touch original
ln -s original enlaceblando

 
Y veremos los permisos de dicho fichero original y del enlace blando creado

cambiar permisos enlaces simbolicos
 
Ahora cambiamos de usuario, usamos un usuario root, y cambiamos los permisos:

por ejemplo:

chmod 644 /home/test/enlaceblando

 
Y comprobamos que se han cambiado los permisos del fichero original!

 

cambiar permisos enlaces simbolicos chmod
 
Esto es porque chmod nunca cambia los permisos de enlaces simbolicos:

nunca cambia permisos enlaces simbolicos
 
Intentamos cambiar el propietario de un enlace simbólico:

chown root:root enlaceblando

 

y comprobamos que realmente se han cambiado los permisos del fichero original !
 
chown enlace simbólico
 

 

3.2 ¿Qué ocurre si movemos el archivo original al que hace referencia el enlace simbólico?

 

  • Si el archivo original es movido, el enlace blando se rompe, ya que apuntará a otra ruta que no es la real del archivo movido ..

enlace simbolico se pierde si se mueve fichero original

 

  • Los enlaces blandos son meros punteros o “accesos directos“. Si se elimina el fichero original el enlace no funcionará. Vemos un ejemplo a continuación.

 
Vemos que hemos creado un enlace simbólico, y aparece listado en el directorio.

Pero al eliminar el fichero original,

rm original

y al hacer un cat sobre el “enlaceblando“, nos dice que: No existe el fichero o el directorio.

enlace simbolico no existe fichero o directorio
 

 

3.3 Enlaces Simbólicos entre diferentes sistemas de ficheros

 

  • Los enlaces simbólicos (soft links) se pueden hacer entre diferentes sistemas de ficheros. Por ejemplo entre 2 particiones, una de ellas en ext4 y otra en ext2, xfs .. (al contrario que los enlaces duros).

 
Creamos un enlace simbólico desde el disco principal (que usa sistema de ficheros ext4) hacia una partición con otro sistema de ficheros (xfs ern este caso).

A continuación, por medio del comando blkid podremos comprobarlo:

podemos ver que el disco /dev/sda1 usa formato ext4

y el enlace simbólico lo hemos mandado al disco /dev/sdb que usa formato xfs.

enlace simbolico entre diferentes sistemas de ficheros
 

 

3.4 Cómo borrar un enlace simbólico

 
Un enlace simbólico a un fichero o directorio se puede borrar con el comando

unlink ruta_enlace

para eliminar el enlace.

Aunque también se puede borrar como un archivo con el comando rm.

 

En la siguiente captura podemos ver cómo hemos creado  un enlace simbólico de un directorio en otro, y después lo eliminamos, usando la ruta de dicho enlace:
Creamos enlace simbólico de dir1 en dir2:

ln -s dir1/ dir2/

 

Mostramos el contenido de dir2 y veremos el enlace creado:

ls -la dir2/

 

Eliminamos el enlace simbólico, usando su ruta:  dir2/dir1

unlink dir2/dir1

 

enlace simbolico directorios linux

 

 

3.5 Enlaces Simbólicos e Inodos

 

  • Un enlace simbólico usa un inodo diferente que el archivo original. Los inodos son una especie de archivo-tabla que contiene metadatos del archivo/directorio. Contiene datos como: el número de inodo donde se encuentra, la longitud del fichero, el usuario y grupo …

 
Si hacemos stat sobre un archivo, podremos ver entre otros datos el número de inodo que ocupa. También podremos comprobar el inodo de un enlace simbólico y comprobar que al tratarse de enlaces blandos, el archivo original y el enlace blando ocupan un inodo diferente cada uno.

inodos enlace simbolico
 

 

3.6 Enlaces Simbólicos de ficheros y también enlaces simbólicos de directorios

 

  • Los enlaces simbólicos blandos se pueden hacer con ficheros y directorios, al contrario que los enlaces duros, que solo se pueden hacer con ficheros.

 

enlace simbolico directorios linux
 

Hacemos un enlace simbólico de un directorio

ln -s /root/dir3/ /mnt/disco1/enlace-directorio

 
Mostramos adonde apunta en enlace con

ls -la enlace-directorio

 
Y podemos ver que tanto en el directorio original como en el enlace creado, el contenido es el mismo (ya que realmente estamos viendo el directorio origen).
 
Hemos visto un buen resumen acerca de qué son los enlaces simbólicos o enlaces blandos (soft links) en Linux y de sus características principales y curiosidades, junto con algunos buenos ejemplos bien explicados. Ahora ya sabes lo que son.