Dando permissão ao cron para executar o comando

0

Estou tentando obter um script ruby para ser executado via cron. O cron job é assim:

* * * * * /usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby /usr/share/adafruit/webide/repositories/shed_watcher/lib/shed_watcher.rb >> /tmp/cron_shed_watcher.log 2>&1

Encontrei alguns problemas. A primeira é que o cron do ambiente é executado e pode encontrar uma das gemas necessárias:

require "rest_client"

Isso foi resolvido configurando o GEM_PATH no crontab:

GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p353:/usr/local/rvm/gems/ruby-2.0.0-p353@global

O segundo problema é que o script, executado em Occidentals em um Raspberry Pi, faz uso de uma sonda de temperatura e precisa chamar:

'modprobe w1-gpio'
'modprobe w1-therm'

i.e. modprobe comandos nos backticks. O Cron não pode executar isso, em vez disso, recebo uma mensagem "operação não permitida". modprobe é encontrado em /sbin , então adicionei uma entrada de caminho ao meu crontab:

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin/usr/local/rvm/gems/ruby-2.0.0-p353/bin:/usr/local/rvm/gems/ruby-2.0.0-p353@global/bin:....

Mas recebo o mesmo erro (não é surpreendente como foi uma mensagem "não permitida", não uma mensagem "não encontrada"). O que preciso fazer para que isso funcione?

    
por barry 12.01.2014 / 13:02

1 resposta

1

Você deve adicionar seu trabalho ao crontab da raiz, não ao do usuário. Crontabs do usuário sempre executados com uid / gid do usuário quando o crontab raiz pode conter um campo adicional:

* * * * * username /path/to/the/command

Em seguida, o comando será executado com username priviles / permissions.

    
por 12.01.2014 / 15:24