1、SUID ,是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有所有者的权限(仅对拥有执行权限的二进制程序有效)。

(1)SUID权限仅对二进制程序有效;
(2)本权限仅在执行该程序的过程中有效;
(3)执行者将具有该程序所有者的权限。

场景1:在Linux中,所有账号的密码记录在/etc/shadow这个文件中,并且只有root可以读和强制写入这个文件。那么,如果另一个账号需要修改自己的密码,就需要访问/etc/shadow这个文件,但是只有root能访问/etc/shadow这个文件?但是其他用户可以通过passwd命令修改/etc/shadow这个文件内的密码的,这就是SUID的功能。

[es@bigdata-senior01 ~]$ ll /etc/shadow
---------- 1 root root 2302 1月 11 14:04 /etc/shadow [es@bigdata-senior01 ~]$ ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd passwd的所有者x位值是s,说明是SUID权限,普通用户在使用passwd命令的过程中,可以获得passwd命令所有者的权限,即root权限,仅限passwd命令执行过程。

2、SGID,用户组特殊权限。

2.1 当s标志出现在文件所有者的x权限时称为SUID,那么s出现在用户组的x权限时称为SGID。(U表示user,G表示group)。SGID有如下功能:

(1)SGID对二进制程序有用;
(2)程序执行者对该程序需具备x权限;
(3)执行者在执行过程中会获得该程序用户组的支持。

场景1:/usr/bin/locate这个程序可以去查询/var/lib/mlocate/mlocate.db这个文件的内容

[es@bigdata-senior01 ~]$ ll /usr/bin/locate
-rwx--s--x 1 root slocate 40520 4月 11 2018 /usr/bin/locate [es@bigdata-senior01 ~]$ sudo ls -l /var/lib/mlocate/mlocate.db
-rw-r----- 1 root slocate 3522235 1月 11 10:31 /var/lib/mlocate/mlocate.db locate命令在用户组的x位上是s权限,mlocate.db在用户组上是读权限,所以es用户通过locate命令获取了slocate组的临时权限,即读取权,
那么es用户就可以正常读取mlocate.db的数据来查找文件。

2.2 SGID也可以用目录上。当一个目录设置了SGID权限后,它具有如下功能:

(1)用户若对此目录具有r和x权限,该用户能够进入该目录;
(2)用户在此目录下的有效用户组将变成该目录的用户组;
(3)若用户在此目录下拥有w权限,则用户所创建的新文件的用户组与该目录的用户组相同。

场景2:需要在一个部门内设置共享目录,让部门内的所有人员都能够读取目录中的内容,那么就可以创建部门共享目录后,在该目录上设置 SGID 特殊权限位。

这样,部门内的任何人员在里面创建的任何文件都会归属于该目录的所属组,而不再是自己的基本用户组。

[es@bigdata-senior01 tmp]$ mkdir myshare

[es@bigdata-senior01 tmp]$ ll myshare -d
drwxrwxr-x 2 es es 6 1月 11 16:14 myshare [es@bigdata-senior01 tmp]$ chmod -R 777 myshare
[es@bigdata-senior01 tmp]$ ll myshare -d
drwxrwxrwx 2 es es 6 1月 11 16:14 myshare [es@bigdata-senior01 tmp]$ chmod -R g+s myshare
[es@bigdata-senior01 tmp]$ ll myshare -d
drwxrwsrwx 2 es es 6 1月 11 16:14 myshare [es@bigdata-senior01 tmp]$ cd myshare
[es@bigdata-senior01 myshare]$ ls
[es@bigdata-senior01 myshare]$ su
密码:
[root@bigdata-senior01 myshare]# touch 1.txt
[root@bigdata-senior01 myshare]# ll
总用量 0
-rw-r--r-- 1 root es 0 1月 11 16:18 1.txt
[root@bigdata-senior01 myshare]# su xu.dm
[xu.dm@bigdata-senior01 myshare]$ touch 2.txt
[xu.dm@bigdata-senior01 myshare]$ ll
总用量 0
-rw-r--r-- 1 root es 0 1月 11 16:18 1.txt
-rw-rw-r-- 1 xu.dm es 0 1月 11 16:18 2.txt 可以看到新建的文件用户组都是es组

3、SBIT 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件,只对目录有效。

(1)当用户对此目录具有w和x权限时,即具有写入权限时;
(2)当用户在该目录下创建新文件或目录时,仅有自己和root才有权力删除。

场景:共享目录里,只能删除自己创建或上传的文件,除了root其他人不能删除

[es@bigdata-senior01 tmp]$ chmod o+t myshare
[es@bigdata-senior01 tmp]$ ll myshare -d
drwxrwsrwt 2 es es 32 1月 11 16:18 myshare [xu.dm@bigdata-senior01 myshare]$ rm 1.txt
rm:是否删除有写保护的普通空文件 "1.txt"?y
rm: 无法删除"1.txt": 不允许的操作 rm:是否删除有写保护的普通空文件 "1.txt"?y
[es@bigdata-senior01 myshare]$ ll
总用量 0 目录的所有者es,可以删除被保护的文件,其他用户(非root)不能删除。

4、关于SUID,SGID,SBIT权限设置

和rwx的421类似,suid,sgid,sbit也是421
SUID->4
SGID->2
SBIT->1

假设要将一个文件权限修改为“-rwsr-xr-x”,由于s在用户权限中,所以是SUID,因此,原先的755前面还要加上4,也就是4755,所以,
用命令chmod 4755 filename 设置就可以了。如果文件同时具备SUID和SGID,则权限变成4+2=6,即chmod 6755 filename。

此外,还可能出现S和T的情况。
s和t是替代x这个权限的,但是,如果它本身没有x这个权限,修改为s或t时就会变成大S或大T。

例如:
执行chmod 7666 filename。 因为666表示“-rw-rw-rw”,均没有x权限,所以最后变成“-rwSrwSrwT”。

另外也可以使用chmod u+s filename ,chmod g+s filename ,chmod o+t filename的方式来添加权限。

CentOS 文件特殊权限SUID,SGID,SBIT的更多相关文章

  1. Linux 文件特殊权限 SUID SGID SBIT

    文件除了常规的权限r, w, x 还有一些特殊的权限,s与t权限,具体的用处如下 1 SetUID 当s 这个标志出现在文件所有者的x权限上时, 例如/usr/bin/passwd, [root@or ...

  2. Linux 特殊权限 SUID,SGID,SBIT

    setuid 和 setgid 分别是 set uid ID upon execution 和 set group ID upon execution 的缩写.我们一般会再次把它们缩写为 suid 和 ...

  3. chmod 4777? 文件特殊权限 SUID SGID StickyBit

    故事引入 今天碰到了一条指令, test 怎么在777前还有一位,颠覆了我的认知啊,这时候必须翻鸟哥神书了,找到一个链接<7.4.3 文件特殊权限:SUID/SGID/Sticky Bit> ...

  4. 【Linux】文件特殊权限 SUID/SGID/Sticky Bit

    linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是setuid.setgid和stick bit 1.setuid.setgid 先看个实例,查看你的/usr/b ...

  5. linux 文件三大特殊权限(SUID SGID SBIT)

    SGID(这个应该是文件共享里面最常用权限管理手段) 作用于目录或可执行程序,作用于目录代表在此目录创建的文件或目录,默认的属组继承此目录的属组.例如 我这个testgroup 没有设置SGID .我 ...

  6. centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln 内部命令和外部命令 第五节课

    centos 特殊权限 各种搜索命令 lsattr ,chattr,suid,sgid,sbit,file,type是否是内置命令,stat文件属性 ,whereis,locate,find,ln   ...

  7. Linux文件与目录的默认权限与隐藏权限 - umask, chattr, lsattr, SUID, SGID, SBIT, file

    文件默认权限:umask [root@www ~]# umask 0022 <==与一般权限有关的是后面三个数字! [root@www ~]# umask -S u=rwx,g=rx,o=rx ...

  8. 文件的特殊权限(SUID,SGID,SBIT)

    文件的一般权限:r w x  对应 421  文件的特殊权限:SUID SGID SBIT对应 421  文件的隐藏权限:chattr设置隐藏权限,lsattr查看文件的隐藏权限. 文件访问控制列表: ...

  9. Linux之特殊权限(SUID/SGID/SBIT)

    特殊权限的介绍 Set UID 当s这个标志出现在文件所有者的x权限上时,如/usr/bin/passwd这个文件的权限状态:“-rwsr-xr-x.”,此时就被称为Set UID,简称为SUID.那 ...

随机推荐

  1. 正则表达式 match 和 exec 比较

    match 和 exec 主要有两点不同: 1.exec是正则表达式的方法,而不是字符串的方法,它的参数才是字符串,如下所示: var re=new RegExp(/\d/); re.exec( &q ...

  2. With great power comes great responsibility

    We trust you have received the usual lecture from the local SystemAdministrator. It usually boils do ...

  3. Java ClassLoader深入讲解(转)

    当JVM(Java虚拟机)启动时,会形成由三个类加载器组成的初始类加载器层次结构: bootstrap classloader                |       extension cla ...

  4. jQuery写选项卡

    <!DOCTYPE html> <htmllang="en"> <head> <metacharset="UTF-8" ...

  5. Vue语法学习第一课——插值

    学习关于Vue的插值语法 ① 文本值 : "Mustache"语法,即双大括号 <span>Message:{{msg}}</span> 注:双大括号中的m ...

  6. Mac os查看链接过的ssh key

    https://shipengliang.com/software-exp/mac-os-如何管理ssh-key.html

  7. 吴恩达机器学习笔记13-正规方程(Normal Equation)

    到目前为止,我们都在使用梯度下降算法,但是对于某些线性回归问题,正规方程方法是更好的解决方案.如: 即: 运用正规方程方法求解参数: 注:对于那些不可逆的矩阵(通常是因为特征之间不独立,如同时包含英尺 ...

  8. java官网真不错

    要用到一个软件,打开时说没找到javaw,然后大家说这是因为没安装java,就按着链接去了java官网 https://www.java.com/zh_CN/download/faq/remove_o ...

  9. java socket编程中backlog的含义(zz)

    使用Java.NET.ServerSocket能够方便的创建一个服务端套接字,这个类的构造函数有一个参数backlog.下面这段代码,在本机的8888端口上建立了一个套接字,backlog设置为5. ...

  10. TFS online build change web.config

    概要 TFS online 自动编译时如何修改web.config ref:https://dustinoprea.com/2016/05/06/using-tokenization-token-re ...