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