Вопрос или проблема
Вот некоторые результаты, которые, надеюсь, будут полезны:
nick@home-sv-1:~$ crontab -e
/var/spool/cron/crontabs/nick: Доступ запрещён
nick@home-sv-1:~$ echo $EDITOR
emacs
nick@home-sv-1:~$ ls /var/spool/cron/crontabs
ls: не удается открыть каталог /var/spool/cron/crontabs: Доступ запрещён
nick@home-sv-1:~$ sudo ls -al /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab 4096 2009-10-25 20:45 .
drwxr-xr-x 3 root root 4096 2009-05-18 01:19 ..
-rw------- 1 root root 612 2009-10-25 01:20 root
Проблема:
Crontab не имеет установленного setguid и не находится в группе crontab.
home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-xr-x 1 root root 32048 2009-08-30 03:34 /usr/bin/crontab
Решение:
Как root…
home-sv-1:~# chown root.crontab /usr/bin/crontab
home-sv-1:~# chmod g+s /usr/bin/crontab
home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-sr-x 1 root crontab 32048 2009-08-30 03:34 /usr/bin/crontab
Имеет ли /usr/bin/crontab
установленное разрешение setgid
?
-rwxr-sr-x 1 root crontab 32K 2008-09-28 14:07 /usr/bin/crontab*
Если нет, используйте chmod g+s
(и если необходимо, chown
до этого)
Редактирование: Обратите внимание, что это относится только к Vixie Cron (используется в большинстве дистрибутивов); другие демоны (такие как dcron
) могут использовать другие разрешения (setuid
).
Также стоит проверить права доступа в /var/spool/cron/crontabs с помощью
ls -al /var/spool/cron/crontabs
В моем случае это показало, что на самом деле пользователю, назначенному crontab, был ‘whoopsie’, что, я предполагаю, означает, что была какая-то ошибка при настройке пользователя.
Выполнение…
chown <имя_пользователя> /var/spool/cron/crontabs/<имя_пользователя>
Это полностью исправило проблему 🙂
У меня была такая же проблема. Я решил ее таким образом.
sudo crontab -u вашПользователь -e
Надеюсь, это поможет вам.
Проверьте наличие файлов /etc/cron.allow и /etc/cron.deny. Если эти файлы существуют, убедитесь, что ваше имя пользователя есть в /etc/cron.allow.
Решено добавлением моего пользователя в группу crontab
:
# gpasswd -a crontab мойпользователь
Проверьте права доступа тоже:
# ls -ld /var/spool/cron/crontabs
drwx-wx--T 2 root crontab 4096 24 октября 19:40 /var/spool/cron/crontabs/
Ответ или решение
Что может вызывать ошибку "Permission denied" при выполнении команды crontab -e
?
Ошибка "Permission denied" при попытке редактирования пользовательского crontab с помощью команды crontab -e
указывает на проблемы с правами доступа. В данном случае основное сообщение ошибки и вывод команды дают возможность выявить некоторые ключевые аспекты, которые можно проверить для устранения проблемы.
Основные причины возникновения ошибки
-
Права доступа к файлам crontab:
Путь/var/spool/cron/crontabs/nick
показывает, что пользователь не имеет разрешения на доступ к его собственному crontab файлу. Чтобы это проверить, необходимо выполнить вышеприведенную командуls -al /var/spool/cron/crontabs
. В вашем случае команда возвратила сообщение о "Permission denied". -
Правила управления доступом:
В некоторых системах существуют файлы/etc/cron.allow
и/etc/cron.deny
, которые управляют правами пользователей на использование cron. Если файлcron.allow
существует, то в нем должно содержаться имя пользователя, пытающегося выполнить команду. Если файлcron.deny
существует, то имя пользователя не должно содержаться в этом файле. Проверьте содержание этих файлов и внесите соответствующие изменения, если это необходимо. -
Права на исполняемый файл crontab:
Проверив права на файл/usr/bin/crontab
, вы можете увидеть, что он не имеет установленных правsetgid
, что может привести к проблемам с доступом. Команда, которой вы воспользуетесь для установки необходимых прав, – это:sudo chmod g+s /usr/bin/crontab
Это позволит процессу crontab наследовать права группы, что дает вашему пользователю необходимый доступ.
-
Принадлежность пользователя к группам:
Убедитесь, что ваш пользователь принадлежит к группеcrontab
. Это можно проверить с помощью команды:groups nick
Если ваш пользователь не является членом этой группы, его необходимо добавить с помощью команды:
sudo gpasswd -a nick crontab
-
Ошибки при создании crontab:
В некоторых случаях, если crontab файлы были созданы или отредактированы некорректно, это может привести к проблемам доступа для определенного пользователя. Убедитесь, что файл crontab для вашего пользователя существует и принадлежит ему. Это можно проверить через:sudo ls -al /var/spool/cron/crontabs/
Заключение
Решение проблемы "Permission denied" в контексте команды crontab -e
требует внимательной проверки прав доступа и принадлежности к группам, а также настройки соответствующих конфигурационных файлов. Следуя вышеуказанным шагам, вы сможете диагностировать и решить эту проблему. Если все перечисленные методы не помогут, возможно, стоит обратиться к системному администратору для более глубокого анализа конфигурации системы и наличия ошибок в процессе настройки cron.