Envie um comando com senha no script upstart

1

CentOS 6.5

O servidor é uma AWS AMI, especificamente este

Estou tentando usar o upstart para iniciar um processo na inicialização

Nesta caixa em particular, o root login está desabilitado, e toda vez que eu precisar executar algo com sudo ele pede minha senha

Então, simplesmente colocar meu comando no script não funcionará.

Eu tentei seguir esta resposta , sem sucesso

Eu tenho este arquivo rio.conf no diretório / ect / init:

start on runlevel [2345]
stop on runlevel [!2345]

exec echo Password! | sudo -s /usr/bin/riofs --fuse-options="allow_other" --fmode=0777 --dmode=0777 xx.xxxxxx /mnt/applications/recorder/streams/_definst_/s3

E sempre que eu corro isso, nada parece acontecer.

Password! é apenas um exemplo de senha.

EDITAR:

Se eu digitar exec /usr/bin/riofs minha janela SSH será fechada e, quando eu voltar, posso ver que está funcionando. Eu não sei o que isso significa, ou como automatizar isso.

    
por Houseman 01.06.2014 / 03:50

3 respostas

3

Você não precisa de sudo em um script init / upstart. Todos os serviços init / upstart são executados como root por padrão.

Pense nisso dessa maneira, em que usuário você espera que o script inicial seja executado? Se você espera que ele seja executado como seu usuário pessoal, por que isso aconteceria? O sistema apenas vê um script, ele não sabe quem é seu usuário pessoal.

Em resumo, altere sua linha exec para esta:

exec /usr/bin/riofs --fuse-options="allow_other" --fmode=0777 --dmode=0777 xx.xxxxxx /mnt/applications/recorder/streams/_definst_/s3

Apesar de tudo, eu também não faria isso. Você está montando um sistema de arquivos, isso é um trabalho para /etc/fstab :

riofs#xx.xxxxxx    /mnt/applications/recorder/streams/_definst_/s3    _netdev,allow_other,fmode=0777,dmode=0777   0 0
    
por 01.06.2014 / 04:55
0

Você pode configurar o sudo para funcionar sem a senha do usuário. Execute visudo como root e adicione NOPASSWD à linha do usuário:

user    ALL=(root)    NOPASSWD: ALL

Editar

Dado que este é um script inicial, a resposta de Patrick está correta.

Além disso, para scripts arbitrários, 0xC0000022L faz um bom ponto. Digamos que você queira executar este script somente de raiz como usuário sem senha:

user@host:~$ ls -lah /usr/local/bin/script.sh
-rwx------  1 root root ... script.sh

Usando visudo, a linha do usuário deve ser:

user    ALL=(root)    NOPASSWD: /usr/local/bin/script.sh

Dessa forma, o requisito de senha é dispensado apenas para esse comando.

    
por 01.06.2014 / 04:21
0

Existem duas coisas a serem consideradas.

Primeiramente, se você achar que digitar sua senha a cada sudo é entediante, faça como @mirimir sugere e edite o arquivo '/ etc / sudoers' para algo como:

yourusername ALL=(root) NOPASSWD: ALL

ou

yourusername ALL=(ALL) NOPASSWD: ALL

para consertá-lo para todo o sempre: -).

Em segundo lugar, verifique o proprietário do script. Tenho certeza que proprietário e permissões são importantes. Altere o proprietário assim sudo chown root:root /path/to/script.sh . Além disso, considere configurar permissões para 744 com sudo chmod 744 /path/to/script.sh .

    
por 01.06.2014 / 09:15

Tags