Tengo dos archivos en un directorio. Uno tiene los permisos correctos y el otro no. ¿Hay alguna manera de "copiar" el conjunto de permisos de un archivo a otro?
unix
permissions
file-management
Svish
fuente
fuente
--reference
opción está incluida en la versión GNU; OSX probablemente usa un chmod que se origina con BSD en su lugar. OSX man chmod : developer.apple.com/Mac/library/documentation/Darwin/Reference/…cp -dpR <source-file> <dest-file>
, al copiar un archivo, se copiarán los permisos y el archivoSe me ocurrió esto:
No es totalmente a prueba de balas, pero hace lo que necesito.
fuente
prueba esto:
find /PATH/TO/TARGET -exec chmod --reference /PATH/TO/SOURCE/{} {} \;
esto subiría recursivamente y modificaría cada archivo, si dos directorios no coinciden en los archivos, verá muchos errores de "No existe tal archivo o directorio".
fuente
find /home/myubuntuuser/Desktop/test1 -exec chmod --reference /home/myubuntuuser/Desktop/test2/{} {} \;
Puede usar
getfacl
para recuperar la lista completa de permisos de archivos, propietario, grupo y ACL adicionales (listas de control de acceso).Si guarda esa salida en un archivo (por ejemplo
acl.txt
), puede restaurar desde este formato consetfacl --restore acl.txt
. Si solo desea restaurar un solo archivo, y ese archivo tiene un nombre de archivo diferente al original, tendrá que usarlosetfacl --set-file acl.txt filename.txt
(dondefilename.txt
está el nuevo nombre de archivo).Pasos
Guardar permisos originales para
acl.txt
:Sobrescribir permisos (para demostración; esto es solo para que pueda ver que restaurarlo en el siguiente paso funciona)
Use
setfacl
para restaurar los permisos correctos deacl.txt
:El nombre de archivo se toma del
# file:
comentario generado porgetfacl
, por lo que no es necesario especificarlo en la línea de comando.Si desea restaurar esos permisos en un archivo diferente, puede usarlo en
--set-file
lugar de hacerlo--restore
así:Ejemplo
Si termina sobrescribiendo los permisos en algunos archivos
/usr
, pero no sabe qué archivos ha sobrescrito, generalmente puede solucionarlo restaurando desde otro sistema configurado de manera similar.Permisos de respaldo del sistema de trabajo (nota:
getfacl
genera rutas relativas, así que asegúrese de tenercd
una ubicación consistente en ambas máquinas)Copie el volcado de ACL en el sistema con permisos rotos
Restaure el volcado de ACL para sobrescribir los permisos rotos con los de la máquina buena conocida
fuente