Что может вызвать «Отказано в доступе» для команды `crontab -e`?

19

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

nick@home-sv-1:~$ crontab -e
/var/spool/cron/crontabs/nick: Permission denied

nick@home-sv-1:~$ echo $EDITOR
emacs

nick@home-sv-1:~$ ls /var/spool/cron/crontabs
ls: cannot open directory /var/spool/cron/crontabs: Permission denied

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

Решение:

Как корень ...

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
Ник Болтон
источник

Ответы:

10

Есть ли /usr/bin/crontabиметь setgidнабор разрешений?

-rwxr-sr-x 1 корневой crontab 32K 2008-09-28 14:07 / usr / bin / crontab *

Если нет, то chmod g+sэто (и если нужно, chown до этого)


Изменить: Обратите внимание, что это относится только к Vixie Cron (используется большинством дистрибутивов); другие демоны (например, dcron) могут использовать другие разрешения ( setuid).

user1686
источник
15

Также стоит проверить разрешения в / var / spool / cron / crontabs

ls -al /var/spool/cron/crontabs 

В моем случае это показало, что на самом деле пользователь, назначенный для crontab, был «whoopsie», что, как я предполагаю, означает, что при настройке пользователя произошла какая-то ошибка.

Выполнение ...

chown <username> /var/spool/cron/crontabs/<username>

Исправлено это полностью :)

Шейн на велосипеде
источник
1
Это сработало для меня, но проблема была в том, что фактический каталог / var / spool / cron / crontabs был недоступен для пользователей, поэтому файл <username> не мог быть создан. Стоит проверить это тоже.
Марко
2

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

ibuys
источник
1
Это приведет к другому сообщению об ошибке: «Вы ($ USER) не можете использовать эту программу (crontab)»
user1686
1

У меня такая же проблема. Я решил это таким образом.

sudo crontab -u yourUser -e

Я надеюсь, что это поможет вам.

Роммель Саманез
источник