Actually, I ran into this problem a while back. Turns out that bash ignores the SUID flag if the file is owned by root because it dissuades trivially vulnerable and rather dangerous security breaches.
Of course, it's not a very effective measure of protection; I personally think it's silly. But that's the way it is.
For my little project, I got around the problem by finding this code snippet on the web. It's a C program which is compiled and run SUID root. All it does is run the bash script in question, but that means that the bash script is being run by root, so that gets you around the problem (but definitely not through it).
Code:
int main (int argc, char** argv)
{
setuid(0);
seteuid(0);
execl("/bin/bash", "bash", "/some/path/some/script.sh", 0);
}
Note that the above source snippet will not pass the program's arguments along to the bash script; you'd have to modify it to do that.
It's an ugly hack... I wouldn't recommend it for anything important and I'm not willing to swear by its safety at
all. :-P