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 有如下的功能:
SGID 对二进制程序有用;
程序执行者对于该程序来说,需具备 x 的权限;
执行者在执行的过程中将会获得该程序群组的支持
如果对目录来说,SGID有如下的功能
用户若对于此目录具有 r 与 x 的权限时,该用户能够进入此目录;
用户在此目录下的有效群组(effective group)将会变成该目录的群组;
用途:若用户在此目录下具有 w 的权限(可以新建文件),则使用者所建立的新文件,该新文件的群组与此 目录的群组相同。
SBIT
第三组的x变成t,表示有SBIT权限,仅对目录有效
当用户对于此目录具有 w, x 权限,亦即具有写入的权限时;
当用户在该目录下建立文件或目录时,仅有自己与 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 :如果接的是目录,仅列出目录本身的属性而非目录内的文件名;