标签:
刚学习了这三种特殊权限,文档描述的比较清楚。转移保存^^
文件的权限有rwx 这三个读、写、运行的权限。但在linux中却有些文件权限不同。
如:
[root@www ~]# ls -ld /tmp ; ls -l /usr/bin/passwd drwxrwxrwt 7 root root 4096 Sep 27 18:23 /tmp -rwsr-xr-x 1 root root 22984 Jan 7 2007 /usr/bin/passwd
权限里包括了t、s,那么t、s分别代表什么?
当 s 这个标志出现在文件拥有者的 x 权限上时,例如刚刚提到的 /usr/bin/passwd 这个文件的权限状态:『-rwsr-xr-x』,此时就被称为 Set UID,简称为 SUID 的特殊权限。那么SUID的权限对於一个文件的特殊功能是什么呢?基本上SUID有这样的限制与功能:
我们的 Linux 系统中,所有帐号的密码都记录在 /etc/shadow 这个文件里面,这个文件的权限为:『-r-------- 1 root root』,意思是这个文件仅有root可读且仅有root可以强制写入而已。既然这个文件仅有 root 可以修改,那么一般帐号使用者能否自行修改自己的密码呢?你可以使用你自己的帐号输入『passwd』这个命令来看看!一般使用者当然可以修改自己的密码了!
明明 /etc/shadow 就不能让一般帐户去存取的,为什么一般用户还能够修改这个文件内的密码呢?这就是 SUID 的功能啦!藉由上述的功能说明,我们可以知道
但如果 一般用户 使用 cat 去读取 /etc/shadow 时,他能够读取吗?因为 cat 不具有 SUID 的权限,所以 一般用户 运行 『cat /etc/shadow』时,是不能读取 /etc/shadow 的。
另外,SUID 仅可用在binary program 上,不能够用在 shell script 上面!这是因为 shell script 只是将很多的 binary 运行档叫进来运行而已!所以 SUID 的权限部分,还是得要看 shell script 呼叫进来的程序的配置,而不是 shell script 本身。当然,SUID 对於目录也是无效的~这点要特别留意。
当 s 标志在文件拥有者的 x 项目为 SUID,那 s 在群组的 x 时则称为 Set GID, SGID 。举例来说,你可以用底下的命令来观察到具有 SGID 权限的文件:
[root@www ~]# ls -l /usr/bin/locate -rwx--s--x 1 root slocate 23856 Mar 15 2007 /usr/bin/locate
SGID 对二进位程序有用;与 SUID 不同的是,SGID 可以针对文件或目录来配置!如果是对文件来说, SGID 有如下的功能:
举例来说,上面的 /usr/bin/locate 这个程序可以去搜寻 /var/lib/mlocate/mlocate.db 这个文件的内容 (详细说明会在下节讲述),mlocate.db 的权限如下:
[root@www ~]# ll /usr/bin/locate /var/lib/mlocate/mlocate.db -rwx--s--x 1 root slocate 23856 Mar 15 2007 /usr/bin/locate -rw-r----- 1 root slocate 3175776 Sep 28 04:02 /var/lib/mlocate/mlocate.db
除了 binary program 之外,事实上 SGID 也能够用在目录上,这也是非常常见的一种用途!当一个目录配置了 SGID 的权限后,他将具有如下的功能:与 SUID 非常的类似,若我使用 vbird 这个帐号去运行 locate 时,那 vbird 将会取得 slocate 群组的支持,因此就能够去读取 mlocate.db 。
这个 Sticky Bit, SBIT 目前只针对目录有效,对於文件已经没有效果了。SBIT 对於目录的作用是:
换句话说:当甲这个使用者於 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限,这表示『甲使用者对该目录内任何人创建的目录或文件均可进行 "删除/更名/搬移" 等动作。』不过,如果将 A 目录加上了 SBIT 的权限项目时,则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。
举例来说,我们的 /tmp 本身的权限是『drwxrwxrwt』,在这样的权限内容下,任何人都可以在 /tmp 内新增、修改文件,但仅有该文件/目录创建者与 root 能够删除自己的目录或文件。这个特性也是挺重要的啊!你可以这样做个简单的测试:
前面介绍过 SUID 与 SGID 的功能,那么如何配置文件使成为具有 SUID 与 SGID 的权限呢?现在你应该已经知道数字型态更改权限的方式为『三个数字』的组合,那么如果在这三个数字之前再加上一个数字的话,最前面的那个数字就代表这几个权限了!
假设要将一个文件权限改为『-rwsr-xr-x』时,由於 s 在使用者权限中,所以是 SUID ,因此,在原先的 755 之前还要加上 4 ,也就是:『 chmod 4755 filename 』来配置!
而除了数字法之外,你也可以透过符号法来处理喔!其中 SUID 为 u+s ,而 SGID 为 g+s ,SBIT则是 o+t。
标签:
原文地址:http://www.cnblogs.com/ssing/p/4722541.html