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

Полный гайд по редактированию cron в Astra Linux. Разбор синтаксиса, учёт мандатного доступа Parsec, полезные команды и способы отладки для автоматизации задач.

2026.05.04                  


Подробный гайд: редактирование cron в Astra LinuxПодробный гайд: редактирование cron в Astra Linux cron — стандартный демон для автоматического выполнения команд и скриптов по расписанию. В Astra Linux (Common Edition «Орёл» и Special Edition «Смоленск») он работает на базе Debian, но имеет ряд нюансов, связанных с системой мандатного контроля доступа (Parsec). Ниже приведён полный алгоритм работы.


1. Проверка и запуск службы cron

Перед редактированием убедитесь, что демон активен:

systemctl status cron

Если служба неактивна или остановлена:

sudo systemctl enable --now cron

2. Как открыть crontab для редактирования

Для текущего пользователя

crontab -e

Откроет персональный файл расписания в текстовом редакторе по умолчанию.

Для другого пользователя (требуются права sudo)

sudo crontab -u <имя_пользователя> -e

Внимание:

Не используйте прямой вызов sudo crontab -e без -u, если хотите отредактировать расписание не root.

Системный crontab (/etc/crontab)

sudo nano /etc/crontab

Важно:

В этом файле обязательно указывается пользователь (6-е поле), в отличие от пользовательских crontab.

Альтернативные директории

  • /etc/cron.d/ — для пакетов и системных задач (синтаксис как у /etc/crontab)
  • /etc/cron.daily/, hourly/, weekly/, monthly/ — скрипты, запускаемые автоматически

3. Синтаксис cron-выражений

Формат пользовательского crontab:

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

Примеры

Выражение Описание
0 2 * * * Ежедневно в 02:00
*/15 * * * * Каждые 15 минут
0 9-18 * * 1-5 С 09:00 до 18:00, пн–пт
0 0 1 * * Первого числа каждого месяца в полночь
@reboot При загрузке системы
@daily / @hourly / @weekly Псевдонимы

Важно: cron использует минимальный PATH.

Всегда указывайте полные пути к исполняемым файлам или задайте переменную в начале crontab:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

4. Полезные команды

Команда Описание
crontab -l Показать текущие задачи пользователя
crontab -l > ~/cron_backup.txt Сохранить резервную копию
crontab -r Удалить все задачи (используйте с осторожностью!)
sudo systemctl restart cron Перезапустить демон
journalctl -u cron -f Логи cron в реальном времени
grep CRON /var/log/syslog | tail -20 Последние записи cron

5. Особенности Astra Linux

Мандатный контроль доступа (Parsec / MAC)

В Astra Linux Special Edition включён строгий контроль доступа.

Задачи cron могут блокироваться, если:

  • Скрипт или его каталог имеют несоответствующую метку безопасности
  • Процессу не разрешён доступ к файлам/портам по политике

Проверка блокировок:

journalctl -u cron | grep -iE "parsec|mac|denied|blocked"
dmesg | grep -i parsec

Если задача не запускается без видимых ошибок, временно отключите MAC для теста:

sudo pdpl-disable  # только в отладочных целях!

Для корректной работы задайте метку безопасности файлу:

sudo chpdpl -l <уровень>:<категория> /путь/к/скрипту

Редактор по умолчанию

Если crontab -e открывает неудобный редактор, смените его:

export EDITOR=nano   # для текущей сессии
sudo update-alternatives --config editor  # системно

Ограничения доступа к cron

Файлы /etc/cron.allow и /etc/cron.deny управляют, кто может использовать crontab. Если cron.allow существует, доступ разрешён только указанным в нём пользователям.


6. Траблшутинг: если задача не запускается

  1. Проверьте логи: journalctl -u cron --since "10 min ago"
  2. Убедитесь в полных путях: cron не наследует PATH из ~/.bashrc
  3. Права на скрипт: chmod +x /путь/к/скрипту.sh
  4. Запуск от нужного пользователя: в /etc/crontab или cron.d/ 6-е поле должно совпадать с владельцем файлов
  5. Система безопасности Astra: проверьте pdpl-info /путь/к/скрипту и логи parsec
  6. Проверьте синтаксис: crontab -e валидирует файл при сохранении, но опечатки в командах не ловит
  7. Тестовый запуск: запустите команду вручную от того же пользователя, от которого работает cron

7. Рекомендации

  • Всегда делайте бэкап: crontab -l > ~/crontab_$(date +%F).bak
  • Перенаправляйте вывод в лог: */5 * * * * /opt/script.sh >> /var/log/my_script.log 2>&1
  • В Astra Linux SE рассмотрите миграцию на systemd timers для сложных расписаний (лучше интеграция с журналом, зависимостями и MAC)
  • Не редактируйте /etc/crontab и /etc/cron.d/* без необходимости; предпочитайте crontab -e для пользовательских задач