Haga coincidir los permisos predeterminados de Windows 7 con los valores predeterminados de los archivos creados por Cygwin

15

Estoy usando cygwin en Windows 7 profesional.

Cuando creo nuevos archivos como MyNewFile.java, parece que el permiso predeterminado se establece en 755. Esto no es lo que quiero. Quiero que sea 644 para archivos normales.

Es muy molesto tener que cambiar los permisos cada vez que creo nuevos archivos fuera del terminal cygwin (cp desde el terminal cygwin funciona bien y solo mantiene los permisos existentes como se esperaba, incluso creando nuevos archivos desde dentro de cygwin funciona).

Alternativamente, ¿hay alguna forma en git para cambiar automáticamente los archivos * .myextension para tener siempre un permiso específico?

Si no es así, ¿hay alguna forma de utilizar recursivamente chmod 644 todos los archivos * .myextension de forma recursiva en una carpeta (sin afectar los permisos de la carpeta)?

UmaN
fuente
1
Para la solución alternativa, esto parece funcionar: find ./ -type f -name '* .myExtension' -exec chmod 644 {} \;
UmaN
1
¿Le diste una oportunidad a umask?
Werner Henze
umask es 0022. Como se dijo, crear a través del terminal cygwin funciona bien. El problema se produce al copiar archivos en el explorador de Windows o al crear archivos mediante, por ejemplo, un IDE al programar. De alguna manera, esto debería tener algo que ver con cómo Windows Cygwin trata los permisos de Windows en carpetas, supongo ...
UmaN
44
@UmaN: Un comentario sobre tu comentario: no hay una buena razón para decirlo find ./ …; find . …funciona bien, y si tiene la costumbre de escribir find ./todo el tiempo, uno de estos días va a escribir find / -exec rm …(o, equivalentemente find /. …) por accidente.
Scott
1
@UmaN, creo que la respuesta de Casey Crockett sería la solución, ¿sí? Está respaldado por esto: cygwin.com/ml/cygwin/2011-02/msg00121.html
r_alex_hall

Respuestas:

2

Debe cambiar la seguridad de la carpeta dentro de Windows en la que cygwin está escribiendo para que coincida con su configuración de cygwin.

Por ejemplo, con la seguridad predeterminada, obtengo:

-rwxr-xr-x 1 400 401    0 Jul 29 14:48 New Text Document.txt

Después de cambiar la seguridad de la carpeta en Windows, obtengo:

-rwxr--r-- 1 400 401    0 Jul 29 14:54 New Text Document 2.txt

He encontrado que la entrada de seguridad de Windows "Todos" coincide con "otros" en el listado "grupo de usuarios otro" en el comando ls. Elimine "Leer y ejecutar", dejando solo Leer para que coincida. La entrada de seguridad especial de CREATOR GROUP coincidía con la parte de "grupo" para mí. Cuando deshabilité "Leer y ejecutar" y dejé solo Leer habilitado, toda la lista de directorios ahora coincidía con la seguridad del archivo creado por cygwin.

Casey Crockett
fuente
0

No está claro qué está tratando de lograr aquí, pero si está tratando de hacer que su cygwin git ignore los permisos, haga esto:

$ git config --local core.filemode false

Stacksharki
fuente