Enlaces duros
Los enlaces duros lo que hacen es asociar dos o más ficheros compartiendo el mismo inodo. Esto hace que cada enlace duro sea una copia exacta del resto de ficheros asociados, tanto de datos como de permisos, propietario, etc. Esto implica también que cuando se realicen cambios en uno de los enlaces o en el fichero este también se realizará en el resto de enlaces.
En sistemas GNU/Linux, los enlaces duros, tienen varias limitaciones. Una es que sólo se pueden hacer enlaces duros a archivos, y no a directorios.
La segunda limitación es que no pueden expandirse a través de distintos sistemas de archivos. Esto significa que no puede crear un enlace permanente desde /usr/bin/bash hacia /bin/bash si sus directorios / y /usr pertenecen a distintos sistemas de archivos.
Enlaces Simbólicos
Un enlace simbólico (enlace blando, o acceso directo) es un archivo especial que contiene un nombre de camino. Así, los enlaces blandos pueden apuntar a ficheros en sistemas de ficheros diferentes (posiblemente montados por NFS desde máquinas diferentes, unidades extraibles), y no tienen por qué apuntar a ficheros que existan realmente.
Un enlace simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Los enlaces simbólicos son ampliamente usados para las librerías compartidas.