[root@study ~]#
ls
-
ld /tmp ; ls
-
l /usr/bin/passwd
drwxrwxrw
t
. 14 root root 4096 Jun 16 01:27 /tmp
-
rw
s
r
-
xr
-
x. 1 root root 27832 Jun 10 2014 /usr/bin/passwd
不是应该只有
rwx
吗?还有其他的特殊权限
( s
t )
啊?啊
.....
头又开始昏了~
@_@
因为
s
t
这两个权限的意义与
系统的账号
(
第十三章
)
系统的程序
(process,
第十六章
)
½为相关,
所以等到后
面的章½谈完后你才会比½有概念!底下的说明先看看就好,如果看不懂也没有关系,
先知道
s
在哪里称为
SUID/SGID
以及如何设定即可,等系统程序章½读完后,再回来看看喔!
.
Set UID
s
这个标志出现在文件拥有者的
x
权限上时,例如刚刚提到的
/usr/bin/passwd
这个文件的权限
状态:『
-rwsr-xr-x
』,此时就被称为
Set UID
,简称为
SUID
的特殊权限。
那么
SUID
的权限对于
一个文件的特殊功能是什么呢?基本上
SUID
有这样的限制与功能:
.
SUID
权限½对二½制程序
(binary program)
有效;
.
执行者对于该程序需要具有
x
的可执行权限;
.
本权限½在执行该程序的过程中有效
(run-time)
.
执行者½具有该程序拥有者
(owner)
的权限。
½这么硬的东西你可能对于
SUID
还是没有概念,没关系,我们举个例子来说明好了。
我们的
Linux
系统中,所有账号的密码都记录在
/etc/shadow
这个文件里面,这个文件的权限为:『
---------- 1 root
root
』,意思是这个文件½有
root
可读且½有
root
可以强制写入而已。
既然这个文件½有
root
可以
修改,那么鸟哥的
dmtsai
这个一般账号使用者能否自行修改自己的密码呢?
你可以使用你自己的
账号输入『
passwd
』这个指令来看看,嘿嘿!一般用户当然可以修改自己的密码了!
唔!有没有冲突啊!明明
/etc/shadow
就不能让
dmtsai
这个一般账户去存取的,为什么
dmtsai
能够修改这个文件内的密码呢?
这就是
SUID
的功能啦!½由上述的功能说明,我们可以知道
1.
dmtsai
对于
/usr/bin/passwd
这个程序来说是具有
x
权限的,表示
dmtsai
能执行
passwd
2.
passwd
的拥有者是
root
这个账号;
3.
dmtsai
执行
passwd
的过程中,会『暂时』获得
root
的权限;
4.
/etc/shadow
就可以被
dmtsai
所执行的
passwd
所修改。
但如果
dmtsai
使用
cat
去读取
/etc/shadow
时,他能够读取吗?因为
cat
不具有
SUID
的权限,所
dmtsai
执行
cat /etc/shadow
时,是不能读取
/etc/shadow
的。我们用一张示意图来说明如下: