2010-08-02 11:50:25 +0000 2010-08-02 11:50:25 +0000
68
68

Como executar um cron job como um utilizador específico?

Gostaria de executar um trabalho de cron como utilizador específico na minha máquina. Como posso especificar o utilizador para que um cron job seja executado como?

Os trabalhos cron serão executados num servidor (a correr no Ubuntu 10.0.4). Os ‘utilizadores’ são utilizadores que foram criados especificamente para a execução de tarefas específicas do lado do servidor. Estes ‘utilizadores’ têm o seguinte em comum:

& - Não podem entrar no sistema & - Têm acesso restrito a pastas/arquivos específicos

Respostas (4)

80
80
80
2010-08-02 11:52:46 +0000

Assumindo que não pode simplesmente iniciar sessão e adicioná-lo à crontab desse utilizador, colocar um ficheiro em /etc/cron.d. Deve ser formatado como um cronjob normal, mas com um campo extra. Antes do comando para correr e depois do tempo, coloque o utilizador. Deverá ser capaz de encontrar exemplos já no seu sistema.

Exemplo:

#<timing> <user> <command>
11 * * * * root /usr/lib/command
41
41
41
2010-08-02 11:58:55 +0000

Como raiz, para editar o cron do utilizador1:

crontab -u user1 -e

Também pode iniciar o seu comando com:

su user1 -c foo bar

Mas muitas vezes, os próprios scripts reduzem o seu próprio acesso quando iniciados como raiz.

1
1
1
2013-04-27 16:49:38 +0000

Ando à procura disto há algumas semanas e isto finalmente funcionou…

Crie o seu script como utilizador1

ssh user1@ipaddress
nano hourly-event.sh

introduza algum comando

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

torne-o executável

chmod 755 hourly-event.sh

edite a crontab para utilizador1

sudo crontab -u user1 -e

ponha uma linha na parte inferior do seu script(s)

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

saia - guardar alterações (mostrará um directório /tmp ao guardar. … está tudo bem)

aguarde a volta do minuto

abra a sua recém-criada yay.txt

nano /home/user1/yay.txt

deve agora ter uma nano janela aberta com “YAY it works” como primeira e única linha se o fundo da sua nano janela disser New File… bem… dunno

também pode verificar a sua recém-criada entrada de crontab para utilizador1 em: /var/spool/cron/crontabs/user1

PEACE

0
0
0
2018-11-18 10:05:38 +0000

Por vezes pode querer que o utilizador carregue o seu ambiente, especialmente quando utiliza “rbenv”, “nvm”, tal como isto :

0 0 * * * source ~/.bash_profile && cd /opt/app/current && bundle exec ruby ...

(aqui o comando source ~/.bash_profile irá carregar o ambiente Ruby ou Node.