Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)

时间:2021-10-02 16:26:01

 

 

Linux中的文件属性

ls -lih
包括:索引节点(inode),文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,文件名等等 索引节点:相当于身份证号,系统唯一,系统读取文件时首先通过文件名找到inode,然后才能读取到文件内容 硬链接:文件的访问入口,相当于房子的多个门 用户和用户组:linux里面文件和程序的存在必须要有用户和用户组以满足相应的存在需求

 

 

1. 磁盘系统的inode和block(inode索引节点,block存储块存放文件内容;通过inode找到文件的block)

    硬盘要存储数据,首先要分区,然后格式化创建文件系统,最后存入数据

inode(index node)。在每个linux存储设备或存储设备的分区(存储设备可以是硬盘,软皮,u盘...)被格式化为ext4或其他格式的文件系统后,一般都有两部分:1,inode(很多个);2,block(很多个)

Block是用来存储实际数据用的,例如:照片,视频等普通文件数据

而Inode除了记录文件属性的信息外,inode属性信息包括但不限于文件类型,权限属性,硬链接数,所归属的用户和用户组,文件大小,最近修改时间,还包含指向文件实体的指针的功能(inode节点--block的对应关系),
操作系统根据指令,即可通过inode的值最快的找到相应的文件实体。;但是,inode里面唯独不包含文件名

Inode本身是有大小的,CentOS6系列 inode的默认大小是256字节;inode的大小是在分区被格式化创建文件系统之后定下来的,格式化以后就无法更改inode大小
磁盘空间是否满了,是由两项参数(inode、block)决定的
磁盘满的特征(no space left on device )

Inode记录文件属性信息和指向文件实体
    ① 磁盘被分区并格式化为ext4或其他格式文件系统后会生成一定数量的inode和block
    ② inode称为索引节点,用以存放文件的属性以及作为文件的索引,指向文件的实体
    ③ inode是磁盘上的一块存储空间,C6非启动分区inode默认大小256字节,C5是128字节
    ④ inode的表现形式是一串数字,不同的文件对应的inode在文件系统里是唯一的
    ⑤ inode节点号相同的文件互为硬链接文件,可以理解为是一个文件的不同访问入口
    ⑥ ext3/ext4文件系统下,一个文件创建后至少要占用1个inode和1个block
    ⑦ inode大小和总量的查看(ls -i,stat 文件名;df -i;dumpe2fs /dev/sda3 |grep -i "inode size")
    ⑧ 如何生成及指定inode大小,格式化命令:mkfs.ext4 -b 2048 -I 256 /dev/sdb;-b指定block大小,-I指定inode大小
    ⑨ 默认情况下,block数量大于inode数量
    
Block是用来存储实际数据用的,例如:照片,视频等普通文件数据
    ① 磁盘读取数据是按block为单位读取的
    ② 1个文件可能占用多个block,但是每读取1个block就会消耗一次磁盘I/O
    ③ 如果要提升磁盘I/O性能,那么就要尽可能1次性读取数据尽量的多,即block大些
        例如:1000k的文件,block为4k,占用250次block,block为1k,占1000个block,访问效率谁更高?
    ④ 1个block只能存放1个文件的内容,无论内容有多小;如果block默认是4k大小,那么存放1个1k文件,剩余的3k就不能存放别的文件,只能浪费了
    ⑤ Block并非越大越好,block太大对于小文件存放就会浪费磁盘空间    
        block太大,例如4k,文件都是0.1k,会大量浪费磁盘空间
        block太小,例如1k,文件都是1000k,消耗磁盘I/O
    ⑥ 大文件(大于16k)一般设置block大一点,小文件(小于1k)一般设置block小一点
    ⑦ block的设置也是在格式化分区的时候,mkfs.ext4 -b 2048 -I 256 /dev/sdb;-b指定block大小,-I指定inode大小
    ⑧ block的大小一般有1k,2k,4k几种。其中引导分区等为1k,其他普通分区为4k(C6)
    ⑨ 现实情况下,根据业务需求选择,确定默认的block大小,如果是大文件(大于16k)一般设置block大一点,小文件(小于1k)一般设置block小一点

    
总结:
    ① 磁盘被分区格式化文件系统后,会分为inode和block两部分
    ② inode存放文件的属性已经指向文件实体的指针,文件名不在inode里,一般在上级目录的block里
    ③ 访问文件,通过 文件名-->inode-->blocks
    ④ inode一般情况下默认大小为256B(字节),block大小1,2,4K,注意,引导分区等特殊分区除外
    ⑤ 通过df -i查看inode的数量及使用情况,dumpe2fs /dev/sda1查看inode大小等信息

 

2. Linux系统常见文件类型

f普通文件:
    1.纯文本文件(ASCII),文件内容可以直接督导数据,如配置文件等
    2.二进制文件(binary),linux中的命令程序文件,如cat命令(/bin/目录下)
    3.数据格式文件(data),存放某些命令的结果的一种数据文件,有特定的格式
        /var/log/wtmp(last命令的数据文件)
        /vat/log/lastlog(lastlog命令的数据文件)

d目录文件:

c字符设备:
    串口设备等,tty也算

b块设备:
    存放数据,如磁盘、分区

s套接口文件:
    一般用于网络通信

l符号(软)链接文件:
    相当于快捷方式

 

3. 文件的权限

r read 读取 4

w write 写入 2

x execute 执行 1

- 没有权限 0


新建目录文件默认分配权限是755

新建普通文件默认分配权限是644

 

4. 链接文件

文件的硬链接和软链接(符号链接)
    硬链接:ln 源文件 目标文件
        ① 具有相同inode节点号的多个文件互为硬链接文件
        ② 删除硬链接文件或者删除源文件任意其一,文件实体并未被删除
        ③ 只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
        ④ 当所有硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收
        ⑤ 硬链接文件就是文件实体的另一个访问入口(相当于房子的前后门)
        ⑥ 可以通过给文件设置硬链接文件来防止重要文件被误删
        ⑦ "ln 源文件 目标文件",即可完成硬链接文件的创建,系统不允许用户为目录文件创建硬链接
        ⑧ 硬链接文件可以用rm 命令删除
        ⑨ 对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件即可理解为已经被删除
        
    软链接:ln -s 源文件 目标文件
        ① 软链接类似Windows的快捷方式(可以用readlink查看其指向)
        ② 软链接类似一个文本文件,里面存放的事源文件的路径,指向源文件名
        ③ 删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径内容了
        ④ 软链接失效的时候一般是白字红底闪烁提示
        ⑤ "ln -s 源文件 目标文件",即可完成软链接创建
        ⑥ 软链接和源文件是不同类型的文件,也是不同的文件,inode号也不同
        ⑦ 软链接文件的文件类型是l,可用rm 命令删除


有关文件的链接总结:
    1. 删除软链接文件,对源文件和硬链接文件都没有影响
    2. 删除硬链接文件,对源文件和软链接文件都没有影响
    3. 删除源文件,链接文件失效,对硬链接文件没有影响
    4. 同时删除源文件和硬链接文件,整个文件会被真正删除
    5. 很多硬件设备中的快照,就是利用了硬链接的原理
    6. 源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件的多个入口
    7. 源文件和软链接文件索引节点号不同,是不同的文件,软链接文件指向源文件的文件名


有关目录的链接总结:
    1. 对于目录,不能创建硬链接,只能创建软链接
    2. 硬链接不能跨越文件系统(从硬链接原理可以理解)
    3. 每个目录下面都有一个硬链接"."号,和对应上级目录的硬链接".."
    4. 在父目录里创建一个子目录,父目录的链接数增加1(子目录里面都有..来指向父目录);但是在父目录里创建文件,父目录的链接数不会增加

 

5. 用户和用户组

linux/unix是一个多用户、多任务的操作系统
用户的角色是通过UID和GID识别的,用户的UID就相当于人的身份证,用户名相当于人的名字

UID(User Identify)
GID(Group Identity)
超级用户:
    UID:0
    默认是root用户,UID为0的用户为超级用户,
虚拟用户:
    UID:1~499
    与真实普通用户区分开来,这类用户最大的特点是安装系统后默认就会存在,且默认情况大多数不能登录系统
普通用户:
    UID:500~65535
    具备系统管理员root的权限的运维人员添加的,权限很小,一般用sudo管理提权
用户和用户组的关系:
    一对一、一对多、多对一、多对多

配置文件:/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow
    /etc/passwd
        账号、密码、UID、GID、用户说明、用户家目录、shell编辑器(cat /etc/shells)
    /etc/shadow
        账号、密码、最近更改密码时间、禁止修改密码天数、用户必须更改口令天数、警告更改密码期限、不活动时间、失效时间、标志

 

6. 文件时间

modify修改时间 -mtime    修改文件内容

access访问时间 -atime    访问文件内容

change改变时间 -ctime    文件属性改变

格式化规范显示时间:
    ls -l --time-style=long-iso