Linux文件目录权限、隐藏属性、特殊权限
- 一 Linux文件及目录权限概念
- 1 查看目录或者文件的权限
- 2 目录及文件权限分析
- 3 文件与目录的默认权限umask
- 4 更改文件或者目录的属性和权限
- 二 文件与目录的隐藏属性和特殊权限
- 1 文件与目录的隐藏属性
- 2 文件的特殊权限SUIDSGIDSBIT
- 设置特殊权限的命令
一、 Linux文件及目录权限概念
1.1 查看目录或者文件的权限
“ls -al”命令可以查看
1.2 目录及文件权限分析
从上面的图中可以看到,目录或者文件的属性字段为:
- - - - - - - - - -
从左至右分别表示:文件的类型、文件(目录)拥有者的读权限(u)、文件(目录)拥有者的写权限(w)、文件(目录)拥有者的执行权限(x),后面以此类推分别为所属组和其他人的对此文件(目录)的权限。
- 第一个字符-文件类型
[d]:目录
[-]:文件
[l]:链接文件
[b]:可随机存储设备
[c]:一次性读取设备(键盘、鼠标等) - 三个为一组的权限
r:可读,用数字4表示
w:可写,用数字2表示
x:可执行,用数字1表示
对于文件来说:r表示可以读取文件里面的内容、w表示可以向文件写入内容、x表示可以执行该文件(前提是该文件是可执行文件)。
对于目录来说:r表示可以读取该目录下的文件,例如可以使用ls显示目录里面的文件、w表示可以在目录下创建文件、x表示可以进入目录,例如可以使用cd 进入一个目录。
1.3 文件与目录的默认权限umask
首先执行命令umask查看一下:
我们发现显示的是0022,那么它们代表什么意思呢?现在新建一个文件和目录,然后查看新建的文件和目录的权限。
从图中可以看出新建的f1文件权限为644,新建的目录d1权限为755,如果一个文件或者文件具有全部权限,那么它的权限为777,我们可以发现777去掉022就是755,其实umask代表的就是新建的文件或者目录去掉的权限,但是新建文件不具备执行权限,因此还要在umask的基础上再去掉执行权限!所以新建的文件权限就是644了!
1.4 更改文件或者目录的属性和权限
- chown:更改文件拥有者
- chgrp:更改文件所属组
- chmod:更改文件权限,包括后面会说到的SUID等
二 文件与目录的隐藏属性和特殊权限
2.1 文件与目录的隐藏属性
chattr设置文件隐藏属性
chattr [+-=] [ASacdistu] 其中[]代表里面的参数可选
A:存取文件时,atime不会被修改,可避免过度I/O操作
S:进行任何的文件修改都会同步到磁盘(sync)
a:这个文件只能增加数据,不能删除也不能修改文件数据,只有root才能设置这个属性
c:会自动对文件进行压缩,读取的时候回自动解压缩
d:当dump程序被执行时,可使文件不被dump备份
i:让一个文件不被删除、改名、设置链接也无法写入或新增数据
s:如果一个文件被删除,它将完全从磁盘删除
u:如果文件被删除,数据的内容还存在在磁盘中lsattr显示文件隐藏属性
lsattr [-adR] 文件或目录
-a:将文件的隐藏属性显示出来
-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件
-R:连同子目录的属性也一并显示从上图可以看出设置了i隐藏属性后,root也无法删除,必须把i属性去掉才可以删除。
2.2 文件的特殊权限SUID、SGID、SBIT
SUID(set UID)
当S出现在文件拥有者的x权限上面时,执行者在执行该文件的过程中拥有该文件拥有者的权限!例如/etc/passwd文件虽然该文件(命令)所输入和所属组都是root,但是每个人都可以修改自己的密码,因为在执行该文件(命令)的时候,设置了UID,就拥有了root权限。
SUID只对可执行文件有效!,也就是二进制文件SGID(set GID)
SGID对文件和目录都有效,其效果分别如下表述:
—-针对文件,SGID对二进制文件有效、执行者需要拥有执行文件的X权限,执行者执行过程中会获得程序文件群组的支持!
例如locate程序去查找mlocate.db数据库:从上面可以知道,locate文件(命令)的组X权限具有S权限,那么执行的人在执行locate时候将会获得slocate群组的权限,这样就可以查看mlocate.db的内容了。
—-针对目录,SGID设置在目录的X上面,如果执行者具有目录的w和x权限,那么执行者在该目录下所创建的文件具有和目录相同的所属组!
SBIT (Sticky Bit)
只对目录有效,对目录设置了SBIT之后,在目录中创建的文件只能自己和root可以删除。用鸟哥的话说:“当甲这个使用者于 A 目录是具有群组或其他人的身份,并且拥有该目录 w 的权限, 这表示“甲使用者对该目录内任何人创建的目录或文件均可进行 “删除/更名/搬移” 等动作。”不过,如果将 A 目录加上了 SBIT 的权限项目时, 则甲只能够针对自己创建的文件或目录进行删除/更名/移动等动作,而无法删除他人的文件。”可以自己试试操作!设置特殊权限的命令
4—SUID
2—SGID
1—SBIT