Los comandos 'ln' y 'rm' han funcionado exactamente así en todos los sistemas de archivos UNIX desde principios de los años setenta. Mac OSX, BSD y Linux heredan este diseño original.
Por sí mismo, un archivo UNIX no tiene nombre, solo un número de inodo o inum. Pero solo puede acceder a través de una entrada en un archivo especial de "directorio" que asocia un nombre con el inum en cuestión; No puede especificar el inum directamente.
Un directorio es en sí mismo un archivo, por lo que también debe acceder a él a través de (otro) directorio, etc., a través de una serie de nombres de directorio delimitados por barras diagonales (/) conocidas como "nombre de ruta". Una ruta comienza en el "directorio de trabajo actual" del proceso a menos que el nombre comience con un "/", en cuyo caso comienza con el directorio raíz del sistema de archivos. Por ejemplo, si el nombre de la ruta no contiene caracteres "/", se espera que sea una entrada en el directorio actual.
Un archivo que no es de directorio puede tener cualquier número de nombres de ruta, conocidos como "enlaces duros", y seguirá existiendo hasta que se hayan eliminado todos sus nombres de ruta y el último proceso haya cerrado el archivo. Luego, el archivo se elimina y su espacio se marca como disponible para su reutilización. Es decir, puede crear () o abrir () un archivo vinculado individualmente y luego desvincularlo () para que ya no aparezca en el espacio de nombre del sistema de archivos, pero el archivo seguirá existiendo hasta que lo cierre. Esto es útil para archivos temporales que no serán leídos por ningún otro programa.
Aunque los directorios tienen números de inodo, la mayoría de los sistemas de archivos no permiten enlaces duros a ellos; solo pueden aparecer en otro directorio. (Una excepción inusual es el sistema de archivos Mac OSX HFS +; esto permite que funcionen las copias de seguridad de Time Machine). Aún puede crear "enlaces suaves" a directorios (o cualquier otro archivo). Un enlace suave se asemeja a una entrada de directorio, excepto que contiene otro nombre de ruta en lugar de un inum.
Cada archivo UNIX tiene un propietario, un grupo y permisos de acceso. Es necesario pero no suficiente que le permitan abrir el archivo; También debe tener al menos permiso de ejecución para cada directorio en el nombre de ruta que utiliza para referirse a él. Es por eso que no hay una forma estándar de abrir un archivo UNIX por su número de inodo; eso evitaría un mecanismo de seguridad importante y ampliamente utilizado.
Pero esto no explica por qué no puede haber una forma estándar para que un usuario root (privilegiado) abra un archivo por número de inodo, ya que la verificación de permisos se omite de todos modos. Esto sería muy útil para ciertas funciones de administración del sistema, como las copias de seguridad. Que yo sepa, tales mecanismos existen, pero todos son específicos del sistema de archivos; no hay una forma general de hacerlo para ningún sistema de archivos UNIX.