chmod [a]bcd
| bit |
scope |
description |
| a |
|
sticky:1, setgid:2, setuid:4 (optional, default: 0) |
| b |
owner |
x:1/w:2/r:4 - xw:3/xr:5/wr:6/xwr:7 |
| c |
group |
x:1/w:2/r:4 - xw:3/xr:5/wr:6/xwr:7 |
| d |
everyone |
x:1/w:2/r:4 - xw:3/xr:5/wr:6/xwr:7 |
- Note: only file/dir owner can chmod it
-
Note: scripts need both
x and r permissions to execute(that’s because scripts are read into interpreter)
(only r is enough if ran via ruby script.rb, sh script.sh)
files
| bit setting |
meaning |
| sticky on files |
no effect |
| setgid on execable binaries |
no matter who executes, process runs as file’s group |
| setuid on execable binaries |
no matter who executes, process runs as file’s owner |
| setuid/setgid on scripts |
ignored due to security issues |
| setuid/setgid on non-execables |
no effect1
|
Warning: setuid is dangerous
directories
| bit setting |
meaning |
| x on dirs |
cd, stat (e.g. ls -l), inode lookup (access files) |
| w on dirs |
add/delete/rename files (requires x for inode lookup) |
| r on dirs |
ls |
-
Note: having
xw on a dir is enough to delete any file in it(unless it has sticky bit)
sticky on dirs
- only used when writable by group/everyone
- files in dir can only be edited/deleted by their owner (think
/tmp)
- symlinks only work if target is within this dir
setgid on dirs
- all files/subdirs created by anyone in this dir inherit its group
- all subdirs inherit this bit when created
setuid on dirs
sources
- There is an exception. See “SUID and SGID on non-executable files” on this page.
Top comments (0)