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