Construyendo en Windows 7

3

En mi trabajo, recientemente hicimos el cambio de XP a Windows 7, y como desarrollador, ha sido una pesadilla. Desarrollo para un sistema embebido, por lo que nuestro proceso de construcción puede ser un poco diferente. Nuestro proceso de compilación es extremadamente complicado y genera muchas copias de archivos, que deben ser movidos y copiados. El problema es que una compilación a menudo fallará porque no tiene permiso para copiar un archivo.

En todo mi directorio de compilación correría

takeown /F * /R /D Y
icacls . /T /Grant <userid>:F

Desde el directorio raíz de compilación, pero todavía tengo problemas para copiar archivos (no puedo crear el archivo normal 'bla.bla': permiso denegado). Por lo tanto, me veo obligado a tocar manualmente el archivo, establecer el modo en + www y volver a compilar.

Mi pregunta es si hay una manera simple de obtener un árbol de directorios para que cualquier usuario / aplicación pueda crear / modificar todos los archivos que contiene. icacls no parece cortarlo.

EDITAR: Información adicional: Windows x64, GNU make, usando un archivo bat para establecer variables ambientales antes de llamar a make

Gdogg
fuente

Respuestas:

2

Localice el directorio de compilación en el Explorador gráfico de Windows, haga clic derecho sobre él y seleccione Propiedades . Vaya a la pestaña Seguridad , haga clic en el botón Avanzado y luego, en la ventana que aparece, haga clic en el botón Avanzado . Si la opción Incluir permisos heredables del padre de este objeto está marcada, desactívela. Elija Eliminar en el cuadro de diálogo de advertencia que aparece. Si alguna ACL permanece en el cuadro Entradas de permiso , elimínela.

Ahora, seleccione Agregar , ingrese su nombre de usuario, haga clic en Aceptar . Luego, aparece un cuadro de diálogo que le permite seleccionar permisos para ese usuario. Marque la casilla Control total en Conceder y haga clic en Aceptar . Repita para otras cuentas de usuario o grupos que necesiten acceso al directorio, si lo hay. Además, agregue Control total para el grupo Administradores y el SYSTEMusuario integrado por si acaso. Si el directorio está en su máquina local y solo usted puede iniciar sesión en él, es posible que desee simplemente darle al grupo Todos el control total, para estar absolutamente seguro de que las cosas funcionarán.

A continuación, seleccione los permisos Reemplazar todos los objetos secundarios con permisos heredables de este objeto . El cuadro de diálogo ahora debería verse así:

Diálogo de seguridad avanzada de Windows

Finalmente, haga clic en Aceptar y elija para verificar que desea sobrescribir el permiso de todos los archivos y subdirectorios en ese directorio. Eso reemplazará cualquier conjunto de permisos del alfabeto que tenga con permisos que coincidan exactamente con lo que acaba de aplicar al directorio de compilación. Además, los cambios en los permisos del directorio de compilación se propagarán automáticamente a todos los archivos debajo de ellos ahora, por lo que solo necesita cambiar los permisos del directorio de compilación en el futuro, en lugar de hacerlo de forma recursiva en todo el directorio.

Parches
fuente
Aparte de algunos problemas menores con el rendimiento (esperando que los archivos no extraídos sean RO), este fue el truco. -- ¡Gracias!
Gdogg
0

Para empezar, ejecutaría la herramienta que está utilizando para construir / mover como administrador, que debería solucionar muchos de los problemas. Además, cuando dice que ICacls no parece reducirlo, ¿no le otorga los derechos o le otorga los derechos, pero todavía tiene problemas?

soandos
fuente
Todavía tengo los problemas, pero parece funcionar correctamente. Parece que los nuevos archivos no se crean con ningún permiso, cuando me gustaría que se creen con los permisos de su directorio principal. Estoy ejecutando el script como un usuario con privilegios administrativos, usando Windows Powershell (o cmd.exe * 32). ¿Cómo puedo ejecutarlo como administrador (desde la línea de comando?)
Gdogg
En la configuración de la carpeta, configúrelo para que todos los archivos creados en la carpeta hereden los permisos (la otra respuesta tiene un bonito gráfico).
soandos