Como executar uma tarefa cron como um usuário específico?

60

Eu gostaria de executar um cron job como um usuário específico em minha máquina. Como posso especificar o usuário para uma tarefa cron executar como?.

Os trabalhos cron funcionarão em um servidor (rodando no Ubuntu 10.0.4). Os 'usuários' são usuários que foram criados especificamente para executar tarefas específicas do servidor. Esses "usuários" têm em comum o seguinte:

  • Não é possível fazer login no sistema
  • Acesso restrito a pastas / arquivos específicos
por morpheous 02.08.2010 / 13:50

3 respostas

73

Supondo que você não pode simplesmente efetuar login e adicioná-lo ao crontab desse usuário, coloque um arquivo em /etc/cron.d . Deve ser formatado como um cronjob normal, mas com um campo extra. Antes do comando para executar e após o tempo, coloque o usuário. Você deve conseguir encontrar exemplos no seu sistema.

Exemplo:

#<timing>   <user> <command>
11 * * * *  root   /usr/lib/command
    
por 02.08.2010 / 13:52
38

Como root, para editar o cron do usuário1:

crontab -u user1 -e

Você também pode iniciar seu comando com:

su user1 -c foo bar

Mas, com frequência, os próprios scripts reduzem seu próprio acesso quando iniciados como root.

    
por 02.08.2010 / 13:58
0

Eu tenho procurado por algumas semanas e isso finalmente funcionou ...

Crie seu script como usuário1

ssh user1@ipaddress
nano hourly-event.sh

digite algum comando

#!/bin/bash
echo "YAY it works" > /home/user1/yay.txt

torne-o executável

chmod 755 hourly-event.sh

edite o crontab para o usuário1

sudo crontab -u user1 -e

coloque uma linha na parte inferior apontando para o (s) seu (s) script (s)

# m h  dom mon dow   command
*   *   *   *   *    bash ./hourly-event.sh

exit - salvando as alterações (mostrará um diretório / tmp ao salvar ... tudo bem)

espere a volta do minuto

abra seu yay.txt recém criado

nano /home/user1/yay.txt

agora você deve ter uma janela nano aberta com "YAY it works" como a primeira e única linha Se a parte inferior da sua janela nano diz New File ... bem .. eu não sei

você também pode verificar sua nova entrada crontab para user1 em: / var / spool / cron / crontabs / user1

PEACE

    
por 27.04.2013 / 18:49