Как запустить задание cron от имени конкретного пользователя?

15

У меня есть пара команд, которые я хочу выполнить после загрузки машины. Пользователь не должен входить в систему или что-либо еще, чтобы он мог работать.

Я нашел этот отличный ответ, предлагая crontab с @rebootключевым словом, однако он будет работать от имени пользователя root, и я хотел бы работать от имени определенного пользователя, созданного для этих «сервисов» (а не реальных системных сервисов).

Как можно добиться того же эффекта с любым пользователем?

Луис
источник
Попробуйте запустить '$ su [имя пользователя] [команда]'
LittleByBlue

Ответы:

25

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

crontab -u <username> -e

Или, проще говоря, вы можете просто запустить, crontab -eкогда вошли в систему как этот пользователь.

В качестве альтернативы, вы можете добавить префикс вашей команды в (корневой) crontab, sudo -u <username>чтобы запустить команду от имени указанного пользователя.

kraxor
источник
Спасибо, я не смог заставить его работать с ними. Но теперь я вижу, что могу создать crontab для любого. Команды работали нормально как root с sudo. Я не знал, что смогу использовать там sudo (ожидал, что он потерпит неудачу в ожидании пароля).
Луи
2
@Louis sudoне требует пароля, когда вы вызываете его как root. По сути, вы не получаете разрешения, но отказываетесь от них.
Краксор
1
@kraxor - вы можете просто запустить crontab -e, войдя в систему как этот пользователь. Я думаю, что это не правильно.
BHV