stringtranslate.com

enlaces NTFS

El sistema de archivos NTFS define varias formas de redirigir archivos y carpetas, por ejemplo, hacer que un archivo apunte a otro archivo o su contenido sin hacer una copia del mismo. El objeto al que se apunta se llama objetivo. Dicho archivo se denomina enlace físico o simbólico dependiendo de la forma en que se almacena en el sistema de archivos.

Historia

Los enlaces simbólicos a directorios o volúmenes, llamados puntos de unión y puntos de montaje, se introdujeron con NTFS 3.0 que se incluía con Windows 2000. A partir de NTFS 3.1, se pueden crear enlaces simbólicos para cualquier tipo de objeto del sistema de archivos. NTFS 3.1 se introdujo junto con Windows XP , pero la funcionalidad no estuvo disponible (a través de ntfs.sys) para las aplicaciones en modo usuario. Sin embargo, se podrían instalar controladores de filtro de terceros, como senableel controlador de código abierto de Masatoshi Kimura, para que la función también esté disponible en modo de usuario. El ntfs.sys lanzado con Windows Vista puso la funcionalidad a disposición de las aplicaciones en modo usuario de forma predeterminada.

Desde NTFS 3.1, un enlace simbólico también puede apuntar a un archivo o a una ruta de red SMB remota . Si bien los puntos de unión NTFS solo admiten rutas absolutas en unidades locales, los enlaces simbólicos NTFS permiten vincular mediante rutas relativas. Además, la implementación del enlace simbólico NTFS proporciona soporte completo para enlaces entre sistemas de archivos. Sin embargo, la funcionalidad que permite enlaces simbólicos entre hosts requiere que el sistema remoto también los admita, lo que efectivamente limita su compatibilidad con Windows Vista y sistemas operativos Windows posteriores.

Tipos

Hay tres clases de enlaces:

Todos los enlaces NTFS están diseñados para ser transparentes para las aplicaciones. Esto significa que la aplicación que accede a un enlace será redirigida sin problemas por el controlador del sistema de archivos y no se necesita ningún manejo especial. Para los usuarios, aparecen como directorios o archivos normales. Esto también conduce a un efecto de alias: las escrituras en un enlace pasarán la escritura al archivo vinculado subyacente o a la entrada MFT .

Los enlaces simbólicos y los puntos de unión contienen la ruta al archivo vinculado y una etiqueta que identifica el controlador que implementa el comportamiento. Debido a que registran la ruta, pueden vincular archivos en otros volúmenes o incluso archivos remotos. Sin embargo, esto también significa que si el archivo al que se hace referencia se elimina o se le cambia el nombre, el enlace deja de ser válido, y si el archivo o directorio al que se hace referencia se reemplaza por otro, el enlace ahora hará referencia al nuevo archivo o directorio.

Los enlaces físicos crean una nueva entrada de directorio que hace referencia al mismo registro MFT y aumentan el recuento de referencias del registro MFT. Esto significa que están restringidos a archivos en el mismo sistema de archivos, pero el archivo original se puede eliminar sin que el vínculo físico sea inválido, ya que la eliminación reduce el recuento de referencias en uno y el archivo no se elimina en la MFT hasta que el recuento llega a cero.

Archivos de acceso directo

No es lo mismo un enlace simbólico NTFS que un archivo de acceso directo de Windows, que es un archivo normal. Este último puede crearse en cualquier sistema de archivos (como el anterior FAT32 ), puede contener metadatos (como un icono que se muestra cuando se ve el acceso directo en Eliminar enlaces) y no es transparente para las aplicaciones.

Las implementaciones de entornos tipo Unix para Windows, como Cygwin y Mingw, pueden usar archivos de acceso directo para emular enlaces simbólicos donde el sistema operativo host no los admite, si está configurado para hacerlo.

Ejemplos de uso

Usos incorporados

Redirección del programa

Al establecer un punto de unión que apunte a un directorio que contiene una versión particular de un software, es posible agregar otra versión del software y redirigir el punto de unión para que apunte a la versión deseada.

Ahorrar espacio de almacenamiento

El contenido de una unión casi no utiliza espacio de almacenamiento (simplemente apunta al directorio original). Si un administrador necesita tener varios puntos de entrada a un directorio grande, los puntos de unión pueden ser una solución eficaz. Los puntos de unión no deben confundirse con una copia de algo, ya que los cruces simplemente apuntan al original. Si es necesario modificar los directorios por separado, no se puede utilizar una unión ya que no proporciona una copia distinta del directorio o de los archivos que contiene.

Asimismo, los enlaces simbólicos y físicos son útiles para fusionar el contenido de archivos individuales.

Evitar caminos predefinidos

Dado que reinstalar Windows (o instalar una nueva versión) a menudo requiere eliminar el contenido de la C:unidad, es ventajoso crear varias particiones , de modo que solo sea necesario eliminar una durante la instalación. Sin embargo, algunos programas no permiten al usuario elegir el directorio de instalación ni instalar algunos de sus archivos en la C:unidad, incluso cuando están instalados en una unidad diferente. Al crear un punto de unión, se puede engañar al programa para que se instale en un directorio diferente.

Herramientas de línea de comandos

Windows viene con varias herramientas capaces de crear y manipular enlaces NTFS.

Además, las siguientes utilidades pueden crear enlaces NTFS, aunque no vienen con Windows.

API

Para crear vínculos físicos, las aplicaciones pueden usar la función .mw-parser-output .monospaced{font-family:monospace,monospace}CreateHardLink() de la API de Windows . Todas las versiones de la familia Windows NT se pueden utilizar GetFileInformationByHandle()para determinar la cantidad de enlaces físicos asociados con un archivo. Puede haber hasta 1024 enlaces asociados con una entrada MFT. De manera similar, la función CreateSymbolicLink() puede crear enlaces simbólicos. Las uniones son más complejas de crear. Requieren completar manualmente la información del punto de análisis . [15] Un ejemplo de código se encuentra en libuv . [16] Las uniones se definen solo para directorios: aunque la API no falla cuando se crea una unión que apunta a un archivo, la unión no se interpretará correctamente cuando se use más adelante.

Los cruces y enlaces simbólicos, incluso aquellos que apuntan a directorios, se pueden eliminar con pNtSetInformationFile. La implementación de Libuv unlinken Windows demuestra este uso. [17] Alternativamente, el método .NET System.IO.Directory.Delete()también funciona en ellos. [18]

Peligros

Consistencia

Los enlaces simbólicos y las uniones NTFS pueden apuntar a objetivos inexistentes porque el sistema operativo no garantiza continuamente que el objetivo exista. [19]

Peligros adicionales acechan en el uso de uniones de directorio NTFS que:

Estructura recursiva

El problema en el primer caso es que crea rutas recursivas, lo que implica además una recursividad infinita en la estructura de directorios. Al introducir la reentrada, la presencia de una o más uniones de directorios cambia la estructura del sistema de archivos de un simple árbol adecuado a un gráfico dirigido , pero el enlace recursivo complica aún más el carácter teórico del gráfico de acíclico a cíclico. Dado que ahora se pueden encontrar los mismos archivos y directorios a través de múltiples rutas, las aplicaciones que atraviesan estructuras reentrantes o recursivas ingenuamente pueden dar resultados incorrectos o incoherentes, o puede que nunca finalicen. Peor aún, si eliminan recursivamente , dichos programas pueden intentar eliminar un directorio principal del directorio que está atravesando actualmente.

Tenga en cuenta que ambas condiciones enumeradas anteriormente existen en el sistema de enlaces físicos establecidos en la C:unidad en la configuración predeterminada de Windows. Por ejemplo, cada instalación de Windows 10 define la ruta recursiva:

C:\ProgramData\C:\ProgramData\Datos de aplicación\C:\ProgramData\Datos de aplicación\Datos de aplicación\C:\ProgramData\Application Data\Application Data\Application Data\C:\ProgramData\Application Data\Application Data\Application Data\Application Data\C:\ProgramData\Application Data\Application Data\Application Data\Application Data\Application Data\ ...

Cada nombre de ruta adicional en este conjunto aparentemente infinito es una ruta de Windows válida y real que hace referencia a la misma ubicación. En la práctica, los nombres de ruta están limitados por el límite de ruta de DOS de 260 caracteres (o el límite más reciente de 32,767 caracteres), pero el truncamiento puede resultar en rutas y nombres de archivo incompletos o no válidos. Siempre que se archiva una copia de una instalación de Windows, con las uniones de directorios intactas, en otro volumen en la misma (o peor) computadora , la copia archivada aún puede incorporar carpetas activas de la instalación en ejecución. Por ejemplo, dependiendo del método utilizado para la copia, una copia de seguridad de una unidad de Windows X:\archive\...incluirá un enlace físico llamado X:\archive\Users\USERNAME\My Documentsque todavía apunta a la carpeta C:\Users\USERNAME\Documents\en la instalación activa actual.

Recorrido de volúmenes cruzados

La segunda forma de desviación diferida del objetivo, aunque conceptualmente más simple, puede tener consecuencias más graves. Cuando un volumen o estructura de directorio autoconsistente que contiene enlaces físicos que utilizan nombres de ruta de letra de unidad de volumen se copia o mueve a otro volumen (o cuando la letra de unidad de un volumen se reasigna por algún otro medio), es posible que dichos enlaces ya no apunten al destino correspondiente en la estructura copiada . Nuevamente, los resultados dependen del software que se utilizó para la copia; Si bien algunos programas pueden interceder modificando cualquier enlace físico totalmente subsumido en la copia para preservar la coherencia estructural, otros pueden ignorar, copiar exactamente o incluso atravesar enlaces físicos, copiando su contenido.

Los problemas graves ocurren si los enlaces físicos se copian exactamente de manera que se conviertan, en la nueva copia, en enlaces físicos entre volúmenes que aún apuntan a archivos y carpetas originales en el volumen de origen. Los enlaces físicos no intencionales entre volúmenes, como los enlaces físicos en una carpeta de "archivo" que aún apuntan a ubicaciones en el volumen original (según la letra de la unidad), son catástrofes a punto de ocurrir. Por ejemplo, eliminar lo que más tarde se presume que es un directorio de archivos no utilizado en un volumen de copia de seguridad en desuso puede dar lugar a la eliminación de datos de usuario activos o archivos del sistema actuales.

Una medida preventiva para el peligro de las letras de unidad es utilizar la sintaxis de ruta GUID del volumen, [20] en lugar de rutas que contengan letras de unidad de volumen, al especificar la ruta de destino para una unión de directorio. Por ejemplo, considere crear un alias para X:\Some\Other\Pathen X:\Some\Path\Foo:

X:\Some\Path> linkd Foo X:\Some\Other\Path

Como se describió anteriormente, si la estructura de carpetas que contiene el enlace resultante se mueve a un disco con una letra de unidad distinta de X:, o si la letra se cambia en la X:propia unidad, el contenido de los datos en la ubicación de destino es vulnerable a corrupción accidental o abuso malicioso. . Una versión más resistente de este vínculo puede mitigar parcialmente este riesgo al hacer referencia al volumen de destino mediante su valor de identificador GUID (que se puede descubrir ejecutando el fsutil volume listcomando).

X:\Some\Path> linkd Foo \\?\Volume{12345678-abcd-1234--abcdefghijkl}\Some\Other\Path

Al hacerlo, se garantiza que la unión seguirá siendo válida si X:se cambia la letra de unidad por cualquier medio.

Como medio proactivo para evitar desastres en la unión de directorios, el comando dir /AL /S /B "X:\Some\Path"se puede utilizar para obtener, para un análisis cuidadoso antes de cometer cualquier alteración irreversible del sistema de archivos, una lista de todos los enlaces físicos "debajo" de una determinada ubicación del sistema de archivos. Si bien, por definición, cada vínculo en la lista resultante tiene un nombre de ruta que comienza con X:\Some\Path\, si alguno de esos vínculos físicos contiene un destino que no está incluido en X:\Some\Path, entonces se ha escapado el alcance especificado y el directorio inicial que especificó no está completo. subsumir. Se puede indicar precaución adicional en este caso, ya que el directorio especificado incluye archivos y directorios que residen en otros volúmenes físicos, o cuyo propio recorrido principal hasta la raíz no incluye el directorio especificado.

Limitaciones

Requisitos de privilegios

La configuración de seguridad predeterminada en Windows no permite que los administradores no elevados y todos los no administradores creen enlaces simbólicos pero no uniones. Este comportamiento se puede cambiar ejecutando "secpol.msc", la consola de administración de políticas de seguridad local (en: Configuración de seguridad\Políticas locales\Asignación de derechos de usuario\Crear enlaces simbólicos). Se puede solucionar iniciando cmd.exe con la opción Ejecutar como administrador o el runascomando. A partir de la compilación 14972 de Windows 10 Insiders, se eliminó el requisito de privilegios de administrador elevados en el "Modo de desarrollador" de Windows, lo que permite crear enlaces simbólicos sin necesidad de elevar la consola como administrador. A nivel de API, SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATEse proporciona una bandera para este fin. [21]

Tiempo de arranque

El proceso de inicio de Windows no admite puntos de unión, por lo que es imposible redirigir determinadas carpetas del sistema:

Otros archivos de arranque del sistema críticos, como el archivo de imagen de suspensión hiberfil.sys, tampoco admiten la redirección.

Ubicaciones definidas por el sistema

Es técnicamente posible redirigir las siguientes ubicaciones de carpetas del sistema que no son críticas:

Hacer esto puede provocar problemas de compatibilidad o confiabilidad de Windows a largo plazo. No se recomienda crear uniones \Usersy apuntar a otra unidad, ya que interrumpe las actualizaciones y las aplicaciones de la Tienda Windows. [22]\ProgramData

Crear uniones para \Users, \ProgramData \Program Fileso \Program Files (x86)señalar otras ubicaciones interrumpe la instalación o actualización de Windows. [23]

La creación de uniones para otra unidad \Program Fileso que apunte a ella interrumpe el servicio basado en componentes\Program Files (x86) de Windows , que vincula los archivos desde su repositorio \Windows\SxS a su directorio de instalación. [ cita necesaria ]

instalador de windows

Windows Installer no es totalmente compatible con enlaces simbólicos. La redirección \Windows\Installerhará que la mayoría de los instaladores de Windows basados ​​en .msi fallen con el error 2755 y/o el error 1632.

Soporte de enlaces simbólicos en Windows XP

Dado que Windows XP utiliza la misma versión de formato NTFS que las versiones posteriores, es factible habilitar la compatibilidad con enlaces simbólicos. Para utilizar enlaces simbólicos NTFS en Windows 2000 y XP, existe un controlador de terceros que lo hace instalándose como un filtro del sistema de archivos. [24] [25]

Ver también

Referencias

  1. ^ "Enlaces físicos y uniones". Desarrollador de Windows . Microsoft . 31 de mayo de 2018.
  2. ^ ab "Cruce v1.07". Sistemas internos . Microsoft . 4 de julio de 2016.
  3. ^ "Nuevo elemento (PowerShell 3.0)". Documentos de Microsoft . Microsoft . 22 de junio de 2020. Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Archivo[,] Directorio[,] Unión[,] HardLink
  4. ^ "Nuevo elemento (PowerShell 5.0)". Documentos de Microsoft . Microsoft . 22 de junio de 2020.
  5. ^ "Reparar Eliminar elemento <enlace simbólico al directorio>". Repositorio de PowerShell . Microsoft . 4 de marzo de 2016 - vía GitHub .
  6. ^ "mklink.c". repositorio de reacciones . ReactOS Deutschland eV 3 de octubre de 2017 - vía GitHub.com .
  7. ^ "Dirección". Documentos de Microsoft . Microsoft . 18 de abril de 2012.
  8. ^ "Enlace duro de Fsutil". Documentos de Microsoft . Microsoft . 18 de abril de 2012.
  9. ^ "Punto de análisis de Fsutil". Documentos de Microsoft . Microsoft . 18 de abril de 2012.
  10. ^ "Descargar las herramientas del kit de recursos de Windows Server 2003". Centro de descargas . 2015-03-10. Archivado desde el original el 10 de marzo de 2015.
  11. ^ "Cómo crear y manipular puntos de unión NTFS". 2015-03-09. Archivado desde el original el 9 de marzo de 2015.
  12. ^ "Pscx". Galería de PowerShell . Microsoft . 17 de enero de 2018.
  13. ^ Colina, Keith; Grehan, Oisin (17 de enero de 2018). "README.md". repositorio pscx - a través de GitHub .
  14. ^ "Enlaces NTFS, uniones de directorios y accesos directos de Windows". www.flexhex.com . Archivado desde el original el 25 de enero de 2021 . Consultado el 4 de octubre de 2019 .
  15. ^ "libuv/src/win/fs.c". GitHub . Consultado el 12 de diciembre de 2019 .
  16. ^ "libuv/src/win/fs.c fs__unlink". GitHub . Consultado el 12 de diciembre de 2019 .
  17. ^ "PowerShell eliminar unión". Desbordamiento de pila . Consultado el 12 de diciembre de 2019 .
  18. ^ "Consideraciones de programación (Windows)". msdn.microsoft.com .
  19. ^ "Formatos de ruta de archivo en sistemas Windows". docs.microsoft.com .
  20. ^ "¡Enlaces simbólicos en Windows 10! - Blog para desarrolladores de WindowsBlog para desarrolladores de Windows". blogs.windows.com . 2 de diciembre de 2016.
  21. ^ "Reubicación del directorio Usuarios y el directorio ProgramData a una unidad distinta de la que contiene el directorio de Windows" . Consultado el 12 de marzo de 2015 .
  22. ^ "Se produce un error al intentar instalar Windows 8.1 debido a que se redirige la carpeta Usuarios o Archivos de programa a otra partición" . Consultado el 12 de marzo de 2015 .
  23. ^ Hermann Schinagl (23 de agosto de 2013). "ln - enlaces físicos de línea de comandos - enlaces simbólicos para Windows XP".
  24. ^ "リ ン ク / ジ ャ ン ク シ ョ ン 作 成 ツ ー ル". emk.nombre .

Enlaces externos