Ejecutando el comando rsync Shell desde un archivo php en el navegador web

Ejecutando el comando rsync Shell desde un archivo php en el navegador web

En primer lugar, queremos mover los cambios de un sistema a otro y para ello, tenemos un script de shell en synchfolders.shel archivo de la siguiente manera

rsync -av --delete -e 'sshpass -p Wordpress@123 ssh -p 22' [email protected]:/var/www/html/prosync/wp-content/plugins/ /var/www/html/devsync/wp-content/plugins >> /var/www/html/devsync/wp-content/mysynclog.txt

y queremos ejecutar este script de shell en un archivo PHP shell_exec()y mientras ejecutamos este archivo PHP desde un navegador que no sea el comando rsync, todos se están ejecutando pero rsyncno se está ejecutando. Hemos buscado el material en SO y obtuvimos el enlace.https://stackoverflow.com/questions/30772816/php-exec-rsync-ssh-to-remote-server-not-working/30773063#30773063, como se dijo aquí, hemos probado la ejecución del archivo PHP desde la línea de comandos y funciona perfecto, pero no a través del navegador. Por favor, háganos saber dónde cometimos un error. gracias de antemano

Respuesta1

En general: en scripts que no se ejecutan desde su shell interactivo habitual, debe asegurarse de queusar rutas absolutas(es decir, /usr/bin/rsyncen lugar de rsync) oconfigurar el entorno correctocon un buen valor por $PATH


Como mejora adicional: en lugar de la autenticación basada en contraseña, realmente debería configurar la autenticación ssh basada en claves para usar en scripts.

Cuando deja de usar contraseñas y comienza a usar claves, puede bloquear y proteger el servidor ssh (deshabilitar la autenticación de contraseña detendrá los ataques de fuerza bruta) y, lo que es más importante, puede agregar restricciones a lo que se permite cuando se usa una clave en particular para la autenticación, que es algo que no puedes hacer con una contraseña.

Puede restringir la clave utilizada en su secuencia de comandos para que solo se pueda usar para rsync desde un host específico.

Entonces, incluso si su script está comprometido, no será su contraseña de root (que otorga control total a su servidor) la que será robada, sino solo una clave privada que otorga acceso limitado, si es que puede usarse.

información relacionada