File /etc/shadow belongs to root, and access permission is set to 400 or "-r--------" (unless chmod).
So it can't be modified by even root.
But when I login as a normal user (UID 500 up) and I change password with the command /usr/bin/passwd, file /etc/shadow is consequently changed.
I think such binary can gain privilege over even root.
I question how to make such bin with gcc/g++?