Что может вызвать сообщение "Доступ запрещен" для команды crontab -e?

Вопрос или проблема

Вот некоторые результаты, которые, надеюсь, будут полезны:

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 указывает на проблемы с правами доступа. В данном случае основное сообщение ошибки и вывод команды дают возможность выявить некоторые ключевые аспекты, которые можно проверить для устранения проблемы.

Основные причины возникновения ошибки

  1. Права доступа к файлам crontab:
    Путь /var/spool/cron/crontabs/nick показывает, что пользователь не имеет разрешения на доступ к его собственному crontab файлу. Чтобы это проверить, необходимо выполнить вышеприведенную команду ls -al /var/spool/cron/crontabs. В вашем случае команда возвратила сообщение о "Permission denied".

  2. Правила управления доступом:
    В некоторых системах существуют файлы /etc/cron.allow и /etc/cron.deny, которые управляют правами пользователей на использование cron. Если файл cron.allow существует, то в нем должно содержаться имя пользователя, пытающегося выполнить команду. Если файл cron.deny существует, то имя пользователя не должно содержаться в этом файле. Проверьте содержание этих файлов и внесите соответствующие изменения, если это необходимо.

  3. Права на исполняемый файл crontab:
    Проверив права на файл /usr/bin/crontab, вы можете увидеть, что он не имеет установленных прав setgid, что может привести к проблемам с доступом. Команда, которой вы воспользуетесь для установки необходимых прав, – это:

    sudo chmod g+s /usr/bin/crontab

    Это позволит процессу crontab наследовать права группы, что дает вашему пользователю необходимый доступ.

  4. Принадлежность пользователя к группам:
    Убедитесь, что ваш пользователь принадлежит к группе crontab. Это можно проверить с помощью команды:

    groups nick

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

    sudo gpasswd -a nick crontab
  5. Ошибки при создании crontab:
    В некоторых случаях, если crontab файлы были созданы или отредактированы некорректно, это может привести к проблемам доступа для определенного пользователя. Убедитесь, что файл crontab для вашего пользователя существует и принадлежит ему. Это можно проверить через:

    sudo ls -al /var/spool/cron/crontabs/

Заключение

Решение проблемы "Permission denied" в контексте команды crontab -e требует внимательной проверки прав доступа и принадлежности к группам, а также настройки соответствующих конфигурационных файлов. Следуя вышеуказанным шагам, вы сможете диагностировать и решить эту проблему. Если все перечисленные методы не помогут, возможно, стоит обратиться к системному администратору для более глубокого анализа конфигурации системы и наличия ошибок в процессе настройки cron.

Оцените материал
Добавить комментарий

Капча загружается...