next up previous contents index
Next: Ficheros de dispositivo Up: Tipos de ficheros Previous: Tipos de ficheros   Índice General   Índice de Materias

Enlaces simbólicos

Los enlaces simbólicos (también llamados ``symlinks'' o «vínculos simbólicos») son el otro tipo de enlace, además de los enlaces no simbólicos (hard links). Un enlace simbólico es un fichero especial que apunta a un vínculo no simbólico (hard link), pero en cualquier sistema de ficheros que esté montado. Cuando intente leer el contenido de un enlace simbólico, le dará el contenido del fichero al que apunta, en vez del contenido del enlace simbólico propiamente dicho. Ya que los directorios, dispositivos y otros enlaces simbólicos son tipos de ficheros, puede hacer que un enlace simbólico apunte a cualquiera de estos objetos.

De esta forma, un enlace no simbólico (hard link) está compuesto por un nombre de fichero y un número de inodo. El fichero es en realidad un inodo: una ubicación en el disco, un tipo de fichero, una asignación de permisos de acceso, etcétera. Un enlace simbólico es un inodo que contiene el nombre de un enlace no simbólico (hard link). El enlace simbólico empareja un nombre de fichero con un segundo nombre de fichero, mientras que el enlace no simbólico (hard link) empareja un fichero con un número de inodo.

Todos los enlaces no simbólicos al mismo fichero tienen la misma categoría: es decir, que cada uno es tan válido como el resto de ellos. Si realiza una operación sobre uno de ellos, es lo mismo que si la realizara sobre cualquiera de los otros. El motivo es que los enlaces no simbólicos (hard links) remiten todos al mismo inodo. Las operaciones llevadas a cabo sobre enlaces simbólicos, por otra parte, afectan a veces al inodo del propio enlace simbólico (que es el que contiene el nombre de un vínculo no simbólico) y otras veces afectan al vínculo no simbólico al que apuntan.

Existen algunas diferencias importantes entre los enlaces simbólicos y los enlaces no simbólicos.

Los enlaces simbólicos pueden establecerse entre sistemas de ficheros. El motivo es que contienen nombres completos de fichero, comenzando desde el directorio raíz, y que todos los nombres de fichero completo son únicos. Puesto que los enlaces no simbólicos apuntan a números de inodo, y los números de inodo sólo son únicos dentro de un único sistema de ficheros, serían ambiguos en caso de que no supiéramos a qué sistema de ficheros remiten.

Puede llevar a cabo enlaces simbólicos a directorios, pero no puede llevar a cabo enlaces no simbólicos a directorios. Cada directorio tiene enlaces no simbólicos, su listado en su directorio padre, su entrada ., y la entrada .. en cada uno de sus subdirectorios; pero, para imponer orden en el sistema de ficheros, no se permite ningún otro vínculo no simbólico a directorios. En consecuencia, el número de ficheros en un directorio es igual al número de enlaces no simbólicos de ese directorio, menos dos (se le resta el nombre del directorio y el enlace .) Puede llevar a cabo un enlace no simbólico sólo a un fichero que ya existe, puesto que debe existir un número de inodo al que hacer referencia. Sin embargo, puede hacer un enlace simbólico a cualquier fichero, independientemente de que exista o no tal nombre de fichero.

Eliminar un enlace simbólico sólo borra el enlace. No tiene efecto alguno sobre el fichero al que está enlazado. Eliminar el único enlace no simbólico a un fichero elimina el fichero.

Pruebe lo siguiente:

     cd; ln -s /tmp/yo MiTmp
Cambie con cd a su directorio de trabajo. Hace un ln con la opción -s y crea un enlace simbólico; en ese caso, el enlace se llama MiTmp y apunta al nombre de fichero /tmp/yo.

     ls -l MiTmp
La salida tendrá este aspecto:

      lrwxrwxrwx 1 havoc havoc 7 dic 6 12:50 MiTmp -> /tmp/yo
La fecha y el nombre de usuario y grupo serán diferentes en su caso, naturalmente. Nótese que el tipo de fichero es l, lo que indica que se trata de un enlace simbólico. Nótense también los permisos: los enlaces simbólicos tienen siempre estos permisos. Si intenta efectuar la orden chmod sobre un enlace simbólico, en realidad cambiará los permisos del fichero al que apunta el enlace simbólico.

     chmod 700 MiTmp
Obtendrá el error No existe el fichero o el directorio, ya que el fichero /tmp/yo no existe. Nótese que ha podido crear un enlace simbólico que apunte a él igualmente.

     mkdir /tmp/yo
Crea el directorio /tmp/yo.

     chmod 700 MiTmp
Ahora funcionará.

     touch MiTmp/mifichero
Crea un fichero en MiTmp.

     ls /tmp/yo
El fichero se ha creado en realidad en /tmp/yo.

     rm MiTmp
Elimina el enlace simbólico. Nótese que esta operación elimina el enlace simbólico propiamente dicho, y no aquello a lo que apunta. De esta forma, utilizamos rm y no rmdir.

     rm /tmp/yo/mifichero; rmdir /tmp/yo
Le permite limpiar después de su obra.


next up previous contents index
Next: Ficheros de dispositivo Up: Tipos de ficheros Previous: Tipos de ficheros   Índice General   Índice de Materias
Enrique Zanardi 2000-11-26