¿Cómo se representa un enlace simbólico en un sistema de archivos frente a un enlace físico?

¿Cómo se representa un enlace simbólico en un sistema de archivos frente a un enlace físico?

Quiero asegurarme de que mi comprensión de esto sea correcta:

  • Al hacer un enlace duro se crea otro dentry que apunta al mismo inodo.
  • Hacer un enlace simbólico es crear un objeto/inodo de archivo completamente nuevo que apunta a la dentría del otro inodo. El sistema de archivos trata este archivo de una manera especial (redireccionando ciertas operaciones al dentry del otro inodo)

Respuesta1

Correcto para un enlace físico pero no para un enlace simbólico. El contenido de un enlace simbólico es sólo una cadena. Esto permite que un enlace simbólico apunte a un sistema de archivos que no está actualmente montado, por ejemplo. Un enlace simbólico es sólo texto; cuando el núcleo encuentra uno, esencialmente inserta el enlace simbólico en la ruta que estaba buscando, dividiéndolo en partes delimitadas por barras y buscando hacia arriba .y ..según corresponda. Los enlaces simbólicos no otorgan permisos adicionales: los recorridos causados ​​por los elementos de ruta que provienen del enlace simbólico obedecen a las mismas restricciones de permiso que si la aplicación hubiera especificado esos elementos de ruta. Un enlace simbólico tiene su propio inodo (o al menos aparece de esta manera; en el fondo, algunos sistemas de archivos no permiten que los enlaces simbólicos tengan múltiples enlaces físicos y almacenan los enlaces simbólicos directamente en el directorio que los contiene, pero aún así informa un inodo). número a la lstatfunción).

A nivel de sistema, el tratamiento de los enlaces simbólicos depende del tipo de operación. Las operaciones que actúan sobre las entradas del directorio (por ejemplo, cambiar el nombre, eliminar) tratan los enlaces simbólicos como cualquier otro archivo. Las operaciones que actúan sobre el contenido del archivo (por ejemplo open, chdir) siguen el enlace simbólico y actúan sobre el objetivo (e informan un error si la cadena de enlace simbólico termina con un enlace roto). Para las operaciones que actúan sobre los metadatos del archivo (es decir, sobre el inodo), depende: para algunas operaciones, hay un par de funciones (por ejemplo, stat/ lstat), para otras se sigue el enlace simbólico (por ejemplo chmod, utimesno tiene variante de enlace simbólico en Linux).

información relacionada