您的位置:首页 > 其它

文件特殊权限

2016-05-12 21:41 239 查看

一、SUID

案例



psswd的所有者(root)权限不是所谓的rwx,而是rws,这有什么特殊含义没,我们再来看看下一个文件



这个文件就是我们前面说的过的存放用户密码的文件,但是我们发现这个文件的所有权限是关闭的(当然这对root用户无效)

这时会出现一个问题,passwd命令对于普通用户是可执行的。当普通用户执行passwd来修改密码时,那么passwd的执行者将是普通用户。而passwd操作对象应该是shadow文件,它需要将用户的密码保存进shadow文件。从上面的图中可知shadow文件是被禁止修改的。那么可以简单的来说普通用户是如何修改shadow文件的。

要求

这有可执行程序设定SUID才有意义

命令的执行者拥有该文件的执行该权限

当命令执行者执行该文件时,将会临时获得该文件所有者身份(简单的理解就是变身)

当程序执行完,又恢复本尊

解决案例

当普通用户执行passwd命令时,会“变身”为root用户,而root用户是无视规则的,可以直接修改shadow文件,那么passwd程序也就有了可以修改该文件的权限。我们可以对比cat命令来看。



当我用普通用户来执行cat命令



直接被拒绝,这是因为cat并没有让普通用户变身的能力

setuid的使用

  增加S权限

chmod 4755 文件名

chmod u+s 文件名

  取消权限

chmod 755 文件名

chmod u-s 文件名

实践

让普通用户可以查看shadow,注意这很危险







二、SGID

SetGID与SetUID有类似地方,也有不同的地方。SetUID主要是对可执行程序而言,而SetGID不仅对文件有作用,而且对目录也有作用。作用对象为文件时,用户的所属组会变身为文件所属组,我们来看一个典型的例子。

案例



locate命令的组权限是开启SGID的,我们知道locate是查看数据库来进行文件定位的,我们来看下数据库。



我们看到普通用户是没有读权限,但是普通用户是可以执行locate命令来查看文件的。这是因为普通用户在执行locate命令时,它的所属组变为了slocate,而mlocate.db的组权限是开启读的。所以普通用户也可以查看数据库了。

对目录的作用



命令使用

设定SGIG

    chmod 2755 文件名

    chmod g+s 文件名

取消SGID

    chmod 755 文件名

    chmod g-s 文件名

三、SBIT权限

SBIT(黏着位)只对目录有效

普通用户对该目录拥有w和x权限,即普通用户在此目录拥有写入权限

如果没有黏着位,由于普通用户对该目录用户写权限,那么它可以删除该目录下的所有文件,但是一旦有了黏着位,那么它只能删除自己建立的文件。

案例



我们看到在其它权限中有了个t字符,则说明tmp开启了SBIT权限

命令使用

设定SBIT

    chmod 1755 目录名

    chmod o+s 目录名

取消SBTI

    chmod 755 目录名

    chmod o-s 目录名

四、文件属性

前面介绍的几种权限管理对ROOT用户是无效的,但是如果更改文件属性,则会对ROOT用户产生影响

chattr 选项 参数 文件/目录

选项 + - =

参数 i a

当参数为i 时,如果是文件那么所有用户只能查看该文件内容,不能做任何其它操作。如果是目录,那么能且只能修改该目录下的文件中的数据。

当参数为a时,如果是文件只能增加数据。如果是目录,只允许在目录中创建文件和修改文件的权限和内容

abc是个文件



test是个目录,在查看属性时需要加-d



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: