You are required to do one of 2 things to get what you want.
First, and probably easiest is to write a C wrapper. setuid(), setgid(), and system() will do just fine.
If you dont know any C, dont want to learn, etc...
Sudo may be able to handle all the switching. Sudo used in this way would be very difficult, but work for the most part.
Note: su -c only works on a single command, and you have the same limits for the command string length as any shell command.
Regards,
Shannon
Microsoft. When do you want a virus today?