深入理解linux内核:Linux文件权限隐藏的细节深入分析

linux是个安全操作系统她是以文件为基础而设计其文件权限是比较复杂可以用stat命令以及lsattr命令来显示某个文件详细信息:



可以看到文件权限含义是比较广先来看-rwxr-xr-x位是文件类型它定义了用户只能某种方式来操作文件后面 9位是文件存取控制信息linux文件许可机制将用户分为 3类:文件属主u(user)、文件属组g(group)和其它用户o(other) 3类区别用户可以对文件拥有 3种区别级别权限:读r(read)、写w(write)和运行x(execute)于是形成了 9位权限信息分为 3组分别对应ug o除此的外用户还可以设置uid和gid位来改变执行身份用lsattr命令则可以看到文件属性控制位包括 asacddiijsttu这些也是能控制文件存取
 
由于篇幅有限不可能就这些进行分析本文着力分析文件权限中w(write)真正含义挖出其背后隐藏细节力图使读者能正确用好这个关键权限位不至于在系统管理中出现差漏
为了能更直观介绍说明问题本文采用实验操作方式进行分析为了简化操作,我们用o(other)这组权限来做实验实验中用到权限位均属于o(other), 进行操作用户均非root用户属于o(other)
 
在实验的前必须澄清个概念目录也是种文件它主要包括了两方面信息该目录下文件文件名称和文件inode编号它们的间有对应关系不过目录文件比较特殊不能用常规思路方法进行读写必须用系统专用命令来操作命令ls其实是对目录文件进行读操作命令mv,rm则是对目录文件进行写操作
 
好了该说说w(write)真正含义了句话linux文件权限中w是对该文件*内容*进行限定下面实验可以验证
实验1, 目录文件: /test(rwx), 普通文件: /test/file(r--). 当前目录:/test
linux是个安全操作系统她是以文件为基础而设计其文件权限是比较复杂可以用stat命令以及lsattr命令来显示某个文件详细信息:



试图对file内容进行改写, 但file权限是只读很显然操作失败
linux是个安全操作系统她是以文件为基础而设计其文件权限是比较复杂可以用stat命令以及lsattr命令来显示某个文件详细信息: 



没有问题, 可以读出file内容
linux是个安全操作系统她是以文件为基础而设计其文件权限是比较复杂可以用stat命令以及lsattr命令来显示某个文件详细信息:

 

这是如何回事呢, file权限明明是只读啊, 请注意, 前面提到了, 文件中rw权限只是针对当前文件内容进行限定, 文件名不属于当前文件内容, 它是保存在上目录文件内容中而mv命令表面上是针对file其实是对/test内容进行改写再看看/test权限, 是可写(rwx)许多用户为了保护文件将其权限设成只读就不管了这是非常危险诚然可以达到保护文件内容(其实也未必补充内容中有论述)但你却不能保证文件是否会被更名或被删除保险思路方法是将文件父目录权限也设为只读当然也有其他思路方法比如用chattr +i命令或将文件系统用ro方式挂载等等但这些不在本文论述范围
linux是个安全操作系统她是以文件为基础而设计
Tags:  linux用户权限 linux文件权限 linux权限 深入理解linux内核

延伸阅读

最新评论

发表评论