权限分析之SUID、SGID、sticky

SUID

UID我们都知道是用户标识,可以使用命令查看当前用户id

id -u username  //显示当前用户的id,其中0表示管理员(一般为root)

/etc/shadow文件。对任何人都不开放权限,除了root用户

[[email protected] ~]#ll /etc/shadow----------. 1 root root 1309 Jul 29 11:32 /etc/shadow  //rwx权限全部为空

我们以普通用户身份修改密码时,会用到passwd命令,我们都知道shadow是专门存放用户密码的地方,普通用户根本没有权限进入。

那么问题来了,既然shadow文件无法对普通用户开放,那为什么我们还能够修改本用户密码呢?

这就要用到SUID的功能了,我们来看passwd这个程序文件

[[email protected] app]#ll /usr/bin/passwd-rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd  //在属主对应权限中有个s权限

s权限,作用就是当某一用户执行调用passwd这个程序时,其身份会临时切换为本程序所属主,也就是root,然后再以root身份执行此程序

举例说明:

当用户wang想修改自己的密码,会执行passwd命令,这条命令对应的其实是一份文件/usr/bin/passwd,而此文件具有s权限,所以会将普通用户wang的身份临时切换成root,

然后再以root身份来对shadow文件进行修改,命令执行结束,root切换回普通用户wang的身份。

[[email protected] ~]$ls -l /etc/shadow----------. 1 root root 1405 Jul 29 16:01 /etc/shadow  //密码修改完成之后,我们会看到shadow文件时间更新了,说明此文件已经被修改了

SUID的这个特性只是应用在二进制可执行程序上,我们平时接触的文件、目录不会出现所属主具有s权限的

SUID只能在文件所有者权限范围做修改,要想修改文件所属组对应权限,可以参考SGID

SGID

SGID跟SUID功能有些相似,在针对二进制文件时,都会临时切换进程所有者身份,只不过SGID是将所有者身份切换到对应的组里,然后执行组所对应的权限;

另外SGID还可以针对目录设置,指定目录所属组然后将组权限加上s,表示此目录内新建文件默认的属组就是其一级目录的所属组

举例说明

[[email protected] app]#chmod g+s dir1/  //新建目录dir1,并将组权限加上s[[email protected] app]#chgrp wang dir1/   //将所属组改为wang[[email protected] app]#ll -d dir1/drwxr-sr-x. 2 root wang 6 Jul 29 16:34 dir1/[[email protected] app]#touch dir1/f1[[email protected] app]#ll dir1/f1-rw-r--r--. 1 root wang 0 Jul 29 16:35 dir1/f1  //dir1下新建的文件f1默认所属组就是wang[[email protected] app]#ll -d  dir1/dir2/    //在dir1下新建子目录dir2,在dir2下新建文件f2,其所属组都跟一级目录一样                              drwxr-sr-x. 2 root wang 16 Jul 29 16:39 dir1/dir2/[[email protected] app]#ll  dir1/dir2/f2                                   -rw-r--r--. 1 root wang 0 Jul 29 16:39 dir1/dir2/f2

通过上述分析,我们知道,SGID会将一级目录所属组一直传递给其目录下的各级文件

SGID只能在文件所属组对应的权限范围进行修改

sticky粘滞位

用户创建的文件,有时候不想让其他人修改、删除

sticky可以帮助解决这个问题

[[email protected] tmp]$ll -d /tmpdrwxrwxrwt. 17 root root 4096 Jul 29 16:52 /tmp   ///tmp目录具有sticky位,即other对应的权限是t[[email protected] tmp]$ll wang.txt -rw-rw-r--. 1 wang wang 15 Jul 29 16:48 wang.txt   //wang用户创建了文件,并进行过编辑[[email protected] tmp]$id   //切换成用户gao,然后执行删除和修改操作,系统提示拒绝uid=1000(gao) gid=1000(gao) groups=1000(gao) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023[[email protected] tmp]$rm -f wang.txt rm: cannot remove ‘wang.txt’: Operation not permitted[[email protected] tmp]$echo "linux" >> wang.txt bash: wang.txt: Permission denied

设置了sticky位的文件,只有所有者自己和root可以编辑、删除,其他人是不能做任何修改的

我们知道文件的权限有两种表示方法:

模式法:rwx

数字法:666

同样SUID、SGID和sticky也有这两中表示方法

模式法:sst

数字法:421

其中

SUID对应数字4

SGID对应数字2

sticky对应数字1

加入要修改文件f1具有SUID权限,且传统权限位744,那么可以这样做

chmod 4764 f1

即f1具有的权限是rwsrw-r--

时间: 2024-10-29 19:07:31

权限分析之SUID、SGID、sticky的相关文章

linux系统上的特殊权限SUID,SGID,STICKY

特殊权限:SUID SGID STICKY linux的安全上下文: 1.进程以用户的身份运行,进程是发起此用户的代理,因此以此用户的身份和权限完成所有的操作. 2.权限匹配模型: 1)判断进程的属主,是否以被访问的文件属主.如果是,则应用属主权限,否则进入第2步. 2)判断进程的属主,是否属于被访问的文件属组.如果是,则应用属组的权限,否则进入第3步. 3)应用other的权限. SUID: 默认情况下,用户发起的进程,进程的属主是其发起者,因此,其以发起者的身份在运行. SUID的功用:用户

linux文件系统特殊权限及suid sgid sticky

linux文件系统特殊权限及suid sgid sticky 1.Linux文件系统上的特殊权限 权限模型: u, g, o r, w, x 2.进程的安全上下文: 前提:进程有属主(进程以哪个用户的身份运行):文件有属主和属组: (1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限: (2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者:进程所属的组,为发起者的基本组: (3) 进程拥的访问权限,取决其属主的访问权限: (a) 进程的属主,同文

Linux文件系统上的特殊权限      SUID, SGID, Sticky(粘之位)

每个人都有自己的梦想,我想把它写出来. Linux文件系统上的特殊权限 SUID, SGID, Sticky(粘之位) 1 文件基本权限 r读, w写, x执行 user, group, other 2 安全上下文 前提:进程有属主和属组:文件有属主和属组: (1) 任何一个可执行程序文件能不能启动为进程:取决发起者对程序文件是否拥有执行权限: (2) 启动为进程之后,其进程的属主为发起者:进程的属组为发起者所属的组: (3) 进程访问文件时的权限,取决于进程的发起者: (a) 进程的发起者,同

文件的特殊权限:suid sgid sticky

一.文件的特殊权限:suid    展示于文件属主的执行权限位:    如果属主本来有执行权限,则展示为s:否则,展示为S; 功用:对于一个可执行文件来讲,任何用户运行此程序为进程时,进程的属主不再是发起者本人,而可执行程序文件自己的属主: 管理文件SUID权限的方法:        chmod u+|-s FILE... [[email protected] ~]# useradd fedora [[email protected] ~]# cp /bin/cat /var/tmp/ [[em

Suid,sgid,sticky的三个权限的详细说明

Suid,sgid,sticky的三个权限的详细说明 一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限. 而setuid, setgid 可以来改变这种设置. setuid: 设置使文件在执行阶段具有文件所有者的权限. 典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权

SUID,SGID,Sticky Bit详解(转)

SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这就是由于Linux的文件系统中的文件有SUID属性. [[email protected] ~]# ll /etc/shadow -r-------- 1 root root 1128 Feb 15 14:33 /etc/shadow SUID属性只能运用在

SUID&SGID&Sticky&setfacl

一.特殊权限文件: ls -l /bin/passwd 特殊权限:SUID,SGID,STICKY 进程的权限取决于发起者:用户 属主--->属组--->其他人 //根据文件的权限位置进行匹配 //这就叫做安全上下文 安全上下文: 1.进程以某用户的身份运行:进程是发起此进程用户的代理,因此以此用户的身份和权限完成所有操作 2.权限匹配模型: (1)判断进程的属主,是否为被访问的文件属主的权限,否则进入第2步 (2)判断进程的属主,是否属于被访问的文件属组,如果是,则应用属组的权限,否则进入第

linux suid sgid Sticky

SUID属性 passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码.但是保存用户密码的/etc/shadow文件的权限是400,也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这就是由于Linux的文件系统中的文件有SUID属性. [[email protected] ~]# ll /etc/shadow -r-------- 1 root root 1128 Feb 15 14:33 /etc/shadow SUID属性只能运用在

SUID ,SGID ,Sticky

SUID passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者: chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限,则SUID显示为s:否则显示S: 如: chmod u+s /bin/cat 就能查看任何文件了 SGID: 运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者所属的基本组: chmod g+s FILE chmod g-s FILE develop team, hadoop, hbas

特殊权限SUID,SGID,Sticky

SUID属性 SUID属性属性只能运用在可执行文件上,当其他用户执行该文件时,临时拥有该文件所有者的权限.典型的有passwd文件,因为SUID属性,所以一般用户在使用passwd修改命令时,临时拥有了passwd的拥有者root的权限.使用命令"ls -l "或"ll"查看文件时,如果如果可执行文件所有者权限的第三位是一个小写的"s"就表明该执行文件拥有SUID属性. [[email protected]~]# ls -l /etc/passw