LCOTW (Linux Commands Of The Week),我打算改改名,叫 Linux commands Of The Quarter 把,人越来越懒了,学到的新东西懒得记下来,等忘了的时候又重新找重新学,太傻了。
执行 ls -l /bin 会发现除了熟悉的 r w x 权限外,还有一些可执行文件有一个 s 权限位(setuid bit),这是啥意思呢?
这个 s 权限可以让文件以文件 owner 的权限运行,做个实验:
sudo touch /test rm /test #failed! You don't have permission sudo chmod u+s `which rm` rm /test #worked!
可以看出这个权限位是很危险的,它可以让一个普通用户以 root 权限运行程序,所以慎用。
还有一个叫 Sticky bit,这个权限只对目录有效 chmod +t /dir(为什么不叫 s?因为已经被 setuid bit 枪了,只好用第二个字符了),一个典型例子是 /tmp,这个目录是全局可写的,sticky bit 可以让文件只能被文件 owner 删除。
这两个权限位的数字表示方法:
4000 setuid bit 2000 setgid bit 1000 sticky bit