Linux三个特殊权限setuid,setgid,stick bit

来源:互联网 发布:python自学视频教程 编辑:程序博客网 时间:2024/05/21 11:30

一个文件的权限一共有十位,第一位表示文件类型,其余九位每三个一组,分别代表文件拥有者权限,文件所属组权限,其他用户权限。在这三组权限中,每组分别存在一个特殊权限,就是SUID,SGID,STICKY BIT(针对目录)

(扫盲)文件类型:
-:表示一般文件
d:表示目录文件
l:表示链接文件
b:表示块文件
c:表示字符设备
p:表示管道文件
s:表示套接字文件

简单的来说

  • SUID:运行某程序时,相应进程的属主是程序自身的属主,而非进程启动者。
    usage: chmod u+s file 若文件属主本身有x权限则显示s,否则显示S

  • SGID:运行某程序是,相应进程的属组是程序自身的属组,而非进程启动者
    usage:chmod g+s file 若文件属组自身有x权限则显示s,否则显示S

  • STICKY:在一个公共目录,每一个用户都可以创建、修改、删除自己的文件,但不可以删除修改别人的文件。(root可以修改删除别人的)
    usage:chmod o+t DIR 若文件其他权限中有x权限则显示t,否则显示T

例:以/etc/passwd和/usr/bin/passwd为例

/etc/passwd的权限为 -rw-r–r–。也就是说:该文件的所有者拥有读写的权限,而用户组成员和其它成员只有查看的权限。我们知道,在系统中我们要修改一个用户的密码,root用户和普通用户均可以用“/usr/bin/passwd 用户名” 这个命令来修改这个/etc/passwd这个文件,root用户本身拥有对/etc/passwd的写权限,可以理解;那普通用户没有写权限,那他怎么也能修改呢?这里就用到了setuid,setuid的作用是让执行该命令的用户以该命令拥有者的权限去执行,就是普通用户执行passwd时会拥有root的权限,这样就可以修改/etc/passwd这个文件了。它的标志为:s,会出现在x的地方,例:-rwsr-xr-x 。而setgid的意思和它是一样的,即让执行文件的用户以该文件所属组的权限去执行。

0 0
原创粉丝点击