Является ли это угрозой безопасности для запуска моих заданий crontab от имени root?

8

У меня есть несколько заданий cron, которые я выполняю, в основном связанные с резервным копированием.

Мне приходится делать резервные копии, такие как / etc / apache2 / sites / available и т. Д., Для которых требуется root-доступ.

У меня есть пара вопросов:

При работе на автономном сервере:

  1. Под каким пользователем запускается скрипт (при условии, что я не указываю пользователя в записи задания cron)?
  2. Можно ли запускать скрипт резервного копирования от имени пользователя root или это создает вопрос безопасности?

Кстати, мой сервер работает под управлением Ubuntu 10.0.4 LTS

user35402
источник

Ответы:

15

Если вы достаточно обеспечили доступ к сценарию и приняли разумные меры предосторожности, запуск чего-либо из root crontab обычно не представляет угрозы для безопасности.

Но не запускайте скрипт с правами root, который пользователь, не являющийся пользователем root, может редактировать или перезаписывать. Это относится к заданиям, запускаемым из cron, а также в интерактивном режиме.

Если этот скрипт включает в себя другие файлы, то же самое относится и к ним.

В случае сомнений всегда используйте принцип наименьших привилегий. Если вы все еще не уверены, вы всегда можете задать конкретные вопросы на форумах и в IRC.


Всегда есть (почти) способ запустить что-то от имени пользователя без полномочий root. Если ничего не помогает, использование sudo для ограничения пользователя определенными командами также ограничивает потенциальный вред.

Таким образом, в приведенном вами примере создания резервной копии / etc / apache2 / sites-available этот файл по умолчанию доступен для чтения любому, что подразумевает доступ к месту назначения, доступный для записи только пользователю root.

Вы можете это исправить,

  • создать группу с именем backupadmins (например)
  • установить группу в каталоге назначения на backupadmins
  • добавить пользователя с именем backupuser (например)
  • добавьте пользователя backupuser в группу backupadmins.
  • сделать каталог доступным для записи группой backupadmins
  • запустите задание cron из crontab бэкапа пользователя.
Ричард Холлоуэй
источник
+1 за полезные, пошаговые инструкции. Ваш ответ был чрезвычайно полезен. В любом случае я собирался пойти по этому пути, но так как это был первый раз, я с удовлетворением отмечаю, что его здесь рекомендуют (и многие, похоже, согласны с вашей рекомендацией).
user35402
Кстати, если я создам группу пользователей и пользователей, как вы предлагаете, смогу ли я получить доступ к / etc / apache / sites-available и другим папкам, которые (совершенно справедливо) ограничены только доступом root ?. Как мне обойти эту проблему?
user35402
3

Это зависит от того, что делают сценарии. Если они выполняют резервное копирование, то, вероятно, им хорошо, если они root, - если злонамеренный пользователь перезаписывает эти сценарии, у вас, вероятно, все равно будут большие проблемы.

Если они делают глупые вещи, такие как выполнение файлов, найденных в каталогах, или что-то, на что может повлиять содержимое веб-каталогов, то вам, вероятно, нужно искать альтернативы.

Джеймс Л
источник
2

Миллионы заданий cron по всему миру запускаются с правами суперпользователя каждый день (или в любой другой период).

Важно то, что установлены правильные разрешения. Если вы запускаете что-то, что доступно для записи всем, то злоумышленник или процесс может изменить то, что он делает.

Вообще говоря, задания Cron выполняются владельцем crontab. Пользовательский crontab может быть, /var/spool/cron/crontabs/usernameнапример, в. Cronjobs , которые находятся в /etc/crontab, /etc/cron.d/или /etc/cron.hourly(ежедневно, еженедельно, ежемесячно) будет выполняться корнем. Важно, чтобы права владения и разрешения были правильными и для этих файлов crontab.

Приостановлено до дальнейшего уведомления.
источник