¿Cómo se puede hacer que rsync use sudo?

¿Cómo se puede hacer que rsync use sudo?

Utilizo rsyncpara reflejar varias carpetas en nuestro servidor de conmutación por error. Sin embargo, algunos de nuestros archivos, como miniaturas o índices de texto completo, son generados por nuestras aplicaciones bajo el usuario web (llamado "nadie") y tienen permisos restrictivos de forma predeterminada.

Además, estoy haciendo esto a través de ssh, donde el acceso raíz está deshabilitado, y me gustaría mantenerlo así, si es posible.

¿Hay alguna forma razonable de decirle a rsync que se ejecute como sudo? ¿O debería considerar cambiar los permisos del archivo?

Respuesta1

tú podrías:

  1. cree un nuevo grupo para los datos que deben leerse (mediante rsync), agregue UID a ese grupo y/o cambie los GID en archivos y directorios y establezca los permisos apropiados, eso le permitirá usar rsync con ese nombre de usuario
  2. ejecute la línea de comando exacta en el extremo del servidor cuando use rsync-over-ssh (sugerencia, use -v varias veces y recuerde quitar los '-v's de la línea de comando que obtenga) y use la autenticación de clave pública SSH para forzar esa línea de comando específica comando (ver FORMATO DE ARCHIVO AUTHORIZED_KEYS en sshd(8))

Con el #2 podrías usar rsync sobre ssh para el usuario root y aún así estar seguro (ver PermitRootLogin sin contraseña en sshd_config(5)), o incluso mejor, podrías combinar los dos para crear un usuario sin privilegios que solo puede usarse con esa línea de comando rsync específica.

EDITAR: enviar datos de autenticación a través de ssh para obtener root (por ejemplo, ssh como usuario, sudo con contraseña de usuario) no es mejor que hacer ssh directamente al usuario root (mediante una clave pública o mediante unbiencontraseña), en mi humilde opinión.

Respuesta2

Puede especificar qué ejecutar como comando rsync remoto mediante --rsync-path, por ejemplo, algo como esto:

rsync --rsync-path='sudo rsync' --blah --blah /src blah@dest:/dst

Respuesta3

También puedes usardemonio rsync. Sin embargo, tenga cuidado, la forma en que lo describí allí hace posible que cualquier persona en la máquina que ejecuta rsync daemon pueda acceder al nombre del módulo.

No lo he investigado muy profundamente, pero no pude crear una configuración segura basada en clave pública (y por lo tanto sin contraseña) de esta manera. Pero puede haberlo.

información relacionada