У меня есть несколько задач cron, которые я выполняю - в основном, связанные с резервным копированием.
Мне нужно сделать резервную копию застрявшего файла, например / etc / apache2 / sites / available и т. Д., Для чего требуется root-доступ.
У меня есть пара вопросов:
При работе на безголовом сервере:
Кстати, на моем сервере работает Ubuntu 10.0.4 LTS
Если вы в достаточной степени защитили доступ к сценарию и приняли разумные меры предосторожности, запуск чего-либо из root crontab обычно не представляет угрозы для безопасности.
Но не запускайте сценарий от имени пользователя root, который пользователь без полномочий root может редактировать или перезаписывать. Это относится к заданиям, запускаемым из cron, а также в интерактивном режиме.
Если этот сценарий включает другие файлы, то же самое относится и к ним.
В случае сомнений всегда используйте принцип наименьших привилегий. Если вы все еще не уверены, вы всегда можете задать конкретные вопросы на форумах и в IRC.
Есть (почти) всегда способ запустить что-то от имени пользователя без полномочий root. Если все остальное не удается, использование sudo для ограничения пользователя определенными командами также ограничивает возможность причинения вреда.
Итак, в приведенном вами примере резервного копирования / etc / apache2 / sites-available этот файл по умолчанию доступен для чтения всем, что означает, что это доступ к месту назначения, доступный для записи только root.
Вы можете исправить это
Это зависит от того, что делают скрипты. Если они создают резервные копии, то это, вероятно, нормально, что они являются root - если злоумышленник перезаписывает эти сценарии, у вас, вероятно, в любом случае есть большие проблемы.
Если они делают глупые вещи, например, запускают файлы, найденные в каталогах, или что-либо, на что может повлиять содержимое веб-каталогов, тогда вам, вероятно, придется искать альтернативы.
Миллионы заданий cron по всему миру запускаются с правами root каждый день (или в любой другой период, в течение которого они установлены).
Важно то, что установлены правильные разрешения. Если вы запускаете что-то, доступное для записи всем, то злоумышленник или процесс могут изменить то, что они делают.
Задания Cron, как правило, выполняются владельцем crontab. Пользователь crontab может находиться в /var/spool/cron/crontabs/username
например. Cronjobs, которые в /etc/crontab
, /etc/cron.d/
или /etc/cron.hourly
(ежедневно, еженедельно, ежемесячно) будет запускаться от root. Важно, чтобы права собственности и разрешения были правильными и для этих файлов crontab.