Mac OS X下权限的SGID和SUID和sticy位
不得不说Mac OS系统真的是Linux有很多相似的地方,Linux中的SGID和SUID和sticy位,在Mac OS下也是有的,下面就简单的介绍下这三个权限位
SUID
首先看下SUID,查看su命令的执行权限,su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码,运行SUID位设置的命令或脚本时,其有效UID将变为文件所有者的UID,而不是正在运行它的用户
我们如果想要在文件当中去设置这个SUID位的话那么我们可以这么做,其中4代表的设置的是这个SUID位
chmod 4555 pathFile
这里我主要创建了个文件去验证了下这个过程
对文件设置也可以这样设置
chmod u+s pathFile
至于上面用chmode 4555之所以在第一位用4的原因如下所示,我们在终端中查看的文件的权限大多数只有rwx,其实还有些显示的是s和t或者是S和T,它们用来设定一些特殊权限。这些s和t的出现就和SUID SGID sticky-bit 这三个位有关系了
这三个位可以用3个二进制位来表示
- SUID位, 如果该位为1, 则表示设置SUID 单独设置其实就是100为4
- SGID位, 如果该位为1, 则表示设置SGID 单独设置就为010 就是2
- sticky位, 如果该位为1, 则表示设置sticky 单独设置为001 就是1
SGID
下面就是对文件的SGID的位的设置,SGID位置的设置可以看到下面的,只需要在设置权限的前面其实加上个2就可以了
chmod 2555 pathFile
在目录上设置SGID权限时,目录中创建的文件属于该目录所属的组。比如说如果在目录中拥有写权限的用户在那里创建一个文件,那么该文件是与目录相同的组的成员,而不是用户的组。这在创建共享目录时非常有用
如何在目录上设置SGID
chmod g + s directory
想要同时设置SGID位和SUID位我们主需要去进行最前面对应的权限为4+2就可以了
chmod 6741 aaa.txt
sticy
sticy位主要用于共享目录。粘滞位权限是针对目录的,对文件无效
对于共享目录比如说/var/tmp 非常有用,因为用户可以创建文件,读取和执行其他用户拥有的文件,但不允许删除其他用户拥有的文件。
比如,如果用户apple创建一个名为/var/tmp/aaa.txt的文件,则即使/var/tmp目录具有777权限,其他用户apple1也不能删除该文件。如果没有设置sticky位,则apple1可以删除/var/tmp/aaa.txt
设置目录的sticky位,我们可以这么做
chmod + t directory
chmod 1777 directory
最后需要注意的是–, 假如本来在可执行位上有x, 那么特别标志SUID, SGID, sticky显示为小写字母s, s, t,否则的话就显示为大写字母S, S, T