Linux文件系统属性和权限概念详解(包含inode、block、文件权限、文件软硬链接等)
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、文件权限、文件软硬链接等)的更多相关文章
- Linux的chattr与lsattr命令详解
Linux的chattr与lsattr命令详解 这两个命令是用来查看和改变文件.目录属性的,与chmod这个命令相比,chmod只是改变文件的读写.执行权限,更底层的属性控制是由chattr来改变的. ...
- Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)
Linux LVM逻辑卷配置过程详解 许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份.删除相关数据, ...
- Linux设置程序开机自启动,系统命令chkconfig及linux /etc/rc.d/目录的详解
整理了linux下程序开启几种方式,转载相关博客做统一记录 <linux程序设置开机自启动>转载自:https://www.cnblogs.com/flcz/p/7691532.html ...
- Linux Shell编程与编辑器使用详解
<Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...
- (转)Linux 开机引导和启动过程详解
Linux 开机引导和启动过程详解 编译自:https://opensource.com/article/17/2/linux-boot-and-startup作者: David Both 原创:LC ...
- Linux 文件系统相关的基本概念
本文介绍 Linux 文件系统相关的基本概念. 硬盘的物理组成 盘片硬盘其实是由单个或多个圆形的盘片组成的,按照盘片能够容纳的数据量,分为单盘(一个硬盘里面只有一个盘片)或多盘(一个硬盘里面有多个盘片 ...
- LINUX的磁盘管理du命令详解
LINUX的磁盘管理du命令详解 du(disk usage)命令可以计算文件或目录所占的磁盘空间.没有指定任何选项时, 它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作 ...
- linux mount命令参数及用法详解
linux mount命令参数及用法详解 非原创,主要来自 http://www.360doc.com/content/13/0608/14/12600778_291501907.shtml. htt ...
- Oracle权限管理详解
Oracle权限管理详解 转载--CzmMiao的博客生活 Oracle 权限 权限允许用户访问属于其它用户的对象或执行程序,ORACLE系统提供三种权限:Object 对象级.System 系统级. ...
随机推荐
- flutter页面间跳转和传参-Navigator的使用
flutter页面间跳转和传参-Navigator的使用 概述 flutter中的默认导航分成两种,一种是命名的路由,一种是构建路由. 命名路由 这种路由需要一开始现在创建App的时候定义 new M ...
- 晶振在电路设计时关于负载电容CL大小取值特别需要注意什么?
在无源晶体的设计中,经常遇到负载电容CL的大小取值.晶振设计与精度的提高.KHz无源晶振的停止.音叉晶体谐振器的精度漂移以及精度和无源晶振在高温下的精度是否等于低温的精度烦忧的问题等. 无源晶体振荡器 ...
- Luogu P1538 迎春舞会之数字舞蹈 | 模拟
题目链接 大水题,暴力输出,代码应该能看吧...... #include<iostream> #include<cstdio> using namespace std; int ...
- 开源项目|Go 开发的一款分布式唯一 ID 生成系统
原文连接: 开源项目|Go 开发的一款分布式唯一 ID 生成系统 今天跟大家介绍一个开源项目:id-maker,主要功能是用来在分布式环境下生成唯一 ID.上周停更了一周,也是用来开发和测试这个项目的 ...
- (三)MySQL数据管理
3.1 外键(了解即可) 方式一:在创建表的时候,增加约束(麻烦,比较复杂) CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AU ...
- Effective C++ 总结笔记(五)
六.继承与面向对象设计 32.确定你的public继承塑模出is-a关系 public继承意味着is-a.适用于base class身上的每一件事情也一定适用于derived class身上.每一个d ...
- Python基础(sorted)
arr1 = [1,2,3,-30,4,5,-6] arr2 = sorted(arr1)#sorted()函数就可以对list进行排序 arr3 = sorted(arr1,key=abs)#可以接 ...
- liunx基础知识点2:文件操作命令、系统资源查询、权限赋予命令、安装命令、解压命令
- PLSQL 删表 恢复
1.查看你删除的是哪张表(SQL 中的时间是删表时的时间 (我删表的时间 大概是:2019-08-16 08:47:00 之后 )): select * from user_recy ...
- Python 练习 人事管理
人事管理系统介绍:1.展示页面: ①首页: ==========欢迎来到简历管理系统v2.1.1========== 1.管理员登录 ...