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