文件详细信息、类型,软硬链接、用户(组)、时间信息
![image]()
1、文件详细信息
利用 ls -lhi命令查看文件的详细信息
示例:134319703 drwxr-xr-x. 2 root root 19 Dec 10 22:57 data
以上面为例
134319703 :inode编号(下面细说)
drwxr-xr-x. :文件类型及权限
2 :硬链接数(下面细说)
root :所属主(用户)
root :所属组(用户组)
19 :文件大小(单位为字节,够一个k以kb展示)
Dec 10 22:57 :文件创建日期
data :文件名
![image]()
2、inode编号
1、什么是inode编号
linux中的inode编号是索引节点的编号,每个inode对应一个不同的号码,每个文件有一个inode编号,且inode编号具有唯一性
2、inode编号的作用
1、由于inode编号具有唯一性,因此可以作为文件的一种标识,类似每个人的身份证号码,用来标识文件的唯一性,默认用来存放文件的属性信息
2、当我们在linux系统中查找文件时,遇到文件名相同的情况时,如何准确的查找到所需的文件?
实际上是通过文件自身的inode编号进行查找,这就有效的避免了遇到文件名相同的情况时无法精确查找所需文件的冲突
而我们每次在查找文件时,实际上是在查找文件对应的inode编号
3、如何查看文件的inode信息及统计inode编号的个数
1、查看文件的inode信息
ls命令:参数:-i
[root@jinx ~]# ls -lhi /etc/hosts
67865028 -rw-r--r--. 1 root root 158 Dec 13 15:36 /etc/hosts
2、统计inode编号的个数
[root@jinx ~]# df -i /etc/hosts
![image]()
3、block
1、什么是block
在linux中,block又叫块,用来存放文件的数据信息,linux文件系统中使用块(block)作为最小的寻址单元
2、block特点
1、block存放的是数据信息,默认大小为4k,大的文件会占用多个block,较小的文件,剩余的block空间无法使用
2、磁盘在读取数据时以block为单位进行读取
3、每读取一个block消耗一次磁盘的读写操作(input/output)
3、如何展示block信息
1、查看block信息
[root@jinx ~]# ls -lh /etc/hosts
2、统计block数目
[root@jinx ~]#df或者[root@jinx ~]#df -h
![image]()
4、访问文件原理
- 创建一个文件至少占用一个inode和一个block
- 通过用户名打开文件,实际上内部发生了三个操作
1、系统找到文件对应的inode编号
2、通过inode编号,获取inode信息
3、根据inode信息找到文件数据所在的block,读出数据
![image]()
5、文件类型及权限
1、nux中文件类型介绍
[root@jinx ~]# ls -lhi /etc/hosts
67865028 -rw-r--r--. 1 root root 158 Dec 13 15:36 /etc/hosts
以上面为例
以-或f开头的 :普通文件
以d开头 :文件夹
以l开头 :连接文件(软连接,硬链接)
以b或c开头 :设备文件
b :磁盘文件
c :字符文件
以s开头 :套接字文件(socket)
以p开头 : 管道文件
2、文件相关权限
拥有权限
1、文件或目录属主用户权限:rw-
2、文件或模流属组成员权限:r--
3、文件或目录其他用户权限:r--
![image]()
6、文件软硬链接
1、硬链接
1、什么是硬链接
在linux系统中,硬链接相当于访问文化的一个入口,硬链接数相当于访问文件的入口数量,同一个分区中,inode号码相同的文件互为硬链接
2、如何创建硬链接
命令关键字:ln
语法格式:ln [文件绝对路径] [文件硬链接绝对路径]
3、特征解释
1、创建硬连接时建议采用绝对路径,否则容易失效
2、硬链接原文件必须删除
3、不能对文件夹创建硬链接
4、删除文件的底层逻辑
1、删除的是硬链接数
2、硬链接数不为0,则删除一个硬链接数
3、硬连接数为0,则在磁盘中将文件删除
5、创建文件硬链接与拷贝文件的区别
拷贝文件其实是产生了一个新的文件,将原文件的内容复制一份,但是和原文件的属性已经发生了变化,即inode不再相同
创建文件硬链接实质上是文件的硬连接数count加1,文件属性相同,即inode相同
2、软链接
1、什么是软连接
linux中的软连接相当于windows里的快捷方式,用于存放指向原文件的路径信息
2、如何创建软链接
命令:ln -s
语法格式:ln -s[原文件路径] [软链接路径]
3、特征解释
1、创建软链接时建议采用绝对路径,否则容易失效
2、链接原文件删除,会影响软链接
3、原文件可以是文件,也可以是文件夹
扩展:如何真正的删除一个文件
1、文件硬连接数为0时,表示数据真正的删除了
2、文件信息没有被进程调用时,进程调用数为0
![image]()
7、文件用户、用户组
1、什么是用户、用户组
用户:相当于账号
如:root用户
用户组:具有相同属性的账号的集合
如:root用户组
2、创建用户的命令
useradd
参数:
-g :指定用户组(用户必须存在)
-r :创建系统用户
-M :不创建家目录
-u :指定创建用户的id
3、什么是普通用户、系统用户
系统用户:用户id在0-999之间的用户,我们就看作是系统用户
系统用户一般用在启动应用程序上,一般不需要登录系统
普通用户:uid在1000及以上的用户,我们就看作是普通用户
普通用户一般用在登录上
4、创建用户组的命令
groupadd
参数:
-g :指定用户组的id
5、切换用户
su -[用户名] :登录用户
su [用户名] :切换用户
6、查看用户的id或组的id
id [用户(组)名]
7、与用户相关的文件
1、用户的特征信息
/etc/passwd
[root@localhost ~]# cat /etc/passwd
test01:x:1001:1001:用户简介:/home/test01:/bin/bash
用户名 : test01
密码占位符 :x
1001 : userid
1001 : 组id
/home/test01 : 家目录
/bin/bash :默认的解析器
2、用户的密码信息
/etc/shadow
3、用户组特征信息
/etc/group
4、用户组密码信息
/etc/gshadow
5、用户家目录默认隐藏文件
/etc/skel
![image]()
8、文件时间信息
文件时间信息主要分为三种
使用stat命令查看文件的属性:
[root@jinx ~]# stat /root
File: ‘/root’
Size: 275 Blocks: 0 IO Block: 4096 directory
Device: fd00h/64768d Inode: 134319681 Links: 5
Access: (0550/dr-xr-x---) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-12-14 18:34:36.645811564 +0800
Modify: 2021-12-14 18:34:35.006811456 +0800
Change: 2021-12-14 18:34:35.006811456 +0800
Access :文件访问时间
Modify :文件修改时间
Change :属性修改时间
文件时间信息在不同操作下时间的变化
1、访问文件时:
文件访问时间改变,文件修改时间、属性修改时间不变
ps:由于linux中存在缓存区一说,时间属性并不会立即生效,可以采用多开窗口查看
2、使用命令修改文件信息时:
文件修改时间、修改属性时间改变,文件访问时间
3、使用vim编辑文件时:
文件修改时间、文件访问时间、属性修改时间都改变
4、修改文件属性时:
属性修改时间改变,文件访问时间、文件修改时间不变
文件类型查看方法
file [文件信息]
扩展:创建大量小文件
1、echo {1..500000}.txt|xargs touch
2、ls *.txt|xargs rm
![image]()
9、文件权限
1、权限的定义
在linux中,权限就是某个用户针对某个文件所能执行的相应操作
2、权限的分类
示例:-rw-r--r--
权限分为以下几种
r :可读权限
w :可写权限
x :可执行权限
- :无对应权限
3、权限位
在linux中,权限位主要是用来描述文件所具有的相关权限的,权限位一般为由9位字符组成,
分为三部分,每部分代表所属的不同权限
示例:-rw-r--r--(最前面的'-'代表当前文件为普通文件)
rw- :属主权限(当前用户权限)
r-- :属组权限(用户组)
r-- :其他用户权限
4、每个权限对应的数字
可读权限r >>> 4
可写权限w >>> 2
可执行权限 >>> 1
无对应权限 >>> 0
5、在添加权限的时候,可以利用权限对应的数字的合来增加权限
示例:给/root/data下的index.sh增加:属主:可读可写 属组:可读 其他用户权限:可读
[root@jinx ~]# chmod 644 data/index.sh
644 <<==>> rw-r--r--
6、如何给文件添加权限
命令关键字:chmod
格式:chmod [参数] [权限表达式] [执行对象]
参数:
-R :递归增加权限
7、权限的归属
属主:owner >> 简写:u
属组:group >> 简写:g
其他用户:others >> 简写:o
在修改用户权限的时候,可以使用数字,也可以使用每个部分权限对应的字母进行加减
示例:将/root/data下的index.sh修改为:属主:可读 属组:可读可写 其他用户权限:可执行
1、使用每个部分权限对应的字母进行加减
[root@jinx ~]# chmod u-w,g+w,o-r+x data/index.sh
2、使用权限对应的数字进行加减
[root@jinx ~]# chmod 461 data/index.sh
8、测试权限对于用户的意义
1、普通用户是严格遵守权限的
2、root用户(超级管理员)不受权限的限制
3、权限需要重新登录才生效
9、测试权限对于目录的意义
1、文件可读,路径(文件所在目录)的最小权限是必须拥有可执行权限
2、文件可写,路径(文件所在目录)的最小权限是必须拥有可执行权限
3、文件可执行,路径(文件所在目录)的最小权限是必须拥有可读、可执行权限
ps:以上的操作都是基于用户来执行的,因此最小权限是对于属组权限来说的,修改路径权限时可以采用递归的方式修改
10、我们每次在创建文件时,都会有一个默认权限,那这些默认权限又是怎么产生的?
1、其实这里牵扯到一个概念,umsk值,不需深究,了解默认权限的产生即可
2、在linux中,常用的文件初始权限是666,文件夹的初始权限是777
3、默认权限的产生
1、文件:文件的初始权限(666)跟umsk值相减,遇到奇数加1;遇到偶数则不变
2、文件夹:文件夹的初始权限(777)跟umsk值相减即是文件夹的默认权限值
ps:umsk值可以通过/etc/profile文件进行查看umsk值的产生
4、经过以上的推导可以得出一个结论: 文件默认权限值:644
文件夹默认权限值:755
![image]()