A SUID program (short for Set UID) is when a program has the u+s permission bit set. This means that the program runs with the Effective UID (EUID|UID] of the person that owns the file, not the person that runs the program. For instance, a SUID program owned by root would run as root, instead of a normal user when executed.
To run a progam completely as a new user, it needs to be SUID to that user, and you need to execute
setregid( getegid(), getegid() ); setreuid( geteuid(), getegid() );
Many progams need this, as they will drop any EUID permissions on startup. You can do so using:
setregid( getgid(), getgid() ); setreuid( getuid(), getuid() );