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


8

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

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

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

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

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

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

Ответы:


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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.