![Descripción general](https://rvso.com/image/1316740/Descripci%C3%B3n%20general.png)
Normalmente uso un cliente SSH gráfico para sincronizar un directorio local y remoto. Y tengo que establecer la propiedad de todos los archivos de root
a www-data
.
¿Puedo hacer lo mismo con Rsync, solo que lo hago como www-data
en lugar de root
, para no tener que configurar la propiedad después?
Respuesta1
No está claro lo que desea hacer, así que déjeme suponer que desea que los archivos locales sean propiedad del usuario A y los archivos remotos sean propiedad del usuario B. Si ejecuta el siguiente comando como usuario A:
rsync [options] [email protected]:/path/to/remote/dir /path/to/local/dir
esto tendría el efecto que deseas. Pero en realidad no es un problema de rsync (así que no voy a explicar qué hará el comando anterior, me estoy centrando en tu pregunta); incluso con su cliente SSH gráfico debería poder hacer lo mismo si lo ejecuta como usuario A y lo configura para iniciar sesión en el sistema remoto como usuario B.
Respuesta2
Siempre que esté ejecutando como root, use la opción chown que está integrada en rsync:
sudo rsync --chown=www-data:group user@remoteIP:/var/www/html/ /var/www/html
(reemplace 'grupo' con el grupo que desee, o simplemente use --chown=www-data, también reemplace usuario, IP remota y cambie las carpetas a su gusto)
Si no ejecuta el comando como root, la propiedad del archivo no cambiará ya que necesita sudo para eso. Por lo tanto, tendría que ejecutar el comando como www-data, pero eso genera otras complicaciones.
Respuesta3
si puedes sudo -u www-data entonces puedes ejecutar rsync con ese usuario. Si su destino está en un servidor diferente, también deberá configurar --rsync-path en el mismo (sudo -u www-data rsync). También necesita solucionar el problema de tty (usando -t en su ssh), aunque dependiendo de su distribución y configuración del servidor ssh, podría ser muy complicado. Personalmente, creo que es más fácil simplemente usar root y hacer un chown después, a menos que el servidor no permita el inicio de sesión remoto como root.
Respuesta4
Descripción general
(srcmachine) (rsync) (destmachine)
srcuser -- SSH --> destuser
|
| sudo su jenkins
|
v
jenkins
Digamos que quieres rsync:
- De:
- Máquina:
srcmachine
- Usuario:
srcuser
- Directorio:
/var/lib/jenkins
- Máquina:
- A:
- Máquina:
destmachine
- Usuario:
destuser
aestablecer la conexión SSH. - Directorio:
/tmp
- Propietario de los archivos finales:
jenkins
.
- Máquina:
Solución
rsync --rsync-path 'sudo -u jenkins rsync' -avP --delete /var/lib/jenkins destuser@destmachine:/tmp
Leer más aquí: