文件特殊权限
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的组权限是开启读的。所以普通用户也可以查看数据库了。
对目录的作用
命令使用
设定SGIGchmod 2755 文件名
chmod g+s 文件名
取消SGID
chmod 755 文件名
chmod g-s 文件名
三、SBIT权限
SBIT(黏着位)只对目录有效普通用户对该目录拥有w和x权限,即普通用户在此目录拥有写入权限
如果没有黏着位,由于普通用户对该目录用户写权限,那么它可以删除该目录下的所有文件,但是一旦有了黏着位,那么它只能删除自己建立的文件。
案例
命令使用
设定SBIT
chmod 1755 目录名chmod o+s 目录名
取消SBTI
chmod 755 目录名chmod o-s 目录名
四、文件属性
前面介绍的几种权限管理对ROOT用户是无效的,但是如果更改文件属性,则会对ROOT用户产生影响chattr 选项 参数 文件/目录
选项 + - =
参数 i a
当参数为i 时,如果是文件那么所有用户只能查看该文件内容,不能做任何其它操作。如果是目录,那么能且只能修改该目录下的文件中的数据。
当参数为a时,如果是文件只能增加数据。如果是目录,只允许在目录中创建文件和修改文件的权限和内容
abc是个文件
test是个目录,在查看属性时需要加-d
相关文章推荐
- select、poll、epoll之间的区别总结[整理]
- 链栈的基本操作
- 单链表逆向打印
- 107_ListView三个方法的抽取
- 多线程-概述
- 阅读程序2
- 遇到问题不会的时候就记下来,因为还有下次。
- FZU 2086 Redcarnation
- 实验三 进程调度模拟程序
- Sublime3快捷键大全
- 2016"百度之星" - 测试赛 1004 放盘子(水)
- 并查集知识学习
- POJ Anniversary Cake (dfs,神剪)
- nyoj 311 完全背包
- 操作系统3.0
- Java与Oracle中日期转换
- 《UNIX环境高级编程》(system)
- 监控MySQL服务是否正常
- 监控MySQL服务是否正常
- 统计多台linux主机的CPU内存swap的使用比例