Existem várias maneiras. Se você apenas tiver que executar um comando sem nenhum parâmetro, você pode usar sudo -u <username>
#!/bin/bash
whoami
sudo -u otheruser whoami
whoami
Mas se você precisar executar vários comandos, um comando com parâmetros ou qualquer coisa com espaço em branco, esse método não funcionará.
#!/bin/bash
ls /some/dir
sudo -u otheruser ls /some/dir # not working as expected
ls /some/dir
Também não ajuda a citar o comando como sudo -u otheruser "ls /some/dir"
.
Nesses casos, você pode simplesmente trocar o usuário por su
#!/bin/bash
whoami; ls /some/dir
su otheruser -c "whoami; ls /some/dir"
whoami; ls /some/dir