É mal ligar-se a um crontab?

3

Eu penso em fazer algo como:

sudo ln -s ~/myCustomCrontab /var/spool/cron/crontabs/username

porque gostaria de ter todos os arquivos personalizados no meu diretório pessoal. Possíveis riscos que posso pensar são

  • segurança (Como devem ser as permissões para ainda ser seguro?)
  • falha do sistema

Ou existe uma maneira melhor de "acompanhar o arquivo"?

    
por caligula 07.01.2016 / 08:29

3 respostas

6

Este não funciona , pelo menos em sistemas semelhantes a Debian (os arquivos crontab com links simbólicos ou com hardlink para usuários (não do sistema) são encontrado em tudo ). Ele também falhará se você usar crontab para alterar seu arquivo crontab. Se a versão do cron ainda aceitar arquivos crontab ligados por links simbólicos, criará possíveis falhas de segurança quando o arquivo crontab não estiver mais sendo verificado para fins de consistência.

Com sua solução de link simbólico, crontab -e falha se você (ou algum script de instalação) alterar o arquivo crontab:

crontab: crontabs/username: rename: Operation not permitted

enquanto move um arquivo temporário para /var/spool/cron/crontabs/username para substituir o arquivo antigo instantaneamente.

O crontab tem muitas verificações de segurança adicionais construídas de tal forma que o sistema cron não pode ser usado para comprometer o sistema. Ele verifica, por exemplo, o conteúdo do arquivo cron antes de instalá-lo ou alterá-lo. Um cron inválido O arquivo pode travar o daemon cron ou pode (pelo menos teoricamente) usá-lo incorretamente para obter mais privilégios no sistema. Com a sua solução, não há mais nenhuma verificação para o arquivo crontab.

    
por 07.01.2016 / 14:31
6

Não!

Não faça isso !!

Por todos os meios, tenha uma cópia do seu crontab (e outros) armazenados em algum lugar, como o seu diretório pessoal, mas não toque nos arquivos do sistema.

vi my_crontab         # Edit my copy of the crontab file
crontab my_crontab    # Install it

(Pessoalmente, uso $HOME/.crontab para minha cópia por usuário).

A melhor maneira de rastrear arquivos do sistema seria criar um repositório de código fonte (git, cvs, mercury, whatever) e usá-lo para rastrear suas alterações. Um Makefile poderia ser usado para instalar alterações nos diretórios relevantes do sistema e reiniciar serviços dependentes; Nesse cenário, você simplesmente digitaria sudo make install e o faria.

    
por 07.01.2016 / 14:16
1

Não há necessidade de vincular. Basta adicionar uma linha ao seu arquivo crontab desejado (/ home / user / my_crontab) que faz uma instalação diária de si mesmo.

58 23  *   *   *     crontab /home/user/my_crontab
00 12  *   *   *     bash /home/user/do-other things.

Processo de kickstart, instalando-o: crontab /home/user/my_crontab

    
por 27.07.2018 / 13:46