Estoy trabajando con el conjunto de pruebas automatizadas de un proyecto de software. Tengo un caso de prueba automatizado que debería verificar que el código funciona correctamente cuando se encuentra un archivo específico, pero el programa no tiene el permiso adecuado para leer el contenido de ese archivo. Este caso de prueba funciona actualmente en Linux y macOS, pero estoy intentando que funcione también en Windows.
El archivo se crea mediante el proceso de prueba, se modifica para eliminar el permiso de lectura y luego el código intenta leer el archivo y la prueba verifica que el código falla de la manera esperada. Una vez ejecutada la prueba, se restauran los permisos (si es necesario) y se elimina el archivo.
En Linux y macOS, el permiso de lectura lo elimina chmod 000 unreadable.txt
, lo que hace que el archivo sea ilegible para todos (excepto el root). Estoy tratando de encontrar una solución similar en Windows, donde pueda hacer que este archivo de prueba sea ilegible para el usuario actual usando herramientas de línea de comandos, por lo que el programa probado puede fallar.
Según tengo entendido, un comando como icacls unreadable.txt /deny 'Everyone:(RC)'
debería haber funcionado. icacls
confirme la regla de denegación:
Everyone:(DENY)(Rc,S)
pero todavía tengo acceso completo para leer el archivo.
Probé varios encantamientos de llamadas a icacls
y cacls
, con diferentes combinaciones de intentar denegar explícitamente mi cuenta de usuario específica, etc. Todo fue en vano.
Estoy empezando a preguntarme: ¿es imposible en Windows impedir que el propietario de un archivo lo lea?
O, si es posible, ¿cuál es la línea de comando que necesito para que el propietario no pueda leer el archivo?