2011-12-07 22 views
6

Estoy usando cp.exe de Cygwin para copiar archivos en Windows 7. Desafortunadamente, cuando hago los permisos del archivo cambio.Cómo usar cp.exe de Cygwin y conservar los permisos

He intentado usar:

cp --preserve=all 

Pero eso tampoco funciona, y al comprobar la seguridad del archivo original vs la copia, la copia tiene diferentes permisos.

Claramente debe haber una manera de conservar los permisos al copiar usando Cygwin, pero no puedo encontrarlo.

+1

'cp --preserver = all' es probablemente lo mejor que vas a poder hacer con el comando' cp'. ¿Exactamente qué permisos son diferentes? ¿Está copiando a un sistema de archivos FAT32? Si es así, es posible que no admita los permisos que desea. –

+0

Parece que los permisos originales son prácticamente ignorados. Es NTFS - Win7. – mlissner

+0

@KeithThompson 'cp --preserve = all' no funciona en win7 atleast. ¡Los permisos de cygwin cp aún están fuera de control! – hawk

Respuesta

7

Hice algunas investigaciones más sobre esto después de hacer la pregunta anterior.

Por this discussion con uno de los desarrolladores de Cygwin, parece que Cygwin no se preocupa por los permisos de Windows, y simplemente se queda con los de POSIX.

Según lo que puedo decir, los permisos POSIX son completamente diferentes de los de Windows, así que sí, es genial que sean compatibles, pero en última instancia, Cygwin no puede copiar archivos y mantener los permisos normales de Windows. Haciéndome inútil para mí. Es mucho mejor usar Python o Ruby.

Me encantaría que se demuestre lo contrario.

+3

Esto me ha quemado hoy, muy decepcionante. Corregido con: 'getfacl src-file.txt | setfacl -f - dest-file.txt' ¿Por qué el 'cp' de Cygwin no puede hacer eso por mí? Otra opción podría ser aliasing 'cp' a un comando' rsync' equivalente, similar a [esta respuesta] (http://unix.stackexchange.com/a/44400). – Dan

+0

Pude copiar los archivos con 'cp' después de configurar los permisos' Total Control' en el archivo de destino. –

9

Creo que al agregar la opción noacl al punto de montaje/cygdrive en/etc/fstab haré lo que quiera.

$ cat fstab 
# For a description of the file format, see the Users Guide 
# http://cygwin.com/cygwin-ug-net/using.html#mount-table 

# This is default anyway: 
# none /cygdrive cygdrive binary,posix=0,user 0 0 
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0 

Ver http://cygwin.com/cygwin-ug-net/using.html#mount-table y discussion de la lista de correo cygwin.

+1

No funciona, un simple 'mkdir' rompe la herencia de ACL NTFS y crea una serie de nuevos permisos, que a veces también hacen que los directorios sean descartables para el usuario que los creó originalmente (a menudo ocurre durante la operación rsync). Entonces, montar con noacl es solo una solución parcial, sin embargo, esto no hace que cygwin se comporte de la manera que yo esperaba. Hay muchas discusiones sobre este tema, para mí es un defecto evidente de cygwin. – jdehaan

+0

@jdehaan Comprobé con la última versión de Cygwin y CMD.exe 'mkdir' establecía el mismo permiso que Cygwin con ruta bajo el efecto' noacl'. Verifique '/ etc/fstab'. – gavenkoa

Cuestiones relacionadas