Olá amigos.
Estou tentando escrever um script em shell. A um tempo atrás eu expus uma dúvida de como executar um comando como root e delegar o comando para outro usuário.
Com a ajuda no fórum, descobri que usando o sudo seria possível:
sudo -u duca comando
Neste caso, mesmo como root, eu executo um comando como se fosse o usuário duca.
The -u (user) option causes sudo to run the specified command as a user other
than root. To specify a uid instead of a user‐name, use #uid. Note that if the
targetpw Defaults option is set (see sudoers(5)) it is not possible to run
commands with a uid not listed in the password database.
O script é pequeno:
# cat /usr/local/scripts/rodaservidor.sh
#!/bin/bash
cd /home/postgres/workspace/bin
. ./setenv.sh
tnameserv -ORBInitialPort 30000 &
./andvari_inicia_servidor.sh
O scritp setenv.sh, configura as variáveis de ambiente:
# cat /home/postgres/workspace/bin/setenv.sh
#!/bin/sh
cd /home/postgres/workspace/ProjetoGenomeServidor/deploy/cliente
for JAR in *.jar *.zip ; do
export CLASSPATH=$CLASSPATH:/home/postgres/workspace/ProjetoGenomeServidor/deploy/cliente/$JAR
done
cd /home/postgres/workspace/ProjetoGenomeServidor/deploy/servidor
for JAR in *.jar *.zip ; do
export CLASSPATH=$CLASSPATH:/home/postgres/workspace/ProjetoGenomeServidor/deploy/servidor/$JAR
done
export CLASSPATH=$CLASSPATH:/home/postgres/workspace/ProjetoGenomeServidor/classes/cliente:/home/postgres/workspace/ProjetoGenomeServidor/classes/corba:/home/postgres/workspace/ProjetoGenomeServidor/classes/servidor
export CLASSPATH=$CLASSPATH:/home/postgres/workspace/ProjetoGenomeServidor/
cd /home/postgres/workspace/bin
echo $CLASSPATH
Contudo, estou preso numa coisa.
Estou tentando executar o meu script durante o boot. E com o sudo executá-lo como se fosse disparado pelo usuário postgres. Aparece a seguinte mensagem de erro:
/usr/local/scripts/rodaservidor.sh: line 5: tnameserv: command not found
./andvari_inicia_servidor.sh: line 2: java: command not found
[info]Se eu executo o script com o usuário postgres, funciona normal.[info]
Ao digitar os comandos tnameserv e java no prompt, estão funcionam normal.
Não sei o que fazer e peço encarecidamente sugestões.
Ab, Duca.