Posted by q3it on martes, agosto 29, 2023 in Linux
En linux hay dos tipos enlaces: simbólicos y duros. Los enlaces simbólicos funcionan igual que los accesos directos en windows, nosotros tenemos un fichero y al entrar ejecutará un programa o accederemos a un directorio. Estos enlaces simbólicos sirven tanto para ficheros como directorios, incluso estando en distintas particiones o en distintos discos.
Veamos un ejemplo. En la siguiente imagen tenemos un directorio y un fichero en que lo más llamativo es el color turquesa que tiene en su nombre.
Analizando el directorio llamado local vemos que en su interior hay un fichero que hace referencia a un directorio llamado etc/network.
Y que en la lista de permisos aparece una nueva letra l (que significa link). Además, estos enlaces siempre van a tener permiso 777, y eso no significa que nosotros vayamos a poder modificar a dónde está apuntando. Si yo intento escribir algo en el segundo fichero llamado resolv.conf veremos que no puedo porque no tengo permiso al directorio que hace referencia. Otra cosa que hay que saber sobre los enlaces, es qué cuando se dirigen a ficheros van a ocupar 16 bits y los enlaces a directorios van a ocupar de 12 bits.
Si nosotros entramos en un enlace que hace referencia a un directorio veremos que con pwd se nos va a mostrar el directorio del enlace, pero si queremos ver su ubicación real podemos utilizar pwd con la opción -P mayúscula nos va a mostrar directorio real.
Y si intento escribir veremos que pasa lo mismo que en el fichero, aunque tenga 777 como permiso al directorio al que estamos apuntando.
El otro tipo de enlaces que hay en Linux se llaman enlaces duros. Nosotros cuando creamos un fichero se nos va a alojar en el disco y este fichero hace referencia a donde está alojado, y esto se llama inodo. Imaginemos que creamos un fichero llamado A.txt pues se le asocia este número de inodo. Si nosotros queremos crear un enlace duro simplemente vamos a crear un fichero llamado B.txt y en vez de alojarlo en otra parte del disco, lo que hará es referencia a ese inodo.
Estos enlaces duros son sólo aplicables a ficheros no a directorios y tienen que estar en la misma partición, esto tiene lógica porque si están en distintos discos este estará apuntando su contenido a una ubicación diferente.
Vamos a ver cómo funciona, creamos un fichero llamado plan.txt y le vamos a crear un enlace duro llamado resultado.txt y nos fijamos ahora en un listado de enlaces, aparecen en dos.
Si les cambiamos los permisos a uno de los ficheros afectaría a los dos.
Si queremos ver a que inodo apunta pues podemos utilizar la opción -li y se nos mostrará en la primera columna a que inodo hace referencia.
En cambio si nos fijamos en los enlaces simbólicos, si yo hago ls -li a /etc/resolv.conf el resultado es el siguiente.
Cuando creamos un enlace se le asocia un nuevo inodo y hace referencia a una ruta de ficheros no al inodo a donde está haciendo referencia.
Qué pasa cuando nosotros cambiamos el nombre de un directorio, en el enlace simbólico este fichero quedará huérfano. Pues cuando hagamos un ls nos aparecerá en rojo, por qué yo estoy haciendo referencia a un enlace y no a un inodo. Entonces ese documento ya no existe porque lo hemos cambiado. Pero si nosotros volvemos a cambiar este nombre veremos que el enlace sigue funcionando.
Pero en los enlaces duros si borramos el contenido original no se borrarán los ficheros que estén enlazados a el, porque son copias idénticas y se conserva su contenido.