Выполненный/etc/cron.daily от определенного пользователя

Сделайте я правильно понимаю, что не возможно работать /etc/cron.daily/my от произвольного пользователя это будет выполнено только от root согласно /etc/crontab?

Я могу отбросить полномочие пользователя root определенному пользователю в моем документе на получение крона вместо этого?

Лучше поместить задание крона в /etc/cron.d? Как:

$ cat /etc/cron.d/my
5 0 * * *  user  test -x /usr/bin/my && /usr/bin/my -cfg /etc/my.cfg
3
задан 30 December 2018 в 11:12

1 ответ

Вы правы, задания в /etc/cron.daily (и еженедельно/ежемесячно, и т.д.), всегда выполняются как пользователь root но Вы можете просто swith пользователь из сценария и вызова что очень сценарий снова как тот другой пользователь, включая все переданные аргументы (хотя не будет никого в a cron.daily задание):

Файл /etc/cron.daily/my:

#!/bin/sh

# If started as root, then re-start as user "gavenkoa":
if [ "$(id -u)" -eq 0 ]; then
    exec sudo -H -u gavenkoa $0 "$@"
    echo "This is never reached.";
fi

echo "This runs as user $(id -un)";
# prints "gavenkoa"

exit 0;

Когда сценарий запускается как пользователь root это обнаружит так и повторно выполнит себя через sudo -H -u gavenkoa, это: как пользователь gavenkoa. Это не требует никаких специальных записей в /etc/sudoers потому что root всегда позволяется переключиться на любого пользователя.

exec заменяет текущий процесс новым sudo … звоните и никогда не возвращается. Вот почему Вам не нужно else пункт.

5
ответ дан 1 December 2019 в 15:32

Другие вопросы по тегам:

Похожие вопросы: