minutos manualmente instalar ejemplos ejecutar editar cada cron root sudo nfs

instalar - ejecutar crontab manualmente



¿Cómo ejecuto un comando como un usuario diferente de una tarea de raíz? (5)

Por defecto en RHEL, sudo no está permitido para procesos sin un terminal (tty). Eso está establecido en /etc/sudoers .

Puede permitir sudo tty-less para usuarios particulares con estas instrucciones:

https://serverfault.com/questions/111064/sudoers-how-to-disable-requiretty-per-user

Parece que estoy atrapado entre una limitación NFS y una limitación Cron.

Así que tengo root cron (en RHEL5) ejecutando un script de shell que, entre otras cosas, necesita rsync algunos archivos sobre 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. no todopoderoso?)

Cuando solo quiero ejecutar rsync a mano, puedo usar "sudo -u apache rsync ..." Pero sudo no workie en cron - dice "sudo: lo siento, debes tener un tty para ejecutar sudo".

No quiero ejecutar el script completo como apache (es decir, desde el crontab de apache) porque otras partes del script requieren una raíz, es solo ese comando que debe 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" desde cron?

¡Gracias! robar


Si quieres habilitarte permanentemente para que juegue como apache:

chsh apache

Esto le permite cambiar el shell para el usuario.


Use su lugar de sudo :

su -c "rsync ..." apache


colóquelo en / etc / crontab y especifique apache en lugar de root en el campo de usuario


su --shell = / bin / bash --session-command = "/ path / to / command -argument = algo" nombre de usuario &

Trabaja para mi (CentOS)