chmod u+s
Sets setuid: the program runs with its owner's privileges.
A setuid executable runs as the user who owns the file, not the user who started it. That's how passwd (owned by root) can update /etc/shadow when an ordinary user changes their password.
It's also a classic privilege-escalation path: a bug in a setuid-root program can hand an attacker root. Don't set it on your own programs without a very good reason.
What it changes
-rwxr-xr-x (755)-rwsr-xr-x (4755)the s replaces the owner's x
Examples
ls -l /usr/bin/passwd
a real setuid program: -rwsr-xr-x root root
chmod u+s program
set it
chmod 4755 program
the same as a full numeric mode
find / -perm -4000 -type f 2>/dev/null
list every setuid file on the system — a standard security check
Good to know
- Linux ignores setuid on interpreted scripts (anything started through a
#!line). Only compiled executables honor it. - Filesystems mounted
nosuidignore the bit entirely. - Changing a file's owner or group with chown clears setuid, so set it after chown, not before.
- A capital
Sinls -lmeans setuid is set but the owner can't execute the file — almost always a mistake.
Frequently asked questions
What does chmod u+s do?
It sets the setuid bit. When the file is executed, the process runs with the file owner's user ID instead of the caller's.
Does setuid work on shell scripts?
No. Linux ignores the setuid bit on scripts run through a #! interpreter, because it was too easy to exploit. Use sudo with a narrow rule instead.
How do I find setuid files?
find / -perm -4000 -type f 2>/dev/null lists them. Unexpected entries in that list are worth investigating.