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)