linux - orden - rsync remoto
Pregunta de permisos rsync: los permisos de destino no se aplican correctamente (3)
Creo que necesitas agregar --perms
(aka -p
). Citando desde la página del manual:
Cuando esta opción está desactivada, los permisos se establecen de la siguiente manera:
...
Los archivos nuevos obtienen sus bits de permiso "normales" configurados a los permisos del archivo de origen enmascarados con los permisos predeterminados del directorio de recepción (ya sea la umask del proceso de recepción, o los permisos especificados a través de la ACL predeterminada del directorio de destino), y sus bits de permiso especiales desactivados excepto en caso en el que un nuevo directorio hereda un bit setgid de su directorio principal.
Sospecho que su sistema de destino tiene una umask típica como 022 que impide que rsync establezca el bit de escritura de grupo. Desafortunadamente --chmod
no menciona cómo se aplica o no la umask.
Esto es lo que estoy tratando de hacer:
rsync -rvl --chmod=ug=rwX,o=rX test /var/www
y después de hacerlo, aquí están los resultados que obtengo:
drwxr-xr-x
(En realidad es drwxr-sr-x, pero eso probablemente no sea importante ... ¿verdad?)
Esto, obviamente, no es lo que quiero. Quiero que el grupo tenga permisos de escritura, pero por alguna razón, el comando rsync no los está configurando.
¿Alguien tiene alguna idea de por qué no? ¿Hay algún error en mi sintaxis? Si es útil, estoy transfiriendo de OSX a Linux (Debian).
Actualización: Además, si es útil, cuando ingreso umask, obtengo 0002. Así que ese no es el problema.
Tienes que usar --chmod
con opciones -p
, como esto:
$ rsync -avz --chmod=o-rwx -p tata/ tata2/
Y aquí hay una prueba completa:
Crear algún archivo en una carpeta
$ mkdir tata
$ mkdir tata2
$ cd tata
$ touch tyoto
$ touch tiuti
Los permisos predeterminados son: u=rw, g=r, o=r
$ ls -l
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto
Prueba un rsync sin params
$ cd ..
$ rsync -avz tata/ tata2/
Los permisos de destino son los mismos que los archivos de origen
$ ls -l tata2
total 0
-rw-r--r-- 1 romain users 0 fév 16 11:48 tiuti
-rw-r--r-- 1 romain users 0 fév 16 11:48 tyoto
Especifique las opciones de rsync --chmod=o-rwx -p
$ rsync -avz --chmod=o-rwx -p tata/ tata2/
$ ls -l tata2
total 0
-rw-r----- 1 romain users 0 fév 16 11:48 tiuti
-rw-r----- 1 romain users 0 fév 16 11:48 tyoto
Y ahora tus permisos están bien.
--chmod
anula los permisos del lado de envío , pero si no especifica -p
o --perms
también, los valores predeterminados de destino se usan independientemente (es decir, --chmod
se ignora).
Desde man 1 rsync :
--chmod
Esta opción le dice a rsync que aplique una o más cadenas "chmod" separadas por comas al permiso de los archivos en la transferencia. El valor resultante se trata como si fueran los permisos que el lado de envío proporcionó para el archivo, lo que significa que esta opción puede parecer que no tiene efecto en los archivos existentes si --perms no está habilitado .