Não é possível passar a senha para su em um script

6

Estou escrevendo um script de construção. Este script tem que copiar um arquivo no final. Este arquivo será colocado em outro diretório pessoal de usuários e também é necessário que o arquivo pertença a este segundo usuário. Minha primeira tentativa foi usar o su assim:

su fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

Isso funciona na linha de comando, mas quando coloco isso no script, preciso que a senha seja inserida automaticamente. Então eu tentei o seguinte comando:

echo Password | su -S fbgs -c "cp fbgs.jar /home/fbgs/server/plugins/"

Mas então eu recebo esta saída:

su: must be run from a terminal

Como faço para que isso funcione?

    
por BrainStone 12.10.2014 / 23:16

1 resposta

7

Considere configurar o sudo para esse processo em particular e, talvez, configurar o comando específico NOPASSWD: para que você não precise ecoar uma senha em texto puro (muito ruim em qualquer caso). Além disso, há sinalizadores sudo que podem permitir que você requeira ou não um TTY.

Exemplo.

/etc/sudoers.d/mycmd :

theuser ALL=(fgbs) NOPASSWD: cp fbgs.jar /home/fbgs/server/plugins

my-build-script.sh :

#!/bin/sh
/usr/bin/sudo -H -u fbgs cp fbgs.jar /home/fbgs/server/plugins
    
por 12.10.2014 / 23:35

Tags