Estou tentando configurar um cron job com meu usuário. Eu corro crontab -e, faço minhas edições e tento salvar e sair. Recebo a seguinte mensagem de erro /var/spool/cron/: mkstemp: Permission denied
.
Saída relevante de ls -al /var/spool/cron/crontabs
drwxr-xr-x 2 root crontab 4096 Nov 4 10:09 .
drwxr-xr-x 5 root root 4096 Nov 19 2014 ..
-rw-rw-rw- 1 greg crontab 91 Nov 4 11:04 greg
-rw------- 1 root crontab 1231 Oct 29 16:18 root
Posso editar diretamente o arquivo greg e salvá-lo, mas ainda não consigo executar o trabalho, mesmo se eu reiniciar o cron após atualizá-lo. O que preciso fazer para corrigir esse problema?
A saída de ls -lha $(which crontab)
é:
-rwxr-sr-x 1 root crontab 36K Feb 8 2013 /usr/bin/crontab
A saída de groups greg
é:
greg : greg adm sudo crontab lpadmin sambashare
Responder1
Isso resolverá seu problema imediato:
chmod u=rwx,g=wx,o=t /var/spool/cron/crontabs
Mas, se você puder baixar pacotes, uma maneira mais robusta de corrigir isso é apt-get
reinstalar o pacote apropriado:
root@ubuntu# dpkg-query -S /var/spool/cron/crontabs
cron: /var/spool/cron/crontabs
root@ubuntu# apt-get install --reinstall cron
depois de primeiro certificar-se de que todas as alterações locais feitas em /etc/init/cron.conf
, /etc/default/cron
, etc. sejam copiadas em algum lugar e reaplicadas.
Responder2
A solução mencionada por Mark Plotnick não funcionou para mim, porém depois de adicionar meu usuário ao crontab
grupo funcionou:
sudo adduser myname crontab
Você precisará sair e fazer login novamente para que esta alteração seja aplicada.
Responder3
No Ubuntu 22.04:
crontab ~/admin/scripts/crontab.txt
/var/spool/cron/: mkstemp: Permissão negada
$ ls -lha $(which crontab)
-rwxr-sr-x 1 root crontab 39K 23 de março de 2022 /usr/bin/crontab
~$ ls -lha /var/spool/cron/crontabs
ls: não é possível abrir o diretório '/var/spool/cron/crontabs': Permissão negada
~$ sudo ls -lha /var/spool/cron/crontabs
total de 8,0 mil
drwx-wx--T 2 root systemd-journal 4.0K 2 de março de 2023 .
drwxr-xr-x 3 root root 4.0K 22 de julho 09:48 ..
Portanto, precisamos de 2 grupos para execução do usuário para obter privilégios:
sudo usermod -a -G systemd-journal <user>
sudo usermod -a -G systemd-journal <user>
Faça logoff e logon novamente com o usuário ...
crontab ~/admin/scripts/crontab.txt
crontab -l
0 */1 * * * ~/admin/scripts/elasticsearch_flush.sh > /dev/null 2>&1