suid, sgid, sticky简介

SUID属性

passwd命令可以用于更改用户的密码,一般用户可以使用这个命令修改自己的密码。但是保存用户密码的/etc/shadow文件的权限是000,也就是说只有文件的所有者root用户可以写入,那为什么其他用户也可以修改自己的密码呢?这就是由于Linux的文件系统中的文件有SUID属性。

[root@centos6 ~]# ll /etc/shadow
----------. 1 root root 1565 Jul 25 13:33 /etc/shadow

SUID属性只能运用在可执行文件上,当用户执行该执行文件时,会临时拥有该执行文件所有者的权限。passwd命令启用了SUID功能,所以一般用户在使用passwd命令修改密码时,会临时拥有了passwd命令所有者root用户的权限,这样一般用户才可以将自己的密码写入/etc/shadow文件。
在使用“ls -l”或“ll”命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的“s”就表明该执行文件拥有SUID属性。

[root@centos6 ~]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Nov 23  2015 /usr/bin/passwd

如果在浏览文件时,发现所有者权限的第三位是一个大写的“S”则表明该文件的SUID属性无效,比如将SUID属性给一个没有执行权限的文件。
SGID属性

SGID属性

SGID于SUID不同,SGID属性可以应用在目录或可执行文件上。当SGID属性应用在目录上时,该目录中所有建立的文件或子目录的拥有组都会是该目录的拥有组。比如“/charles”目录的拥有组是charles,当“/charles”目录拥有SGID属性时,任何用户在该目录中建立的文件或子目录的拥有组都会时charles;当SGID属性应用在可执行文件上时,其他用户在使用该执行文件时就会临时拥有该执行文件拥有组的权限。比如/sbin/apachectl文件的拥有组是httpd,当/sbin/apachectl文件有SGID属性时,任何用户在执行该文件时都会临时拥有用户组httpd的权限。在使用“ls -l”或“ll”命令浏览文件或目录时,如果拥有组权限的第三位是一个小写的“s”就表明该执行文件或目录拥有SGID属性。

[root@centos6 ~/tmp]# ll
total 16
-rw-r--r--. 1 root root  285 Jul 19 17:18 df.txt
------S---. 1 root root5 Jul 26 05:39 hello

如果在浏览文件时,发现拥有组权限的第三位是一个大写的“S”则表明该文件的SGID属性无效,比如将SGID属性给一个没有执行权限的文件。

Sticky属性

Sticky属性只能应用在目录,当目录拥有Sticky属性所有在该目录中的文件或子目录无论是什么权限只有文件或子目录所有者和root用户能删除。比如当用户test8在“/charles”目录中建立一个文件并将该文件权限配置为777,当/charles目录拥有Sticky属性时,只有root和test8用户可以将该文件删除。在使用“ls -l”或“ll”命令浏览目录时,如果其他用户权限的第三位是一个小写的“t”就表明该执行文件或目录拥有Sticky属性。

[root@centos6 ~/tmp]# ll
total 4
drwxrwxrwt 2 root root 4096 Feb 15 22:34 test4

配置suid sgid sticky权限

配置普通权限时可以使用字符或数字。
SUID、SGID、Sticky也是一样。使用字符时s表示SUID和SGID、t表示Sticky
4表示SUID、2表示SGID、1表示Sticky。在配置这些属性时还是使用chmod命令。

当前目录目前情况:

[root@centos6 ~/tmp]# ll
total 52
drwxr-xr-x 2 root root 4096 Feb 15 22:47 test2
drwxr-xr-x 2 root root 4096 Feb 15 22:47 test3
drwxr-xr-x 2 root root 4096 Feb 15 22:46 test4
drwxr-xr-x 2 root root 4096 Feb 15 22:46 test5
-r-xr-xr-x 1 root root 5120 Feb 15 22:46 test6
-r-xr-xr-x 1 root root 3072 Feb 15 22:50 test7
drwxr-xr-x 2 root root 4096 Feb 15 22:56 test1
-r-xr-xr-x 1 root root 6144 Feb 15 22:48 test8
-r-xr-xr-x 1 root root 9216 Feb 15 22:51 test9

为文件test6增加SUID属性
[root@centos6 ~/tmp]# chmod u+s test6

l 为文件test8增加SUID属性。在使用数字表示时,原来的三位不变,只是增加了一个千位专门用于SUID、SGID、Sticky属性。下面的4就是SUID属性
[root@centos6 ~/tmp]# chmod 4555 test8

l 为目录test2增加SGID属性。
[root@centos6 ~/tmp]# chmod g+s test2/

l 为目录test3增加SGID属性。
[root@centos6 ~/tmp]# chmod 2755 test3/

l #为文件test7增加SUID和SGID属性,6=4(SUID)+2(SGID)。
[root@centos6 ~/tmp]# chmod 6555 test7

l 为目录test4增加Sticky属性。
[root@centos6 ~/tmp]# chmod o+t test4/

l 为目录test5增加Sticky属性。
[root@centos6 ~/tmp]# chmod 1755 test5/

l 为目录test1增加SGID和Sticky属性,3=2(SGID)+1(Sticky)
[root@centos6 ~/tmp]# chmod 3755 test1/

l 执行上述更改命令后当前目录的情况。
[root@centos6 ~/tmp]# ll
total 52
drwxr-sr-x 2 root root 4096 Feb 15 22:47 test2
drwxr-sr-x 2 root root 4096 Feb 15 22:47 test3
drwxr-xr-t 2 root root 4096 Feb 15 22:46 test4
drwxr-xr-t 2 root root 4096 Feb 15 22:46 test5
-r-sr-xr-x 1 root root 5120 Feb 15 22:46 test6
-r-sr-sr-x 1 root root 3072 Feb 15 22:50 test7
drwxr-sr-t 2 root root 4096 Feb 15 22:56 test1
-r-sr-xr-x 1 root root 6144 Feb 15 22:48 test8
-r-xr-xr-x 1 root root 9216 Feb 15 22:51 test9

l 取消目录test1的SGID属性。
[root@centos6 ~/tmp]# chmod g-s test1/
在使用umask命令显示当前的权限掩码时,千位的“0”就是表示SUID、SGID、Sticky属性。
提示:在有些资料上SUID、SGID被翻译为“强制位”,Sticky被翻译为“冒险位”。

原创文章,作者:zhaobenshan,如若转载,请注明出处:http://www.178linux.com/82849

(0)
zhaobenshanzhaobenshan
上一篇 2017-07-27
下一篇 2017-07-27

相关推荐

  • Bob大叔和Jim Coplien对TDD的论战

    今年春节时,我写了一篇《TDD并不是看上去的那么美》,在这篇文章中我列举了一些关于使用TDD的一些难点和对TDD的质疑,后来出现了一些争论(可参见那篇文章的评论),以及Todd同学的《TDD到底美不美》,还有infoQ中文上的那个几乎没有营养离线讨论。今天,有网友给我推来一个英文版infoQ的视频——“Coplien and Martin Debate TD…

    Linux干货 2016-08-15
  • Centos图形界面和命令行界面切换—-使用init

    1、从图形界面切换到命令行界面      点击Applications–System Tools–Terminal。    打开后输入: su root(运行init需要管理员权限) 按回车,输入init 3或者init 2都可以,然后回车就可以    进入命令行界…

    Linux干货 2015-11-10
  • 马哥教育网络班22期+第七周课程练习

    1、创建一个10G分区,并格式为ext4文件系统;   (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (uti…

    Linux干货 2016-11-07
  • 马哥教育网络班20期+第二周课程练习

    linux 中一切皆文件,我们所做的一切都是和文件打交道。   文件分为两部分:元数据和数据           元数据: 即真实数据的属性。可用 stat  命令查看       &nbs…

    Linux干货 2016-06-23
  • 逻辑卷的命令解析

    前言    lvm是logical volume manager(逻辑卷管理器)的简称,通过将若干个磁盘分区连接成一个整块的卷组(volumegroup),形成一个存储池,管理员可以在卷组上随意创建逻辑卷(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按…

    Linux干货 2016-08-30
  • httpd服务归纳:网络服务基础篇

    一、网络传输基础     1. 套接字:两类          1) Unix Sock: 一种本地文件系统          2) Socket: IP port (I…

    Linux干货 2015-05-04