In the architecture of Unix-like operating systems, few concepts are as fundamental—or as frequently misunderstood—as the divide between the regular user and the superuser (root). The command su (substitute user) is the gatekeeper between these two worlds. It allows a user to switch to another user account, most commonly the root account.
It must call system functions like setreuid() to adopt the identity of the new user, which requires root privileges.
Both require the SUID bit to break the barrier between the unprivileged caller and the privileged system state.