Sample Header Ad - 728x90

Why "permission denied" when running `less` with chmod 6110?

2 votes
1 answer
540 views
Assume you are user x, so running id gives
uid=1001(x) gid=1001(x) groups=1001(x)
And there is also a user y with
uid=1002(y) gid=1002(y) groups=1002(y)
Now as root we create a file readme in user's x home directory like this:
# cd /home/x
# touch readme
# echo "hello" > readme
# chown root:y readme
# chmod 640 readme
And we make a copy of less
# cd /home/x
# cp /usr/bin/less .
# chown y:x less
# chmod 6110 less
**I would expect user x to be able to read readme by running ./less readme** because of the setuid and setgid, but I get a "permission denied" error. **Why?** This is my logic, but probably something is wrong. chmod 6110 gives *only* execution rights to the owner (y) and members of the group (x). Since user x belongs to group x, he can execute less. Then the setuid makes the effective UID to be the same as y, and the setgid makes the effective GID the same as the group of the owner, again y. And since readme's group is y, less should have read permission.
Asked by Iyán (108 rep)
Feb 7, 2022, 01:32 PM
Last activity: Feb 7, 2022, 02:12 PM