Running sudo su user01 in a script does not mean the following commands are sent to the resultant shell. In fact, it likely means a new shell is spawned as user01, which never exits!
You can execute a command as another user either by passing the -c 'command...' argument to su, like su user01 -c '/etc/init.d/script start'.
Starting a service that uses /etc/init.d from rc.local isn't the correct thing to do. You want to use enable the service at startup using your distribution tools, like chkconfig or update-rc.d. You also don't want jobs in /etc/init.d that shouldn't be started as root. The jobs themselves can feel free to fork to another user account, but should be invoked by root.
suin the rc script?