Подробный гайд: установка и настройка cron в Astra Linux

Установка и настройка cron в Astra Linux: планировщик задач, crontab, логирование, особенности Special Edition и мандатного контроля

2026.04.23                  


Подробный гайд: установка и настройка cron в Astra LinuxПодробный гайд: установка и настройка cron в Astra Linux cron — стандартный демон планировщика задач в Linux. В Astra Linux (как и в других Debian-подобных дистрибутивах) он обычно предустановлен, но в зависимости от редакции (Общего или Специального назначения) может потребоваться установка, активация или дополнительная настройка безопасности.


Шаг 1. Проверка установки и установка при необходимости

1.1 Проверка наличия пакета

dpkg -l | grep ^ii | grep cron

Если в выводе есть строка с cron или cron-daemon, пакет установлен.

1.2 Установка (если отсутствует)

sudo apt update
sudo apt install cron

В Astra Linux Special Edition (СН) пакет cron обычно предустановлен. Если система отказывается устанавливать пакеты, проверьте настройки репозиториев и цифровую подпись (apt-key или dpkg --verify).


Шаг 2. Активация и запуск службы

Astra Linux использует systemd.

Управляем демоном стандартными командами:

# Включить автозагрузку при старте системы
sudo systemctl enable cron

# Запустить службу
sudo systemctl start cron

# Проверить статус
sudo systemctl status cron

Ожидаемый вывод: Active: active (running).

Если статус masked или failed, проверьте логи: journalctl -u cron --no-pager -n 50


Шаг 3. Структура и синтаксис cron

3.1 Расположение конфигураций

Тип задач Путь Особенность
Пользовательские crontab -e Хранятся в /var/spool/cron/crontabs/
Системные (от имени root) /etc/crontab Явное указание пользователя в 6-м поле
Сторонние/пакетные /etc/cron.d/ Формат как у /etc/crontab
Периодические скрипты /etc/cron.{hourly,daily,weekly,monthly}/ Запускаются run-parts

3.2 Синтаксис строки расписания

* * * * * /путь/к/команде
│ │ │ │ │
│ │ │ │ └── День недели (0-7, 0 и 7 = воскресенье)
│ │ │ └──── Месяц (1-12)
│ │ └────── День месяца (1-31)
│ └──────── Час (0-23)
└────────── Минута (0-59)

Спецсимволы:

  • * — любое значение
  • , — перечисление (1,15,30)
  • - — диапазон (1-5)
  • / — шаг (*/10 = каждые 10 минут)

3.3 Примеры

# Каждый день в 02:30
30 2 * * * /opt/backup/daily.sh

# Каждые 15 минут
*/15 * * * * /usr/local/bin/check_service.sh

# Только по будням в 10:00
0 10 * * 1-5 /scripts/weekday_task.sh

# Первое число каждого месяца в 00:00
0 0 1 * * /scripts/monthly_cleanup.sh

Шаг 4. Создание и редактирование задач

4.1 Пользовательский crontab

crontab -e

При первом запуске предложит выбрать редактор. Рекомендуется nano или vim.

Для редактирования root-crontab: sudo crontab -e

4.2 Системный crontab (/etc/cron.d/)

Создайте файл с правами 644 и владельцем root:root:

sudo nano /etc/cron.d/my-task

Пример содержимого:

# Запуск от имени пользователя appuser каждые 5 минут
*/5 * * * * appuser /opt/app/sync.sh >> /var/log/app/sync.log 2>&1

В /etc/cron.d/ обязательно указывать пользователя (6-е поле). Файлы должны заканчиваться переводом строки, иначе последняя задача проигнорируется.

4.3 Проверка текущих задач

crontab -l           # текущий пользователь
sudo crontab -l      # root
cat /etc/cron.d/*    # системные

Шаг 5. Логирование и отладка

5.1 Просмотр логов

# Через systemd (рекомендуется)
journalctl -u cron --since "today" --no-pager

# Классический syslog (если установлен rsyslog)
grep CRON /var/log/syslog | tail -20

5.2 Типичные ошибки и решения

Симптом Причина Решение
Задача не запускается Относительные пути Всегда используйте абсолютные пути к бинарникам и скриптам
Ошибка command not found Минимальный PATH в cron Укажите PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin в начале crontab
Скрипт работает вручную, но не в cron Разное окружение Перенаправляйте вывод: >> /tmp/cron_debug.log 2>&1
Permission denied Неправильные права или SELinux/Parsec chmod +x, проверьте метки безопасности (см. ниже)

Шаг 6. Особенности Astra Linux (Специальное назначение)

В Astra Linux Special Edition действует мандатный контроль доступа (Парсек / pdpl). Это влияет на cron следующим образом:

6.1 Метки безопасности и cron

  • Демон cron запускается в контексте sysadm_r:sysadm_t или аналогичном системном.
  • Задачи от обычных пользователей наследуют их мандатную метку. Если скрипт требует доступа к ресурсам с более высокой категорией/целостностью, выполнение будет заблокировано.
- Проверка блокировок:
  sudo grep -i "cron\|pdpl\|denied" /var/log/audit/audit.log | tail -20
  • Решение: Либо понизьте требования скрипта, либо настройте правила Парсек (pdpl-admin), либо запускайте задачу от root/sysadm с корректными привилегиями.

6.2 Ограничение пользователей

Файлы /etc/cron.allow и /etc/cron.deny управляют доступом к crontab. В Astra SE по умолчанию может быть активен строгий контроль.

# Разрешить только конкретным пользователям
echo "ivanov" | sudo tee /etc/cron.allow
echo "petrov" | sudo tee -a /etc/cron.allow
sudo rm -f /etc/cron.deny  # удалить, если существует

6.3 Аудит и соответствие ФСТЭК

- Включите аудит выполнения cron-задач в /etc/audit/rules.d/:
  -w /var/spool/cron/crontabs/ -p wa -k cron_changes
  -w /etc/cron.d/ -p wa -k cron_system
  • Перезагрузите правила: sudo augenrules --load

Лучшие практики

  1. Всегда используйте абсолютные пути к исполняемым файлам, скриптам и логам.
  2. Добавляйте логирование: >> /var/log/mytask.log 2>&1
  3. Тестируйте задачи вручную от имени того пользователя, под которым они будут запускаться: sudo -u username /path/to/script.sh
  4. Избегайте @reboot для критичных задач — в Astra SE загрузка может зависеть от политики безопасности, и cron стартует позже. Используйте systemd-таймеры для гарантийного запуска.
5. Резервное копирование crontab:
   crontab -l > ~/cron-backup-$(date +%F).txt
  1. Для систем, которые не работают 24/7, рассмотрите anacron (sudo apt install anacron) — он выполняет пропущенные задачи при включении.

Чек-лист проверки работоспособности

  • [ ] systemctl is-active cronactive
  • [ ] crontab -l выводит задачи без синтаксических ошибок
  • [ ] Тестовая задача (* * * * * date >> /tmp/cron_test.log) создаёт файл и пишет вывод
  • [ ] В journalctl -u cron нет ошибок ERROR или DENIED
  • [ ] Файлы скриптов имеют chmod +x и корректные права владельца
  • [ ] В Astra SE: audit.log не содержит блокировок по pdpl для ваших задач