23 votos

Copia de los permisos a los mismos árbol en linux / unix

tengo un árbol de archivos con permisos correctos. entonces tengo una (filewise) idénticos árbol (con diferente contenido de los archivos duros) con permisos incorrectos.

¿cómo puedo transferir los permisos de diseño de un árbol a otro?

34voto

codified Puntos 462

Me acabo de enterar de una nueva y sencilla manera de lograr esto:

getfacl -R /path/to/source > /root/perms.ac

Esto generará una lista con todos los permisos y propiedad.

A continuación, vaya a un nivel por encima de la de destino y restaurar los permisos con

setfacl --restore=/root/perms.acl

La razón que usted tiene que ser un nivel por encima es que todos los caminos en permanentes.acl son relativos.

Debe hacerse como root.

14voto

Hallgrim Puntos 7198

Si usted tiene el origen y el de destino, usted puede sincronizar sus permisos con rsync -ar --perms source/ dest

No transferencia de los datos, tal y permisos...

12voto

Zoredache Puntos 84524

Una cosa que usted podría hacer es usar el encontrar el comando para generar un script con los comandos que necesita para copia de los permisos. Aquí está un ejemplo rápido, usted podría hacer mucho más con los diversos printf opciones, incluyendo obtener el propietario, el id de grupo, y así sucesivamente.

$ find /var/log -type d -printf "chmod %m %p \n" > reset_perms
$ cat reset_perms
chmod 755 /var/log
chmod 755 /var/log/apt
chmod 750 /var/log/apache2
chmod 755 /var/log/fsck
chmod 755 /var/log/gdm
chmod 755 /var/log/cups
chmod 2750 /var/log/exim4
...

8voto

AlberT Puntos 6591

Se puede hacer con la siguiente línea de shell:

D1=foo; D2=foo2; for entry in $(find $D1  -exec stat -f "%N:%Mp%Lp" {} \;); do $(echo $entry | sed 's#'$D1'#'$D2'#' | awk -F: '{printf ("chmod %s %s\n", $2, $1)}') ; done

simplemente el valor correcto para D1 y D2 variables, el punto que el origen y el destino de los directorios, ejecutar y los directorios tienen permisos en modo de sincronización.

0voto

Thomas Puntos 1210

De dos maneras:

  1. Si funciona en su marca de UNIX: cp-ax /src /dest
  2. O si no, esta es la versión portable: (cd /src && tar cpf - .) | (cd /dst && tar xpf -)

(en el último caso /dst debe existir)

Edit: lo siento, no entendí. No es lo que usted pidió.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: