Para executar seu script como outro usuário como um comando, execute:
/bin/su -c "/path/to/backup_db.sh /tmp/test" - postgres
Breaking it down:
/bin/su : switch user
-c "/path/to..." : command to run
- : option to su, make it a login session (source profile for the user)
postgres : user to become
Eu recomendo sempre usar caminhos completos em scripts como este - você não pode garantir sempre que você estará no diretório correto quando você su (talvez alguém tenha mudado o homedir em você, quem sabe). Eu também sempre uso o caminho completo para su (/ bin / su) porque sou paranóico. É possível que alguém possa editar seu caminho e fazer com que você use uma versão comprometida do su.