¿Cuáles son los permisos de tiempo de ejecución de un trabajo cron?

15

Cuando se ejecuta un trabajo cron con qué privilegio se ejecuta?

No estoy seguro de eso. ¿Tiene los mismos privilegios del usuario que lo agregó a través de crontab -e?

Jim
fuente
"¿Tiene los mismos privilegios del usuario que lo agregó a través de crontab -e?" Si. O técnicamente el usuario en cuyo crontab está.
Kevin

Respuestas:

18

Puede especificar un usuario en las entradas de crontab del sistema de la siguiente manera:

# For details see man 4 crontabs

# Example of job definition:
.---------------- minute (0 - 59)
|  .------------- hour (0 - 23)
|  |  .---------- day of month (1 - 31)
|  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
|  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
|  |  |  |  |
*  *  *  *  * user-name  command to be executed

El sexto argumento puede ser un nombre de usuario. Además, puede poner scripts en el /etc/cron.ddirectorio. Los scripts toman la misma forma que las entradas crontab descritas anteriormente, por ejemplo:

# /etc/cron.d/clamav-update
## Adjust this line...
MAILTO=root

## It is ok to execute it as root; freshclam drops privileges and becomes
## user 'clamav' as soon as possible
0  */3 * * * root /usr/share/clamav/freshclam-sleep

Puede poner scripts en estos directorios, pero están destinados a ejecutarse como root:

  • cron.daily
  • cron.hora
  • cron.semanalmente
  • cron.mesthly

Finalmente, puede crear entradas crontab basadas en el usuario ejecutando este comando como un usuario dado:

$ crontab -e

Estas entradas se almacenan en archivos con el mismo nombre que el usuario en este directorio /var/spool/cron/:

$ sudo ls -l /var/spool/cron/
-rw------- 1 saml root 0 Jun  6 06:43 saml
slm
fuente
4

, sin embargo, los trabajos que se agregan manualmente a los sistemas crontab (edit / etc / crontab) se ejecutarán con permisos absolutos (es decir, se ejecutan como root) a menos que especifique otro usuario.

haneefmubarak
fuente
¿Cómo especificaría un usuario no root?
Jim
1
Simplemente use crontab -e normalmente como un usuario normal y se ejecutará como ese usuario. :)
haneefmubarak
O simplemente especifique el parámetro 'nombre de usuario' cronjob
Kamafeather