Каковы разрешения времени выполнения задания cron?

15

Когда задание cron выполняется с какой привилегией оно выполняется?

Я не уверен в этом. Это с теми же привилегиями пользователя, который добавил его через crontab -e?

Джим
источник
"Это с теми же привилегиями пользователя, который добавил его через crontab -e?" Да. Или технически пользователь, в чьем crontab он находится.
Кевин

Ответы:

18

Вы можете указать пользователя в системных записях crontab следующим образом:

# 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

6-й аргумент может быть именем пользователя. Дополнительно вы можете поместить скрипты в /etc/cron.dкаталог. Сценарии принимают ту же форму, что и записи в crontab, описанные выше, например:

# /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

Вы можете поместить сценарии в эти каталоги, но они предназначены для запуска от имени пользователя root:

  • cron.daily
  • cron.hourly
  • cron.weekly
  • cron.monthly

Наконец, вы можете создать пользовательские записи в crontab, выполнив эту команду от имени данного пользователя:

$ crontab -e

Эти записи хранятся в файлах с тем же именем, что и пользователь в этом каталоге /var/spool/cron/:

$ sudo ls -l /var/spool/cron/
-rw------- 1 saml root 0 Jun  6 06:43 saml
SLM
источник
4

Да , однако, задания, которые добавляются вручную в системный crontab (edit / etc / crontab), будут выполняться с абсолютными разрешениями (т.е. запускаться с правами root), если вы не укажете другого пользователя.

haneefmubarak
источник
Как бы вы указали пользователя без полномочий root?
Джим
1
Просто используйте crontab -e как обычный пользователь, и он будет запущен как этот пользователь. :)
haneefmubarak
Или просто указать «имя пользователя» cronjob параметр
Kamafeather