SFTP в работе cron

Общее решение этих проблем состоит в том, чтобы поставить следующую преамбулу в верхней части вашего sudo, требующую скриптов:

#!/bin/bash
case $EUID in
   0) : cool we are already root - fall through ;;
   *) # not root, become root for the rest of this session
      # (and ask for the sudo password only once)
      sudo $0 "$@" ;;
esac
# now the present process is effective-UID  (root)
# so there's no need to put sudo in front of commands

any more commands here will run as superuser ...

Очевидно, это имеет недостаток в том, что если некоторые команды в скрипте не выполняются, t требуется sudo для запуска, здесь есть ненужное возвышение привилегий.

В любом случае, подумал, что я поделюсь этим маленьким советом. Самое приятное в этом заключается в том, что если вы уже являетесь эффективным root-uid root (например, если вы уже его назвали в sudo), он изящно делает все правильно. Кроме того, вы получаете ошибку и заставляете повторить / повторить (с sudo) менее дружелюбно.

Вы также можете проверить переменную timestamp_timeout в man 5 sudoers, которая сообщает sudo запомнить учетные данные пользователя на ограниченное количество минут (и может быть дробным).

0
задан 5 June 2017 в 07:33

2 ответа

Рабочий пример:

простой скрипт с именем hello.sh, который добавляет к текстовому файлу слово hello (использует полные пути для каждой команды):

note myuser это имя вашего пользователя

#!/bin/bash printf 'hello' >> /home/myuser/hello.txt

делает исполняемый файл сценария с помощью chmod +x hello.sh

Запись crontab, которая запускается каждую минуту, вы можете изменить, что соответственно к вашим потребностям:

* * * * * /home/myuser/hello.sh

Некоторые детали:

Каждое задание cron запускается как пользователь, который его зарегистрировал. Если пользователь root зарегистрирует задание cron, это задание будет выполняться с привилегиями root. Если пользователь, не являющийся пользователем root, регистрирует задание cron, это задание будет выполняться с вышеупомянутыми привилегиями пользователя, если задание требует прав root, оно не будет выполнено, потому что оно инициируется пользователем, не являющимся пользователем ... Улучшенные команды вызова и скрипт, используя полные пути чтобы cron мог найти и правильно их называть, иначе он может выйти из строя без полезной обратной связи.
1
ответ дан 18 July 2018 в 12:11

Рабочий пример:

простой скрипт с именем hello.sh, который добавляет к текстовому файлу слово hello (использует полные пути для каждой команды):

note myuser это имя вашего пользователя

#!/bin/bash printf 'hello' >> /home/myuser/hello.txt

делает исполняемый файл сценария с помощью chmod +x hello.sh

Запись crontab, которая запускается каждую минуту, вы можете изменить, что соответственно к вашим потребностям:

* * * * * /home/myuser/hello.sh

Некоторые детали:

Каждое задание cron запускается как пользователь, который его зарегистрировал. Если пользователь root зарегистрирует задание cron, это задание будет выполняться с привилегиями root. Если пользователь, не являющийся пользователем root, регистрирует задание cron, это задание будет выполняться с вышеупомянутыми привилегиями пользователя, если задание требует прав root, оно не будет выполнено, потому что оно инициируется пользователем, не являющимся пользователем ... Улучшенные команды вызова и скрипт, используя полные пути чтобы cron мог найти и правильно их называть, иначе он может выйти из строя без полезной обратной связи.
1
ответ дан 24 July 2018 в 19:55
  • 1
    То, что вы здесь описываете, - это именно то, что у меня есть в моей системе. У меня есть скрипт bash (с разрешениями на выполнение), выполняемый cron. Я использовал это в миллионах других ситуаций - единственная разница в том, что я теперь пытаюсь sftp. По какой-то причине это не работает - это означает, что файл не загружается с сервера или не помещается в домашний каталог. Так что спасибо - но этот ответ не решает мою проблему :) – dsblind 4 June 2017 в 13:57
  • 2
    см. комментарий @Jakuje, если вы вызываете задание с правами root, но ключи генерируются для пользователя без root – Stef K 4 June 2017 в 13:58

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

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