jobs específicos do usuário versus jobs do sistema em execução como usuários específicos

0

No Debian e seus derivados, como devemos entender os seguintes fatos aparentemente contraditórios:

  • /etc/crontab e /etc/cron.d/* têm um campo de usuário, o que significa que um trabalho está sendo executado como usuário (raiz ou não raiz ).

  • as tarefas em /etc/crontab e /etc/cron.d/* são tarefas do sistema que não são específicas do usuário?

Se você deseja executar um trabalho como raiz ou como usuário não root, onde você adicionaria o trabalho: /etc/crontab , /etc/cron.d/* ou /var/spool/cron/crontab/<user> ?

Comentário de Stephen em Como estão os arquivos em / etc o /cron.d usado? esclarece muito, mas eu ainda não consigo descobrir isso

A system job is a job which applies to the whole system. A user-specific job is a job run on behalf of a specific user; typically, tasks which the user would do manually while logged in, but which he/she wishes to perform periodically and automatically — e.g. backups of specific files, or refreshes of remote development repositories, or mail processing, or mirroring web sites

Obrigado.

    
por Tim 01.11.2018 / 16:40

2 respostas

4

Eu costumo usar os vários arquivos de configuração do cron da seguinte forma:

  • /var/spool/cron/crontab é usado por usuários "reais" ( isto é, usuários correspondentes a humanos usando o sistema), editados usando crontab -e ;
  • /etc/cron.d é usado para tarefas agendadas fornecidas pelo pacote, que podem ser executadas como um usuário do "sistema" (por exemplo, <.> logcheck para trabalhos do cron logcheck ); como mencionado em respostas a algumas de suas outras questões sobre o tópico, /etc/cron.d é destinado ao uso de pacotes, pelo menos em sistemas baseados em Debian;
  • /etc/crontab seria usado para tarefas do sistema definidas localmente, executadas como raiz, exceto que considero /etc/cron.{hourly,daily,weekly,monthly} mais conveniente para elas.

No meu comentário, por "usuário" eu quis dizer "usuário apoiado por humanos" (se você me permitir a expressão). As tarefas executadas como "usuários do sistema", raiz ou outras, são tarefas do sistema em minha mente.

De uma perspectiva de empacotamento da Debian, a Política Debian descreve a prática recomendada em relação às tarefas do cron: em resumo, use /etc/cron.{hourly,daily,weekly,monthly} se apropriado, /etc/cron.d caso contrário. Portanto, é normal ver ofertas de pacote em todos os cinco diretórios.

    
por 01.11.2018 / 16:46
3

Os crontabs em /etc só podem ser editados manualmente pelo usuário root (ou implicitamente pelo root ao instalar algum pacote). Esses crontabs normalmente seriam usados para agendar trabalhos relacionados a serviços no sistema. Portanto, esses são "trabalhos do sistema". Alguns desses serviços podem ser executados como usuários diferentes de root.

Os crontabs em spool em /var são os crontabs específicos do usuário. Um usuário deve usar crontab -e para editar seu próprio crontab (isso pode ser uma coisa razoável para o root fazer também). Um usuário que não esteja vinculado a nenhum serviço específico no sistema (ou seja, um ser humano) não deve precisar ter tarefas agendadas em execução em seus nomes nos crontabs sob /etc .

    
por 01.11.2018 / 16:47