图
6.4.1
、
SUID
程序执行的过程示意图
另外,
SUID
½可用在
binary program
上,
不能够用在
shell script
上面
!这是因为
shell script
只是
½很多的
binary
执行档½½来执行而已!所以
SUID
的权限部分,还是得要看
shell script
呼½½
来的程序的设定,
而不是
shell script
本身。当然,
SUID
对于目录也是无效的~这点要特别留意。
.
Set GID
当
s
标志在文件拥有者的
x
项目为
SUID
,那
s
在群组的
x
时则称为
Set GID, SGID
啰!是这样
没错!
^_^
。
举例来说,你可以用底下的指令来观察到具有
SGID
权限的文件喔:
[root@study ~]#
ls
-
l /usr/bin/locate
-
rwx
--
s
--
x
. 1 root slocate 40496 Jun 10 2014 /usr/bin/locate
与
SUID
不同的是,
SGID
可以针对文件或目录来设定!如果是对文件来说,
SGID
有如下的功能:
.
SGID
对二½制程序有用;
.
程序执行者对于该程序来说,需具备
x
的权限;
.
执行者在执行的过程中½会获得该程序群组的支持!
举例来说,上面的
/usr/bin/locate
这个程序可以去搜寻
/var/lib/mlocate/mlocate.db
这个文件的内容
(
详细说明会在下½½述
)
,
mlocate.db
的权限如下:
[root@study ~]#
ll /usr/bin/locate /var/lib/mlocate/mlocate.db
-
rwx
--
s
--
x
. 1 root
slocate
40496 Jun 10 2014 /usr/bin/locate
-
rw
-
r
-----
. 1 root
slocate
2349055 Jun 15 03:44 /va
r/lib/mlocate/mlocate.db
与
SUID
非常的类似,若我使用
dmtsai
这个账号去执行
locate
时,那
dmtsai
½会取得
slocate
群
组的支持,
因此就能够去读取
mlocate.db
啦!非常有趣吧!
除了
binary program
之外,事实上
SGID
也能够用在目录上,这也是非常常见的一种用途!
当一个
目录设定了
SGID
的权限后,他½具有如下的功能:
.
用户若对于此目录具有
r
与
x
的权限时,该用户能够½入此目录;
.
用户在此目录下的有效群组
(effective group)
½会变成该目录的群组;
.
用途:若用户在此目录下具有
w
的权限
(
可以新½文件
)
,则使用者所½立的新文件,该新文件的群组与此
目录的群组相同。
SGID
对于项目开发来说是非常重要的!因为这涉及群组权限的问题,您可以参考一下本章后续
情境
模拟的案例
,应该就能够对于
SGID
有一些了½的!
^_^
.
Sticky Bit
这个
Sticky Bit, SBIT
目前只针对目录有效,对于文件已经没有效果了。
SBIT
对于目录的作用是:
.
当用户对于此目录具有
w, x
权限,亦即具有写入的权限时;