Linux глазами хакера
Шрифт:
Для решения этой проблемы создавайте задачу командой
3.5.2. Планировщик задач
Команда
Проблема решается через использование программы cron. Для этого у вас должен быть установлен демон crond, а лучше, если вы включите его в автозагрузку.
Для работы с демоном crond используется программа crontab. Чтобы добавить новую запись в расписание, необходимо выполнить ее без параметров. В ответ на это появится пустая строка, в которой можно задавать шаблон даты и необходимую команду. В общем виде это выглядит как:
День недели указывается числом от 0 до 7. На воскресенье указывают 0 и 7. Это сделано именно так, потому что в различных странах по-разному определяется начало недели — где-то с понедельника, а иногда с воскресенья. В первом случае удобно выставлять значения от 1 до 7, в другом — от 0 до 6.
Если какой-либо параметр не имеет значения, то вместо него необходимо поставить звездочку.
Теперь рассмотрим несколько примеров.
Здесь заполнены только часы и минуты. Так как остальные параметры не указаны, то команда будет выполняться ежедневно в 5, вне зависимости от дня недели, числа или месяца.
Эта команда выполняет тот же файл сценария каждый понедельник (день недели равен 1) в 20:00.
Такая команда будет выполняться каждый час ровно в 00 минут.
Если вы запустили программу crontab и, не введя команд, нажмете клавиши <Ctrl>+<D>, то все предыдущие задания сотрутся. Будьте внимательны, для выхода из программы без сохранения используйте только клавиши <Ctrl>+<C>.
Помимо этого, у сервиса cron есть несколько дополнительных директорий, упрощающих создание расписаний. Вот распределение выполняемых сценариев по каталогам:
□ /etc/cron.hourly — ежечасно;
□ /etc/cron.daily — ежедневно;
□ /etc/cron.weekly — еженедельно;
□ /etc/cron.monthly — ежемесячно.
Вроде все просто, но если сценарий выполняется еженедельно, то в какое время и в какой день недели? Все станет ясно, если посмотреть на конфигурационный для сервиса cron файл /etc/crontab. В нем есть следующие строки:
В начале строки указывается время выполнения. Вы можете изменить его так, что сценарии из директории /etc/cron.monthly начнут выполняться ежечасно.
Так что, названия чисто символические и только по умолчанию. Они легко меняются.Обратите также внимание, что в этих директориях уже есть сценарии, и все ненужные можно убрать, чтобы излишне не нагружать систему, или запланировать их выполнение на другое время.
Чтобы просмотреть список существующих заданий, выполните команду
В принципе, все задания cron хранятся в текстовом виде. Для каждого пользователя формируется свой crontab-файл в директории /var/spool/cron/файл. Имя созданного файла совпадает с именем пользователя.
Вот пример содержимого crontab-файла:
Вы можете редактировать его напрямую, без использования команды
3.5.3. Безопасность работ
Напоследок хочется добавить во все преимущества команды
В каталоге /etc есть два файла, которые вы должны настроить:
□ at.allow — по умолчанию этого файла может и не быть. Если он существует, то только те пользователи, которые в нем прописаны, могут выполнять команду
□ at.deny — в этом файле перечисляются пользователи, которым явно запрещен доступ к команде
Подобные файлы есть и для сервиса cron:
□ cron.allow — здесь описываются пользователи, которые могут работать с заданиями в cron;
□ cron.deny — в этом файле указываются пользователи, которым недоступен сервис cron.
Я не раз говорил и буду повторять, что все настройки должны идти от запрещения. Сначала необходимо все закрыть, а потом позволить только то и лишь тем пользователям, которым посчитаете нужным. Именно поэтому не стоит пытаться внести всех пользователей в список at.deny. Намного корректнее создать файл at.allow и для начала прописать там только свою учетную запись (будет лучше, если это не root-пользователь). Если вслед за этим вы услышите жалобы пользователей о нехватке команды at, то сначала убедитесь, что им действительно она нужна, и только после этого прописывайте их учетные записи в файл at.allow.