hallnakulaos

导航

linux随笔系列4----文件属性

文件属性

文件权限

ls -l 文件名/目录名
eg: ls -l /

 

 

 

 

第一列第一个字符是文件类型,前面说过了

第一列第2-10字符是文件权限

第二列表示链接数,表示有多少个文件链接到inode号码

第三列表示拥有者

第四列表示所属群组

第五列表示文档容量大小,单位字节

第六列表示文档最后修改时间

第七列表示文档名称。以点(.)开头的是隐藏文档

 

  • 文件权限分组

文件权限可以分为三组,每三个为一组

o 第一组为文件拥有者可具备的权限,即owner

o 第二组为加入此群组之账号的权限,即group

o 第三组为非本人且没有加入本群组之其他账号的权限,即others

  • 文件权限类型

文件权限有六种情况:r,w,x,s,t,-

一般情况下都是r,w,x,-

  • 每组第一个位置

    r 可读

    - 没有对应权限

  • 每组第二个位置

    w 可写

    - 没有对应权限

  • 每组第三个位置

    x 对于文件而言,可执行;对于目录而言,可进入此目录

    - 没有对应权限

但是有时候每组的第三个位置x会变成s,t

  • SUID

第一组的x变成s,表示有SUID权限,仅对二进制程序(binary program)有效

· 执行者对于该程序需要具有 x 的可执行权限;

· 本权限仅在执行该程序的过程中有效 (run-time);

· 执行者将具有该程序拥有者 (owner) 的权限。

  • SGID

第二组的x变成s,表示有SGID权限

  • 如果是对文件来说, SGID 有如下的功能:

    1. SGID 对二进制程序有用;

    2. 程序执行者对于该程序来说,需具备 x 的权限;

    3. 执行者在执行的过程中将会获得该程序群组的支持

  • 如果对目录来说,SGID有如下的功能

    1. 用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;

    2. 用户在此目录下的有效群组(effective group)将会变成该目录的群组;

    3. 用途:若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此 目录的群组相同。

  • SBIT

第三组的x变成t,表示有SBIT权限,仅对目录有效

  1. 当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;

  2. 当用户在该目录下建立文件或目录时,仅有自己与 root 才有权力删除该文件

 

eg:

下面有两个目录,对其操作需要的最小权限

/dir1/file1

/dir2

 

 

q1:为什么执行上述操作大部分都不要求/dir1需要r权限

特别注意这里是说要求的最小权限 我们可以假设目录/dir1是个有锁的抽屉,文件file1是一本书

r代表这个抽屉有灯光,你就可以看见这个抽屉里面的这本书

w代表着你可以给这个抽屉添加书籍,拿走书籍

x代表着你有打开这个抽屉的钥匙

删除一个文件(拿走这本书)意味着你肯定需要先打开这个抽屉,也就是需要x权限,拿书这个动作需要w权限,至于有没有灯光不重要,我可以摸黑拿走

 

文件权限总结

q1:让用户能进入某目录成为『可工作目录』的基本权限为何?

可使用的指令:例如 cd 等变换工作目录的指令;

目录所需权限:用户对这个目录至少需要具有 x 的权限

额外需求:如果用户想要在这个目录内利用 ls 查阅文件名,则用户对此目录还需要 r 的权限。

q2:用户在某个目录内读取一个文件的基本权限为何?

可使用的指令:cat, more, less

目录所需权限:用户对这个目录至少需要具有 x 权限;

文件所需权限:使用者对文件至少需要具有 r 的权限才行!

q3:让使用者可以修改一个文件的基本权限为何?

可使用的指令:例如 nano ;

目录所需权限:用户在该文件所在的目录至少要有 x 权限;

文件所需权限:使用者对该文件至少要有 r, w 权限

q4:让一个使用者可以建立一个文件的基本权限为何?

目录所需权限:用户在该目录要具有 w,x 的权限,重点在 w

q5:让用户进入某目录并执行该目录下的某个指令之基本权限为何?

目录所需权限:用户在该目录至少要有 x 的权限;

文件所需权限:使用者在该文件至少需要有 x 的权限

文件的三个重要时间

  • modification time (mtime): 当该文件的内容数据变更时,就会更新这个时间!内容数据指的是文件的内容,而不是文件的属性或权限

  • status time (ctime): 当该文件的状态 (status)改变时,就会更新这个时间。权限与属性被更改了,都会更新这个时间

  • access time (atime): 当该文件的内容被取用时,就会更新这个读取时间 (access)。读取该文件, 就会更新该文件的 atime 了。

文件隐藏属性

chattr

设置文件隐藏属性

chattr +-= 文件或目录名称 选项与参数:

  • :增加某一个特殊参数,其他原本存在参数则不动。

  • :移除某一个特殊参数,其他原本存在参数则不动。 = :设定一定,且仅有后面接的参数

A :当设定了 A 这个属性时,若你有存取此文件(或目录)时,他的访问时间 atime 将不会被修改,可避免 I/O 较慢的机器过度的存取磁盘。(目前建议使用文件系统挂载参数处理这个项目)

S :一般文件是异步写入磁盘的(原理请参考前一章 sync 的说明),如果加上 S 这个属性时,当你进行任何文件的修改,该更动会『同步』写入磁盘中。

a :当设定 a 之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有 root 才能设定这属性

c :这个属性设定之后,将会自动的将此文件『压缩』,在读取的时候将会自动解压缩,但是在储存的时候,将会先进行压缩后再储存(看来对于大文件似乎蛮有用的!)

d :当 dump 程序被执行的时候,设定 d 属性将可使该文件(或目录)不会被 dump 备份

i :这个 i 可就很厉害了!他可以让一个文件『不能被删除、改名、设定连结也无法写入或新增数据!』 对于系统安全性有相当大的帮助!只有 root 能设定此属性

s :当文件设定了 s 属性时,如果这个文件被删除,他将会被完全的移除出这个硬盘空间,所以如果误删了,完全无法救回来了喔!

u :与 s 相反的,当使用 u 来配置文件案时,如果该文件被删除了,则数据内容其实还存在磁盘中,可以使用来救援该文件喔!

注意 1:属性设定常见的是 a 与 i 的设定值,而且很多设定值必须要身为 root 才能设定

注意 2:xfs 文件系统仅支援 AadiS

lsattr

查看文件隐藏属性

lsattr [-adR] 文件或目录

-a :将隐藏文件的属性也秀出来;

-d :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;

-R :连同子目录的数据也一并列出来!

posted on 2023-08-01 20:00  想写文章的路人甲  阅读(33)  评论(0编辑  收藏  举报