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

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

  1. Linux的chattr与lsattr命令详解

    Linux的chattr与lsattr命令详解 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. ...

  2. Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

    Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...

  3. Linux设置程序开机自启动,系统命令chkconfig及linux /etc/rc.d/目录的详解

     整理了linux下程序开启几种方式,转载相关博客做统一记录 <linux程序设置开机自启动>转载自:https://www.cnblogs.com/flcz/p/7691532.html ...

  4. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  5. (转)Linux 开机引导和启动过程详解

    Linux 开机引导和启动过程详解 编译自:https://opensource.com/article/17/2/linux-boot-and-startup作者: David Both 原创:LC ...

  6. Linux 文件系统相关的基本概念

    本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...

  7. LINUX的磁盘管理du命令详解

    LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...

  8. linux mount命令参数及用法详解

    linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...

  9. Oracle权限管理详解

    Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...

随机推荐

  1. Noip模拟57 2021.9.20

    规律总结:联考必爆炸 T1 2A 没$A$掉的大水题,但是是真的不知道$000$前面的$00$也算先导$0$,以后要长记性,这种东西不能再错了 再打三遍: $000$前面的$00$也算先导$0$ $0 ...

  2. 要想玩转FPGA,按这4个步骤来

    FPGA 作为一种高新技术,由于其结构的特殊性,可以重复编程,开发周期较短,越来越受到电子爱好者的青睐,其应用已经逐渐普及到了各行各业.因此,越来越多的学生或工程师都希望跨进FPGA的大门掌握这门技术 ...

  3. 嵌入式STM32的GPIO口工作模式的介绍

    一.输入模式 1. 浮空输入 浮空输入模式下,上拉和下拉两个开关断开,高或低电平通过施密特触发器到达输入数据寄存器,CPU可以通过读取输入数据寄存器从而读取到外部输入的高低电平值. 2. 输入上拉模式 ...

  4. Spring Cloud Gateway夺命连环10问?

    大家好,我是不才陈某~ 最近有很多小伙伴私信我催更 <Spring Cloud 进阶>,陈某也总结了一下,最终原因就是陈某之前力求一篇文章将一个组件重要知识点讲透,这样导致了文章篇幅很长, ...

  5. live555 rtsp直播卡顿马赛克优化

    最近搞了个rtsp直播,初步是能用了,但是最终效果不是很好,客户不接受要求我们一定要继续优化. 原因是他们体验的时候发现会概率性出现马赛克和画面卡顿情况,经过我们测试验证,确实是有这个问题存在. 从原 ...

  6. java中Map及Map.Entry详解

    Map是java中的接口,Map.Entry是Map的一个内部接口. Map提供了一些常用方法,如keySet().entrySet()等方法. keySet()方法返回值是Map中key值的集合:e ...

  7. c++ IO库

    1:为了支持使用宽字符的语言,标准库定义了一组类型和对象来操作wchar_t类型的数据.宽字符版本的类型和函数的名字以w开头.宽字符版本和普通的char版本定义在同一个头文件中,例如头文件fstrea ...

  8. Spring Cloud Gateway实战之二:更多路由配置方式

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. mongo笔记

    获取stats from pymongo import MongoClient client = MongoClient() db = client.test # print collection s ...

  10. adduser vs useradd

    Always use adduser (and deluser when deleting users) when you're creating new users from the command ...