Linux笔记(43)——文件特殊权限

来源:互联网 发布:qq群举报软件 编辑:程序博客网 时间:2024/05/22 14:17

  • 三个特殊权限
  • SetUID
    • 设定SetUID权限
    • 例子
    • SetUID的危险
  • SetGID
    • 设定SGID
    • SGID对文件的作用
    • SGID对目录的作用
  • Sticky BIT
    • 设定SBIT
    • 例子
  • 注意

三个特殊权限

  1. SetUID:给u(所有者)赋予s权限
  2. SetGID:给g(所属组)赋予s权限
  3. Sticky BIT:给o(其他人)赋予t权限

SetUID

SetUID也叫SUID

他的功能有:

这里写图片描述

设定SetUID权限

  1. chmod 4755 文件名 :4表示s权限
  2. chmod u+s 文件名
  3. chmod u-s 文件名
  4. chmod 0755 文件名

赋予SUID权限后,权限串中会有s,并且文件名会变成红色,提示你这不安全(SUID是不安全的权限)

这里写图片描述

SUID权限的文件,必须是可执行文件,否则s会变成大写的S,表示这是不正确的权限

例子

/etc/shadow文件保存的是所有用户的密码,我们看这个文件,发现它的权限是000,只有root用户可以修改它

这里写图片描述

那么,普通用户能修改自己的密码吗?当然可以。但是普通用户没有shadow这个文件的权限,如何修改密码?

我们一般使用passwd命令来修改密码,看看这个命令文件

这里写图片描述

我们发现passwd这个文件是有s权限的。

请回头看上面SUID功能的第三句话:命令执行者在执行该程序时,将拥有文件所有者的身份。

passwd文件所有者是root,那么普通用户在执行这个命令时,将会拥有root的身份,也就可以修改/etc/shadow文件,也就是可以修改密码了。

那么普通用户能修改别人的密码吗?

当然不行,passwd命令不允许普通用户在后面加参数

这里写图片描述

SetUID的危险

如果我们给vi这个命令文件赋予s权限,那么普通用户在执行vi命令时,会瞬间拥有这个文件所有者的身份,也就是拥有root身份,那么这个用户就可以编辑系统中任何一个文件,这是十分危险的

注意:绝对不允许手动给系统文件赋予SUID权限

因此我们需要遵守一些原则:

这里写图片描述

SetGID

也叫SGID权限

SUID只针对执行文件,SGID对文件和目录都有作用

设定SGID:

chmod g+s 文件名
chmod 2755 文件名:2表示SGID

SGID对文件的作用

这里写图片描述

SGID对文件的作用与SUID的区别在于:

执行时,SGID拥有所属组的身份,SUID是拥有所有者的身份

SGID对目录的作用

这里写图片描述

例如:
root用户创建一个目录abc,这个目录的所有者和所属组都是root

这里写图片描述

然后使用user1用户进入该目录,创建一个文件test1,那么这个文件的所有者和所属组都是user1

这里写图片描述

再使用root用户为abc目录赋予SGID权限

这里写图片描述

再用user1创建文件test2,发现这个文件的所属组变成了root,和目录abc所属组一致

这里写图片描述

和SUID一样SGID是不安全的,不要自行去赋予

Sticky BIT

也叫SBIT权限和粘着位权限

这里写图片描述

注意:SBIT要求为目录的o赋予7权限,很危险,所以不建议赋予SBIT权限

设定SBIT

  1. chmod 1755 文件名:1表示SBIT
  2. chmod o+t 文件名:注意,这里是t,不是s

例子

假设root用户创建了一个abc目录,将权限改为777,为了让普通用户也能进入这个目录。

并且root用户创建了一个test1文件,这个文件默认所有者是root,所属组也是root

这时候普通用户user1进入这个abc目录,发现了test1文件,执行删除操作,居然把这个文件成功删除了,因为普通用户对这个目录有7的权限,所以他可以删除这个目录下的文件。

但是这个文件是root用户创建的啊,这让人很不爽,因此就有了SBIT权限

只要给这个abc目录赋予SBIT权限,user1就只能删除自己创建的文件,别人创建的文件就删除不了。 这也就是SBIT权限的作用

/tmp/目录就有SBIT权限,作用是防止用户删除其他用户的临时文件

注意

不要随便赋予SUID,SGID,SBIT权限,很危险

0 0