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

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

Estou escrevendo um script de construção. Este script deve copiar um arquivo no final. Este arquivo será colocado no diretório inicial de outro usuário e também é necessário que o arquivo pertença a este segundo usuário. Minha primeira tentativa foi usar 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 tentei o seguinte comando:

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

Mas então recebo esta saída:

su: must be run from a terminal

Como faço para que isso funcione?

Responder1

Considere configurar o sudo para este processo específico e talvez definir o comando específico NOPASSWD: para que você não precise repetir uma senha em texto simples (muito ruim em qualquer caso). Além disso, existem sinalizadores sudo que podem permitir que você exija 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

informação relacionada