O que poderia causar "Permissão negada" para o comando `crontab -e`?

19

Aqui estão alguns resultados que eu espero que sejam úteis:

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

Problema:

O Crontab não possui setguid e não está no grupo crontab.

home-sv-1:~# ls -al /usr/bin/crontab
-rwxr-xr-x 1 root root 32048 2009-08-30 03:34 /usr/bin/crontab

Solução:

Como raiz ...

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
Nick Bolton
fonte

Respostas:

10

Faz /usr/bin/crontab têm o setgidconjunto de permissões?

-rwxr-sr-x 1 raiz crontab 32K 28-09-2008 14:07 / usr / bin / crontab *

Caso contrário, chmod g+sele (e se necessário, chown antes de disso)


Editar: Observe que isso se aplica apenas ao Vixie Cron (usado pela maioria das distribuições); outros daemons (como dcron) podem usar permissões diferentes ( setuid).

user1686
fonte
15

Também vale a pena conferir as permissões em / var / spool / cron / crontabs por

ls -al /var/spool/cron/crontabs 

No meu caso, isso mostrou que, na verdade, o usuário atribuído ao crontab era 'whoopsie', o que eu suponho que significa que houve algum erro na configuração do usuário.

Executando ...

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

Corrigido isso completamente :)

Shane em uma bicicleta
fonte
1
Isso funcionou para mim, mas o problema era que o diretório / var / spool / cron / crontabs real não estava acessível aos usuários, portanto, o arquivo <username> não pôde ser criado. Vale a pena conferir também.
Marco
2

Verifique os arquivos /etc/cron.allow e /etc/cron.deny. Se esses arquivos existirem, verifique se o seu nome de usuário está em /etc/cron.allow.

ibuys
fonte
1
Isso mostraria uma mensagem de erro diferente - "Você ($ USER) não tem permissão para usar este programa (crontab)"
user1686
1

Eu tive o mesmo problema. Eu resolvi assim.

sudo crontab -u yourUser -e

Espero que ajude você.

Rommel Samanez
fonte