Pregunta

Nuestra aplicación utiliza un componente que requiere un archivo de licencia en el directorio con nuestro archivo ejecutable, que resulta ser una aplicación .NET WinForms, aunque creo que no es importante para esta pregunta. Cuando se instala en algunas máquinas XP Pro (solo tres de varios cientos hasta ahora), el componente arroja una excepción de licencia. Así que volví a generar el archivo de licencia y lo envié al proveedor del componente (EMC Captiva), donde el proveedor afirma que el error se debe al hecho de que los "Usuarios" El grupo no tiene permisos de lectura en el archivo. El usuario que encuentra el error es un administrador local, pero eso no tiene nada que ver, ya que todavía tengo curiosidad acerca de la pregunta más general.

Entonces, mi pregunta es si las ACL se almacenan en un archivo de modo que sigan el archivo durante toda su vida, especialmente cuando el archivo de licencia se generó en mi máquina de desarrollo (máquina 1), almacenado en Subversion (máquina 2), desprotegido del control de origen por TeamCity (máquina 3), empaquetado en un instalador por InstallShield (máquina 4) y finalmente implementado en la máquina del cliente (máquina 5) donde fue instalado por un administrador? ¿Qué pasa después de generar el archivo en mi máquina de desarrollo (máquina 1), cargarlo al proveedor del componente a través de su sitio de soporte (máquina 2) y la persona de soporte lo descarga a su máquina para su inspección (máquina 3)?

No lo sé con certeza (por eso lo pregunto aquí), pero asumí que cada máquina Windows almacena ACL en algún directorio / lista / tabla central administrado por NTFS en lugar de almacenarse dentro del archivo. ¿Qué sucede con la ACL del archivo original cuando se copia de una máquina a otra, se almacena en Subversion, se empaqueta en un MSI, etc.? ¿Alguien puede señalarme algunas buenas referencias donde pueda leer sobre esto?

¿Fue útil?

Solución

Las ACL se almacenan en la parte de una partición NTFS que realiza toda la fontanería en segundo plano: la MFT (tabla maestra de archivos).

La ACL no sigue un archivo, ya que no es parte del archivo (al igual que el nombre de archivo, es metadato). El archivo puede cruzar los límites del tipo de partición (NTFS- > FAT), la ACL no puede.

Ahora, si mueve un archivo dentro de una partición NTFS, puede tener la impresión de que las ACL realmente siguen el archivo. Esto se debe a que durante un movimiento, solo se cambia el nombre de archivo en la MFT. Todo lo demás permanece igual.

Si copia un archivo o lo mueve a otra partición o computadora (que en realidad es una operación de copiar + eliminar), el archivo copiado heredará por defecto los permisos de su nuevo contenedor (solo los heredables, para ser precisos) .

Sin embargo, hay herramientas que son capaces de retener la ACL de un archivo después de una operación de copia (simplemente recreándola en el archivo de destino después de la operación de copia) incluso sobre la partición o los límites de la computadora. xcopy puede hacer eso, entre otros.

Pero dado que una ACL puede contener SID que son '' propiedad del dominio '', una entrada de ACL podría no ser realmente significativa para la computadora de destino que no es parte del mismo dominio (por ejemplo, cuando se lleva a casa una unidad USB con formato NTFS ) En ese caso, la entrada de ACL no tendrá efecto.

Otros SID son "bien conocidos", como el "SISTEMA" SID. En realidad, estos serán reconocidos a través de las fronteras del dominio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top