
¿Es posible configurar los permisos de un archivo para que un usuario no pueda copiarlo (sin permisos de lectura), pero una aplicación que se ejecute bajo ese usuario pueda leer ese archivo?
Creo que no, pero no estoy 100% seguro: para que la aplicación pueda leerla, el usuario que la ejecuta tendría que tener permisos de lectura.
¿Quizás algo así pueda configurarse con las políticas de Windows?
Respuesta1
Como la aplicación se ejecutaría con permisos de usuario, no podría leer el archivo si el usuario no pudiera leerlo.
Podría intentar configurar un proceso que se haga pasar por otro usuario en nombre del usuario que ejecuta la aplicación y que podría tener permisos diferentes. Va a requerir bastante trabajo y, dependiendo de cómo implemente esto, le otorgará ese permiso al usuario de todos modos, ya que simplemente buscará las credenciales utilizadas para la suplantación.
Otro enfoque sería comprobar que un usuario no pueda enumerar el contenido del directorio que contiene el archivo. Aún sería posible abrir el archivo ya que el usuario aún tendría permisos de lectura sobre él. Este enfoque simplementeoscuroel acceso y no impedirlo!
Respuesta2
Depende del nivel tecnológico de su usuario. Si tiene una buena educación, entonces la respuesta es: No, pero puede utilizar varios trucos de oscuridad que "impiden" que el usuario vea el contenido real del archivo mientras se puede acceder a él desde su programa. El método más sencillo (en mi humilde opinión) de ofuscación es utilizarflujos de datos alternativos(ADS) en algún lugar de %AppData%
¿Podrías aclarar qué estás tratando de lograr? Quizás haya una solución mejor que podamos sugerirle.
Respuesta3
Si el usuario ejecuta la aplicación sin permisos administrativos, la aplicación no podrá acceder al archivo.
Si el usuario ejecuta la aplicación como administrador, el programa puede acceder al archivo, pero el usuario no. Tenga en cuenta que una aplicación que se ejecuta como administrador tiene muchos más derechos y eso puede no resultar práctico.
Un mejor enfoque sería ocultar el archivo o almacenarlo de manera diferente, dependiendo de lo que haga la aplicación y de cuánto control tenga sobre cómo accede a los archivos.
Por ejemplo, podría almacenar los datos dentro de una base de datos ubicada en la red o tener una comunicación servidor-cliente donde el servidor transmite el archivo al cliente, el cliente lo muestra y elimina la copia al finalizar. En esencia, esto podría ser tan simple como un servidor web. Tenga en cuenta que si un usuario abre un archivo, puede almacenarlo y luego tendrá acceso. Mostrar el archivo incrustado dentro de la página web podría evitarlo.