No se puede pasar la contraseña a su en un script

No se puede pasar la contraseña a su en un script

Estoy escribiendo un script de compilación. Este script tiene que copiar un archivo al final. Este archivo se colocará en el directorio de inicio de otro usuario y también es necesario que el archivo pertenezca a este segundo usuario. Mi primer intento fue usar su así:

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

Esto funciona en la línea de comando, pero cuando lo pongo en el script necesito que la contraseña se ingrese automáticamente. Entonces probé el siguiente comando:

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

Pero luego obtengo este resultado:

su: must be run from a terminal

¿Cómo hago para que esto funcione?

Respuesta1

Considere configurar sudo para este proceso en particular y tal vez configurar el comando específico NOPASSWD: para que no tenga que repetir una contraseña de texto sin cifrar (muy malo en cualquier caso). Además, existen indicadores sudo que pueden permitirle requerir o no un TTY.

Ejemplo.

/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

información relacionada