¿Qué podría causar "Permiso denegado" para el comando `crontab -e`?

19

Aquí hay algunos resultados que espero sean útiles:

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:

Crontab no tiene setguid y no está en el 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

Solución:

Como raíz ...

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
fuente

Respuestas:

10

¿ /usr/bin/crontabTiene el setgidpermiso establecido?

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

Si no, chmod g+s(y si es necesario, chown antes de eso)


Editar: Tenga en cuenta que esto solo se aplica a Vixie Cron (utilizado por la mayoría de las distribuciones); otros demonios (como dcron) pueden usar diferentes permisos ( setuid).

usuario1686
fuente
15

También vale la pena revisar los permisos en / var / spool / cron / crontabs por

ls -al /var/spool/cron/crontabs 

En mi caso, hacer esto demostró que en realidad el usuario asignado al crontab era 'whoopsie', lo que supongo que significa que hubo un error al configurar el usuario.

Ejecutando...

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

Arreglado esto completamente :)

Shane en bicicleta
fuente
1
Esto funcionó para mí, pero el problema era que el directorio / var / spool / cron / crontabs era inaccesible para los usuarios, por lo que no se pudo crear el archivo <nombre de usuario>. Vale la pena echarle un vistazo también.
Marco
2

Busque un archivo /etc/cron.allow y /etc/cron.deny. Si esos archivos existen, asegúrese de que su nombre de usuario esté en /etc/cron.allow.

ibuys
fuente
1
Esto mostraría un mensaje de error diferente: "Usted ($ USER) no puede usar este programa (crontab)"
user1686
1

Yo tuve el mismo problema. Lo resolví de esta manera.

sudo crontab -u yourUser -e

Espero que te ayude.

Rommel Samanez
fuente