Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350251
  • 博文数量: 93
  • 博客积分: 4578
  • 博客等级: 上校
  • 技术积分: 1005
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-13 08:12
文章分类
文章存档

2012年(2)

2011年(45)

2010年(46)

分类: LINUX

2010-11-13 23:38:09

SUID, SGID and sticky bit

March 11th, 2008

stick bit以前表示要把这个可执行文件放到swap分区中来加快执行速度,现在这个显然用不着了,因为Linux/Unix的vm子系统会自动完成这种功能。 为了“变废为宝”,这个sticky bit并没有被遗弃,现在它的功能是这样的:对于一个目录,如果它被设置了sticky bit,那么它里面的文件只能被文件所有者,目录所有者,或特权用户删除。最好的一个例子是/tmp目录,在Fedora上它的权限是:

$ ls -ld /tmp/
drwxrwxrwt 50 root root 20480 03-09 21:08 /tmp/
$ test -k /tmp
$ echo $?
0

我们可以看到最后一个x变成了t。而如果目录或者文件不具有x权限,那么t就会变成T,比如:

$ touch foo.txt
$ chmod +t foo.txt
$ ls -l foo.txt
-rw-rw-r-T 1 wangcong wangcong 0 03-09 23:53 foo.txt

suid和sgid类似,它们的符号是s或者S而不是t。suid的含义是让可执行文件执行时具有owner的权限,sgid的含义是让其具有owner所在group的权限。例如:

$ ls -l /bin/ping
-rwsr-xr-x 1 root root 41748 2007-04-06 /bin/ping

如果你用ls -l看,你会发现suid的s是在owner权限一组,sgid的s是在group权限一组。

sgid用到目录上的含义是:里面的新文件或者子目录会继承这个group id。而在Linux上,suid用在目录上是被忽略的。

参考资料:
1.
2.
3.
4.

阅读(876) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~