Linux 文件属性及详细操作
Linux 文件属性

文件属性信息组成
图示如下:

- 文件索引属性信息-inode
- 文件类型权限信息
- 文件链接属性信息-硬链接个数
- 文件属主属性信息-文件所有者
- 文件属组属性信息-文件所属组
- 文件大小属性信息-最小单位字节(大小、kb)
- 文件修改时间信息
- 文件名称信息说明-文件名
文件属性概念说明
- inode 编号 - Linux系统中文件的唯一编号,就相当于身份证号 

- 常见文件类型
| 文件类型 | 对应字符 | 
|---|---|
| 普通文件 | f/- | 
| 文件夹 | d | 
| 链接文件 | l | 
| 设备文件 | b:磁盘文件 / c:字符文件 | 
| 套接字文件(socket) | s | 
| 管道文件 | p | 
图示如下:

- 文件类型查看方法 - file 文件信息: - 配置文件---.conf
- 日志文件---.log
- 脚本文件---.sh
- 脚本文件---.py
 - 注意不能以颜色判断文件类型,如果关闭颜色参数呢? 


这样一种颜色的时候在文件多的时候很难判断是什么类型!
文件软硬链接说明
- 命令:ln
- 参数:-s --- 软连接
- 不加参数创建的是硬链接
 
- 格式1:ln [原文件路径] [硬链接文件路径]
- 格式2:ln -s [原文件路径] [软链接文件路径]
图示:

硬链接
硬链接好比商场的出口,商场有多个出口,就相当于多个接口去操作文件,硬链接直接指向index node编号,当文件修改时候,硬链接产生的文件也修改,他们的inode编号相同
# 创建硬链接
[root@localhost ~]# ln /root/test /root/test01

ps:修改原文件或者硬链接产生的文件都是对原文件的修改!
软链接
相当于Windows中的快捷方式,主要用来指向对应文件的路径。
# 创建软连接
[root@localhost ~]# ln -s /root/test /root/test02

验证软链接是指向路径,删除原文件观察
[root@localhost ~]# rm -rf /root/test
[root@localhost ~]# ls
anaconda-ks.cfg  test01  test02
[root@localhost ~]# ll -i
total 8
134319695 -rw-------. 1 root root 1691 Dec  9 19:03 anaconda-ks.cfg
134930018 -rw-r--r--. 1 root root   12 Dec 14 16:17 test01
135086254 lrwxrwxrwx. 1 root root   10 Dec 14 16:25 test02 -> /root/test
[root@localhost ~]# cat test01
chinaaaaaaa
[root@localhost ~]# cat test02
cat: test02: No such file or directory

补充知识
如何真正删除一个文件:
删除文件的底层逻辑:
1、删除的是硬链接
2、判断该文件硬链接数是否为0
3、如果为0,则在磁盘中将其删除
4、如果不为0,则只删除一个硬链接
存储数据相关-inode/block
inode:
inode用于存放的是文件属性、指针位置,主要在是在格式化创建文件系统的时候诞生的,创建一个文件至少占用一个inode和一个block,在同一分区中,两个文件的inode号码相同,两个文件互为硬链接。
- 展示inode信息:
  [root@localhost ~]# cd /etc/
  [root@localhost etc]# ll -hi /etc/hosts
  67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
- 统计inode数目 - 命令:df -i
 
[root@localhost etc]# df -i
Filesystem                Inodes IUsed    IFree IUse% Mounted on
devtmpfs                   56934   334    56600    1% /dev
tmpfs                      59949     1    59948    1% /dev/shm
tmpfs                      59949   692    59257    2% /run
tmpfs                      59949    16    59933    1% /sys/fs/cgroup
/dev/mapper/centos-root 52164608 77758 52086850    1% /
/dev/sda1                 262144   326   261818    1% /boot
tmpfs                      59949     1    59948    1% /run/user/0
block:
用于存储数据-block块信息,存储文件数据信息,主要在是在格式化创建文件系统的时候诞生的;
block默认大小为4k,比较大的文件,会占用多个block
当文件比较大的时候,磁盘放不下,会导致空间无法使用-显示磁盘空间不足(no space left on device)
创建一个文件至少占用一个inode和一个block(非空文件)
磁盘读取数据按block为单位读取的
读取一个block会消耗一次磁盘I/O(input/output 磁盘读写)
- 命令:df
- 相关文件:/etc/hosts
[root@localhost etc]# ll -hi /etc/hosts
67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
[root@localhost etc]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
devtmpfs                   227736       0    227736   0% /dev
tmpfs                      239796       0    239796   0% /dev/shm
tmpfs                      239796    5624    234172   3% /run
tmpfs                      239796       0    239796   0% /sys/fs/cgroup
/dev/mapper/centos-root 104278276 2636220 101642056   3% /
/dev/sda1                  520868  134236    386632  26% /boot
tmpfs                       47960       0     47960   0% /run/user/0
读取文件原理图
- 文件首先存储在硬盘上,文件最小的单位是
块(block),块由扇区(sector)组成,块一般大小为4kb,连续8个扇区组成一个块- 硬盘的最小存储单位
扇区(sector),每个扇区存储512字节- 操作系统读取硬盘数据:一次性读取一块数据
- 读取文件流程 - 以读取/etc/passwd文件内容为例 

Linux文件系统
Linux文件系统可以简单分为
inode table和data area,inode table中存有inode,文件系统通常会将文件的权限与属性放置到inode中,至于实际内容则放置到data block区块中,还有一个超级区块(superblock)会记录整个文件系统的整体信息。
- 文件的元数据 :权限(rwx)与属性(拥有者、群组、时间参数、大小等)
- 文件的数据:实际记录文件的内容 若文件太大时,会占用多个block
- 文件系统的整体信息:inode/block的总量、使用量、剩余量, 以及档案系统的格式与相关信息等
| inode | block | superblock | 
|---|---|---|
| 记录文件的元数据 | 记录文件的数据 | 记录文件系统的整体信息 | 
图示:

文件用户和用户组
用户:相当于账号,例如root(超管用户)
用户组:某些具有相同属性的账号的集合
- 用户分为系统用户和普通用户:
- uid在[0 - 999] 之间的用户为系统用户,一般用在启动程序上,一般不需要登录系统,root不一定为超级管理员,uid=0的为超管
- uid在[1000+]的用户为普通用户,一般用在登录上
- 命令1: - 添加用户:useradd [用户] - 参数: -g :指定 - 存在用户组-  -r :创建一个系统用户 -  -M :不创建家目录 -  -u :指定创建用户ID 
 
- 删除用户:userdel -r [用户] 
- 相关文件:/etc/passwd 
 
- 命令2: - 添加用户组:groupadd [组名]
- 参数 -g:指定用户组的ID
 
- 删除用户组:groupdel [组名]
- 修改用户组:usermod -g [组名] [用户名]
- 相关文件:/etc/group
 
- 添加用户组:groupadd [组名]
- 命令3:id [用户名] / [组名] 
- 用户文件操作 
# 查看用户详情文件
[root@localhost mail]# useradd hammer
[root@localhost mail]# cat /etc/passwd
# 格式如下
hammer:x:1000:1000:[用户简介]:/home/hammer:/bin/bash
用户名		 	:hammer
密码占位符	   :x
1000    	   :userid
1000		   :组id
/home/hammer    :家目录
/bin/bash	    :默认的解析器
# 默认的解析器为bash
# 解析器的种类 (可以修改)
bash  /   sh    / zsh
# sh和bash解析器切换
/bin/bash
/bin/sh
切换用户
	su - [用户名]
	su [用户名]
# 在已存在的用户组内添加用户
# 通过指定组名添加
[root@localhost mail]# id hammer
uid=1000(hammer) gid=1000(hammer) groups=1000(hammer)
[root@localhost mail]# useradd wang -g hammer
[root@localhost mail]# id wang
uid=1001(wang) gid=1000(hammer) groups=1000(hammer)
# 通过指定组id添加
[root@localhost mail]# useradd -g li 1000
[root@localhost mail]# id li
uid=1002(li) gid=1000(hammer) groups=1000(hammer)
- 用户组操作
[root@localhost mail]# groupadd hammer
[root@localhost mail]# cat /etc/group
hammer:x:1000:
hammer	:组名
x		:密码占位符
1000	:组id
用户相关文件
- 用户的特征信息:/etc/passwd (掌握文件各列信息)
- 用户的密码信息:/etc/shadow
- 用户组特征信息:/etc/group
- 用户组密码信息:/etc/gshadow
- 用户家目录默认隐藏文件:/etc/skel/

【待续】
Linux 文件属性及详细操作的更多相关文章
- Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结
		Linux文件属性.所有者.群组.其他组及文件权限操作简要总结 首先介绍一个重要的知识点:文件属性控制权限 [root@www ~]# ls -al total 156 drwxr-x--- 4 ro ... 
- linux文件属性详细说明
		1. Linux 文件属性概说: Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容: [root@localhost ... 
- Linux 目录结构及详细操作
		目录 Linux 目录结构及详细操作 目录结构 目录结构的特点 目录结构挂载 目录结构发展 关闭selinux(了解) 重要目录说明(etc目录说明) 1.网卡配置文件 2.解析配置文件 3.主机名称 ... 
- Linux系统安装(CentOS-7)详细操作步骤
		Linux系统安装(CentOS-7)详细操作步骤 一.创建虚拟机 首先创建一个虚拟机,然后才能在虚拟机里面安装系统. 第一步,创建虚拟机的向导 第二步,兼容性默认即可. 第三步,我们等创建完虚拟机后 ... 
- Linux目录树详细说明
		Linux目录树详细说明 目录树的主要部分有root(/)./USR./var./home等等.下面是一个典型的linux目录结构如下: / 根目录 /bin 存放必要的命令 /boot 存放内核以及 ... 
- Jenkins:VMware虚拟机Linux系统的详细安装和使用教程
		jenkins:VMware虚拟机Linux系统的详细安装和使用教程 (一) 不是windows安装虚拟机可跳过 1.Windows安装VMware 2.VMware安装linux系统 3.windo ... 
- 3)Linux程序设计入门--文件操作
		)Linux程序设计入门--文件操作 Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 .文件的创建和读 ... 
- Linux文件属性,类型,ls -lhi解释行列
		Linux文件属性(描述信息) -i inode节点号 -h 人类可读 ls -lhi 1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gamese ... 
- linux 内核的链表操作(好文不得不转)
		以下全部来自于http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 无任何个人意见. 本文详细分析了 2.6.x 内 ... 
随机推荐
- jenkins bat删除指定路径下的文件及文件夹
			最近在用jenkins集成,生成allure测试报告,但是每次生成的allure测试报告,都是上一次执行的痕迹.比如这次我只运行了100个用例,结果显示运行2000条,上一次运行的用例,时间也涵括了上 ... 
- cmd 命令 导出导入oracle数据库 的 表
			原地址:https://www.cnblogs.com/mysterious-killer/p/11671741.html (防止) 导出: 不要数据的:exp username/pwd@localh ... 
- 重新整理 .net core 实践篇——— 权限源码阅读四十五]
			前言 简单介绍一下权限源码阅读一下. 正文 一直有人对授权这个事情上争论不休,有的人认为在输入账户密码给后台这个时候进行了授权,因为认为发送了一个身份令牌,令牌里面可能有些用户角色信息,认为这就是授权 ... 
- [loj3368]数蘑菇
			由于题目是让我们统计个数,当我们确定了$k$个$p_{i}$都为0或1后,再用至多$\lceil \frac{n-k}{k}\rceil$次询问和$2(n-k)$个"$n$"即可求 ... 
- form-create 3.0 版本发布,好用的Vue3版本动态表单生成组件
			form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成组件.支持2个UI框架,并且支持生成任何 Vue 组件.内置20种常用表单组件和自定义组件,再复杂 ... 
- Java遍历map的五种方式
			使用For-Each迭代entries 这是最常见的方法,并在大多数情况下更可取的.当你在循环中需要使用Map的键和值时,就可以使用这个方法 Map<Integer, Integer> m ... 
- Vue自定义组件实现v-model指令
			Tips: 本文所描述的Vue均默认是Vue2版本 在我们初次接触Vue的时候,一定会了解到一个语法糖,那就是v-model指令,它带给我们的第一印象就是它可以实现双向绑定 那么,什么是双向绑定?通俗 ... 
- R 语言实战-Part 5-1笔记
			R 语言实战(第二版) part 5-1 技能拓展 ----------第19章 使用ggplot2进行高级绘图------------------------- #R的四种图形系统: #①base: ... 
- MISA(在线)注释叶绿体基因组SSR
			SSR (Simple Sequence Repeat),即简单重复序列,是一种以PCR技术为核心的DNA分子标记技术,也称为微卫星序列或者串联重复. 简单重复顾名思义就是以很短的序列为一个单元,比如 ... 
- phpexcel 另存Excel文件方式
			$w = new PHPExcel_Writer_Excel5($e); $dir = 'path/title.xls'; $w->save($dir); 
