crontab sendo executado como um usuário específico

13

Eu preciso executar um script diariamente. O script deve ser executado como um usuário específico (ex. User1) e não como root. Então coloquei o arquivo cron em /etc/cron.d e coloquei o nome do usuário na linha (2ª coluna). Mas dá um erro dizendo que o comando não foi encontrado. Eu suspeito que o script não foi executado como o ambiente do user1. Eu senti falta de alguma coisa?

    
por Sam Kong 23.01.2012 / 19:47

3 respostas

25

Apenas /etc/crontab e os arquivos em /etc/cron.d/ têm um campo de nome de usuário. Nesse arquivo você pode fazer isso:

1 1 * * * username /path/to/your/script.sh

Do crontab sudo crontab -e do root, você pode usar:

1 1 * * * su username -c "/path/to/your/script.sh"

Ou você pode usar o crontab real do usuário assim:

sudo crontab -u username -e

A segunda coluna em qualquer arquivo crontab é para a hora que você quer que a tarefa seja executada. Você quis dizer o sexto campo?

    
por 23.01.2012 / 19:51
4

Pode ser necessário definir o PATH para esse usuário, se o executável que você estiver usando estiver em, por exemplo, / usr / local / bin. Para definir o PATH, coloque algo assim antes do cronjobs:

PATH=/bin:/usr/bin:/usr/local/bin

*/5 * * * * user1 sample_executable

A outra maneira é especificar totalmente o caminho para sample_executable no seu cronjob, então:

*/5 * * * * user1 /path/to/sample_executable

Se sample_executable fizer referência aos executáveis que não estão no PATH padrão, você deve usar a primeira opção.

    
por 23.01.2012 / 19:52
0

O diretório típico para o usuário crontabs está em / var / spool / cron / crontabs. O formato do arquivo é aquele que não inclui o nome de usuário. Os crontabs do usuário são de propriedade do usuário e são nomeados após o usuário com o modo 0600. Isso é feito da melhor forma escrevendo o arquivo de guia e usando crontab -u username filename para configurar as entradas do cron que você deseja para esse usuário.

    
por 23.01.2012 / 20:10

Tags