Parece que estoy atrapado entre una limitación de NFS y una limitación de Cron.¿Cómo ejecuto un comando como un usuario diferente de un cronjob raíz?
Tengo un cron de raíz (en RHEL5) que ejecuta un script de shell que, entre otras cosas, necesita para sincronizar algunos archivos en un montaje NFS. Y los archivos en el montaje NFS son propiedad del usuario apache con el modo 700, por lo que solo el usuario apache puede ejecutar el comando rsync; ejecutar como root produce un error de permiso (aparentemente, NFS es un caso raro, donde el usuario raíz es no todopoderoso?)
Cuando solo quiero ejecutar el rsync a mano, puedo usar "sudo -u apache rsync ..." Pero sudo no workie en cron - dice "sudo: lo siento, tú debe tener un tty para ejecutar sudo ".
No quiero ejecutar todo el script como apache (es decir, desde el crontab de Apache) porque otras partes del script requieren root, es solo ese comando que necesita ejecutarse como apache. Y realmente preferiría no cambiar el modo en los archivos, ya que eso implicará cambios significativos en otras aplicaciones.
Tiene que haber una manera de lograr "sudo -u apache" de cron ??
gracias! robar
Sería mejor si pasase a SuperUser.com. – Robert
Esta es una pregunta antigua, pero todavía la encontré bastante alta en los rangos de búsqueda, y ninguna de las respuestas explica por qué los permisos de raíz no se aplicaron al montaje de NFS. Para cualquiera que tropiece con esto, la razón es root_squash. Este blog tiene una explicación bastante decente de por qué esa opción es necesaria y, por lo general, se establece de forma predeterminada. http://fullyautolinux.blogspot.com/2015/11/nfs-norootsquash-and-suid-basic-nfs.html – BryKKan