2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

¿Cómo ejecutar una tarea cron como un usuario específico?

Me gustaría ejecutar una tarea cron como un usuario específico en mi máquina. ¿Cómo puedo especificar el usuario para que se ejecute una tarea cron?

Las tareas cron se ejecutarán en un servidor (que funciona con Ubuntu 10.0.4). Los ‘usuarios’ son usuarios que han sido creados específicamente para llevar a cabo tareas específicas del lado del servidor. Estos ‘usuarios’ tienen lo siguiente en común:

  • No pueden iniciar sesión en el sistema
  • Tienen acceso restringido a carpetas/archivos específicos

Respuestas (4)

80
80
80
2010-08-02 11:52:46 +0000

Suponiendo que no puedas entrar y añadirlo al crontab de ese usuario, pon un archivo en /etc/cron.d. Debe tener el formato de un cronjob normal, pero con un campo extra. Antes del comando a ejecutar y después del cron, pon el usuario. Deberías encontrar ejemplos ya en tu sistema.

Ejemplo:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

Como root, para editar el cron del usuario1:

crontab -u user1 -e

También puede iniciar su comando con:

su user1 -c foo bar

Pero a menudo, los propios scripts reducen su acceso cuando se inician como root.

1
1
1
2013-04-27 16:49:38 +0000

He estado buscando esto durante un par de semanas y esto finalmente funcionó…

Cree su script como usuario1

ssh user1@ipaddress
nano hourly-event.sh

introduzca algún comando

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

hágalo ejecutable

chmod 755 hourly-event.sh

edite el crontab para el usuario1

sudo crontab -u user1 -e

ponga una línea al final apuntando a su(s) script(s)

# m h dom mon dow command
* * * * * bash ./hourly-event.sh

exit - guardar los cambios (mostrará un directorio /tmp al guardar. .. está bien)

espere el turno del minuto

abra su recién creado yay.txt

nano /home/user1/yay.txt

ahora debería tener una ventana de nano abierta con “YAY it works” como la primera y única línea si la parte inferior de su ventana de nano dice New File… bueno… no sé

también puede comprobar su nueva entrada de crontab para el usuario1 en: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

A veces puedes querer que el usuario cargue su entorno, especialmente cuando se usa “rbenv”, “nvm”, así:

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(aquí el comando source ~/.bash_profile cargará tu entorno Ruby o Node.