Linux文件属性详述
一、文件属性信息概述
文件属性信息组成如下:
- 文件索引属性信息——inode编号;
- 文件类型权限信息;
- 文件链接属性信息——硬链接数;
- 文件属主信息——文件所有者;
- 文件属组属性信息——文件所属组;
- 文件大小属性信息——最小单位字节;
- 文件修改时间信息;
- 文件名称信息说明;
二、文件属性信息详述
2.1 文件类型概念说明
-
文件类型预备知识
扩展名说明:
-
Windows中通过扩展名区分不同文件类型
-
Linux中通过扩展名提示不同文件类型(就算把压缩文件扩展名改了,依旧是压缩文件);
-
-
文件类型详细说明
-
普通文件——f/-(file)
①. 纯文本文件text: /etc/hosts;
②. 二进制文件binary: /bin/ls;
③. 数据型文件data: /tmp/etc.tar.gz
利用file命令可以查看文件类型
-
目录文件(文件夹)——d/d(directory)
-
链接文件——l/l(软链接 符号链接 快捷方式)
-
设备文件
b/b(block)(块设备文件)
c/c(character)(字符设备文件 会不断产生字符信息)
需要关注的设备文件:
磁盘设备文件 /dev/sda 随机设备文件 /dev/urandom 输出设备文件 /dev/zero 输入设备文件 /dev/null
-
套接字文件——s/s(socket)(套接接口文件 和网络有关的文件)
-
管道文件——p/p(pipe)(管道文件)
-
-
文件类型查看方法
file [文件信息] 配置文件---.conf 日志文件---.log 脚本文件---.sh 脚本文件---.py
注意:不能以颜色判断文件类型。
2.2 文件软硬连接说明
2.2.1 硬链接说明(hard link)
-
概念说明
- 硬链接直接指向index node编号;
- 相当于访问文件的一个入口;
- 相当于访问文件的入口数量;
- 同一个分区中,inode号码相同的文件互为硬链接;
-
操作练习
01. 创建文件信息 touch /data/oldboy
02. 创建硬链接 ln /data/oldboy /data/oldboy.txt_hard
03. 检查创建信息 ls -lhi oldboy*
-
特点作用
- 防止误删数据;
- 不能给目录创建硬链接;
2.2.2 软链接说明(soft link)
-
概念说明
- 相当于快捷方式;
- 用于存放指向源文件的路径信息;
-
操作练习
01. 创建文件信息 touch /data/oldboy
02. 创建软链接 ln -s /data/oldboy /data/oldboy.txt_soft
03. 检查创建信息 ls -l oldboy*
-s:创建软链接
-
特点作用
- 软件链接创建最好采用绝对路径,否则容易失效;
- 链接源文件删除,会影响软链接;
2.2.3 扩展知识点
-
如何真正删除一个文件
- 文件硬链接数为0时,表示数据真正删除了;
- 文件信息没有被进程调用的时候,进程调用数为0;
查看文件是否被进程调用:lsof |grep "secure"
-
删除文件的底层逻辑:
- 删除的硬链接;
- 判断该文件硬链接数是否为0;
- 如果为0,则在磁盘中将其删除;
- 如果不为0,则只删除一个硬链接;
2.3 存储数据相关—inode
2.3.1 概述介绍
- 索引节点:index node
- 存放文件信息
- 文件大小
- 文件时间
- 文件类型
- 文件权限
- 文件名称
2.3.2 诞生原因
存储知识储备:
- 硬盘硬件--拥有房子
- 硬盘分区--划分隔断
- 格式化硬盘--开始装修
- 文件系统--装修风格
- 进行挂载--安装门窗
inode是在格式化创建文件系统的时候诞生的
2.3.3 特点说明
- inode用于存放的是文件属性;
- inode用于存放块的指针位置;
- 创建一个文件至少占用一个inode和一个block;
- 在同一分区中,两个文件的inode号码相同,两个文件互为硬链接;
2.3.4 命令查看
展示inode信息:
ls -lhi /etc/hosts
131100 -rw-r--r--. 2 root root 352 Jan 27 01:15 /etc/hosts
统计inode数目:
df -i
2.4 存储数据相关—block
2.4.1 概述介绍
-
存储数据-block块信息
-
存储文件数据信息
2.4.2 诞生原因
也是在格式化创建文件系统的时候诞生的。
2.4.3 特点说明
- block用于存放的是数据信息;
- block默认大小为4k(比较大的文件,会占用多个block);
- 创建一个文件至少占用一个inode和一个block(非空文件);
- 磁盘读取数据按block为单位读取的;
- 读取一个block会消耗一次磁盘I/O(input/output 磁盘读写);
2.4.4 命令查看
展示block信息:
ls -lh /etc/hosts
-rw-r--r--. 2 root root 352 Jan 27 01:15 /etc/hosts
统计block数目:
df/df -h
2.5 访问文件原理—inode/block
2.6 文件用户和用户组
2.6.1 用户与用户组概念
-
用户——相当于账号
UID:user id(用户id)
-
用户组——某些具有相同属性的账号的集合
GID:group id(用户组id)
2.6.2 用户分类
- 超级管理用户(皇帝) root——uid=0
- 面见皇帝方法:
- 利用地址信息访问-IP
- 利用用户信息访问-root
- 利用密码信息访问
- 利用端口信息访问
- 保护皇帝方法:
- 修改远程连接端口-52113
- 禁止root用户远程登录
- 面见皇帝方法:
- 系统虚拟用户(傀儡) www——uid=1-999
- Linux下面每个程序/进程都需要有一个对应的用户和用户组;
- 一般用在启动应用程序上,是无法登录Linux系统的用户;
- 著名的傀儡用户 id nobody id=99;
- 系统普通用户(百姓) oldboy——uid=1000及以上
2.6.3 用户相关文件
-
用户的特征信息
/etc/passwd (掌握文件各列信息)
-
用户的密码信息
/etc/shadow
-
用户组特征信息
/etc/group
-
用户组密码信息
/etc/gshadow
-
用户家目录默认隐藏文件
/etc/skel/
2.6.4 用户相关命令
-
创建用户
useradd 参数: -g : 指定用户组(用户必须存在) -r : 创建系统用户 -M :不创建家目录 -u :指定创建用户的ID
-
创建用户组
groupadd 参数: -g : 指定用户组的ID
-
切换用户
su - [用户名] su [用户名]
-
查看用户或组的ID
id [用户名]
-
查看用户详情文件
[root@localhost ~]# cat /etc/passwd test01:x:1001:1001:"用户简介":/home/test01:/bin/bash 用户名 : test01 密码占位符 :x 1001 : userid 1001 : 组id /home/test01 : 家目录 /bin/bash :默认的解析器
Linux自带解析器:bash sh
其他解析器:zsh …
2.6.5 手动创建用户(不使用useradd)
-
添加用户
vim /etc/passwd test08:x:2001:2001:自建用户:/home/test08:/bin/bash
-
添加组
vim /etc/group test08:x:2001:
-
添加用户密码
vim /etc/shadow test08:!!:18974:0:99999:7:::
-
添加用户组密码
vim /etc/gshadow test08:!::
-
添加家目录及权限
mkdir test08 cp /etc/skel/.bash* /home/test08/ chown -R test08.test08 test08 chmod 700 test08/
2.7 文件相关权限
2.7.1 权限说明
某一个用户针对某一个文件的权限。
2.7.2 权限类型(每个权限拥有一个数字编号)
- 读取权限(4):read(r)
- 写入权限(2):write(w)
- 执行权限(1):execute(x)
- 没有权限(0):N/A(-)
2.7.3 权限位说明
权限位主要分为三个部分,分别是属主、属组以及其他用户。
rw-r--r--
文件或目录属主用户权限:rw-(6)
文件或目录属组组员权限:r--(4)
文件或目录其它用户权限:r--(4)
2.7.4 权限编号写法
在添加权限的时候,可以将权限对应数字编号加起来。
案例:
index:
属主 : 可读可写可执行
属组 :可读可写
其他人:没有任何权限
对应权限为:rwxrw---- 等价于 760
eg:将index文件添加对应权限(属主 : 可读可写可执行、属组 :可读可写、其他人:没有任何权限)
chmod 760 index
2.7.5 添加权限命令——chmod
格式:
chmod [参数] [权限表达式] [操作对象]
参数:
-R : 递归增加权限
eg: 将index文件夹下的所有文件设置rwxr--r--
chmod -R 744 baidu/
权限的归属(可以给指定的权限位添加或删除对应的权限)
属主:u
属组:g
其他人:o
eg:将index这个文件的属组增加一个可执行权限
chmod g+x index
2.7.6 测试权限对于用户的意义
结论:
- 普通用户是严格遵守权限的;
- root用户是高于权限的(可以无视权限);
- 权限修改后一般需要重登录才可生效(su和su - 都可);
2.7.7 测试权限对于目录的意义
结论:
- 文件可读,对应路径的最小权限是必须拥有可执行权限;
- 文件可写,对应路径的最小权限是必须拥有可执行权限;
- 文件可执行,对应路径的最小权限是必须拥有可读可执行权限;
2.7.8 创建文件或文件夹的默认权限
在Linux中,常用的文件的权限是666,目录的权限是777。
查看umask值的文件:
/etc/profile
默认权限的计算规则如下:
- 文件的权限是跟 umask 值相减,遇到奇数加一,遇到偶数则不变;
- 文件夹的权限只需跟 umask 值相减即可;
对于root用户:
umask值:022
默认文件权限:644
默认的文件夹权限:755
对于新建用户(不指定用户组):
umask值:002
默认文件权限:664
默认的文件夹权限:775
对于用户id与用户组id不同的用户:
umask值:022
默认文件权限:644
默认的文件夹权限:755
2.8 文件时间信息
2.8.1 文件时间信息分类
三种时间信息:
- 文件访问时间(Access):atime
- 文件修改时间(Modify):mtime
- 属性修改时间(Change):ctime
2.8.2 文件时间详细说明
-
验证时间命令:
stat [文件/文件夹]
-
编辑文件内容:
文件访问时间不变
文件修改时间变化
文件属性时间变化
-
修改文件属性:
文件访问时间不变
文件修改时间不变
文件属性时间变化
-
访问文件信息:
文件访问时间变化
文件修改时间不变
文件属性时间不变