Что означает ошибка EACCES
Ошибка EACCES (или «crontab: permission denied») появляется, когда вы пытаетесь отредактировать (crontab -e) или просмотреть (crontab -l) файл планировщика, а система не может прочитать/записать этот файл из-за недостаточных прав. Это типичное сообщение о запрете доступа, которое указывает на проблему с разрешениями, а не на синтаксис или отсутствие команды.
Причины возникновения
- Попытка редактирования системного файла
/etc/crontabбез прав root. - Недостаточные права на пользовательский файл crontab (обычно
/var/spool/cron/<user>или/var/spool/crontabs/<user>). - Запуск
crontab -eиз-под неподтверждённого пользователя в многопользовательской системе. - Неправильный
umaskпри создании файла crontab, из-за чего файл становится «скрытым». - Повреждённые права на директорию
/var/spool/cron/<user>(например, владелец не соответствует пользователю).
Способы решения
Способ 1: Использование sudo для редактирования
- Откройте терминал.
- Выполните команду
sudo crontab -e. - Введите пароль администратора.
- Отредактируйте задачи и сохраните изменения.
Этот метод предоставляет необходимые права, обходя проверку разрешений.
Способ 2: Установка правильных прав на файл crontab
- Определите путь к вашему crontab‑файлу:
crontab -lпоказывает его местоположение (например,/var/spool/cron/alice). - Выполните
chmod 600 <path>, чтобы ограничить доступ только владельцу. - Установите правильного владельца:
chown alice:alice <path>. - Убедитесь, что родительская директория (
/var/spool/cron) имеет права755(chmod 755 /var/spool/cron).
Способ 3: Редактирование системного crontab с root-доступом
- Откройте системный файл:
sudo nano /etc/crontab. - Добавьте или отредактируйте задачи.
- Сохраните изменения и выйдите из редактора (
Ctrl+O,Enter,Ctrl+X).
Способ 4: Создать временный crontab-файл и загрузить его
- Создайте временный файл, например,
temp.cron. - Добавьте необходимые задачи в этот файл.
- Загрузите его с помощью
crontab temp.cron. - Удалите временный файл:
rm temp.cron.
Профилактика
- Всегда используйте
sudo crontab -e, если вам нужны права администратора. - Регулярно проверяйте права на
/var/spool/cron/<user>с помощьюls -l. - Сохраняйте резервные копии crontab:
crontab -l > backup.cron. - Следите за
umaskв.bashrcили.profile, чтобы избежать скрытия файлов.
Часто задаваемые вопросы
Почему появляется сообщение «crontab: permission denied»?
Как быстро добавить задачу в crontab с помощью sudo?
Как исправить права на файлы crontab без перезагрузки системы?
Что делать, если ошибка сохраняется после установки прав?
Полезное
Использовать sudo для редактирования crontab
Проверить и исправить права на файл crontab
Редактировать системный crontab (требуется root)
Создать временный crontab-файл и загрузить его