Linux 文件属性

文件属性信息组成

图示如下:

  • 文件索引属性信息-inode
  • 文件类型权限信息
  • 文件链接属性信息-硬链接个数
  • 文件属主属性信息-文件所有者
  • 文件属组属性信息-文件所属组
  • 文件大小属性信息-最小单位字节(大小、kb)
  • 文件修改时间信息
  • 文件名称信息说明-文件名

文件属性概念说明

  1. inode 编号

    Linux系统中文件的唯一编号,就相当于身份证号


  1. 常见文件类型
文件类型 对应字符
普通文件 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

读取文件原理图

  1. 文件首先存储在硬盘上,文件最小的单位是块(block),块由扇区(sector)组成,块一般大小为4kb,连续8个扇区组成一个块
  2. 硬盘的最小存储单位扇区(sector),每个扇区存储512字节
  3. 操作系统读取硬盘数据:一次性读取一块数据
  • 读取文件流程

    以读取/etc/passwd文件内容为例

Linux文件系统

Linux文件系统可以简单分为inode tabledata 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
  • 命令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 文件属性及详细操作的更多相关文章

  1. Linux学习之CentOS(四)----Linux文件属性、所有者、群组、其他组及文件权限操作简要总结

    Linux文件属性.所有者.群组.其他组及文件权限操作简要总结 首先介绍一个重要的知识点:文件属性控制权限 [root@www ~]# ls -al total 156 drwxr-x--- 4 ro ...

  2. linux文件属性详细说明

    1. Linux 文件属性概说: Linux 文件或目录的属性主要包括:文件或目录的节点.种类.权限模式.链接数量.所归属的用户和用户组.最近访问或修改的时间等内容: [root@localhost ...

  3. Linux 目录结构及详细操作

    目录 Linux 目录结构及详细操作 目录结构 目录结构的特点 目录结构挂载 目录结构发展 关闭selinux(了解) 重要目录说明(etc目录说明) 1.网卡配置文件 2.解析配置文件 3.主机名称 ...

  4. Linux系统安装(CentOS-7)详细操作步骤

    Linux系统安装(CentOS-7)详细操作步骤 一.创建虚拟机 首先创建一个虚拟机,然后才能在虚拟机里面安装系统. 第一步,创建虚拟机的向导 第二步,兼容性默认即可. 第三步,我们等创建完虚拟机后 ...

  5. Linux目录树详细说明

    Linux目录树详细说明 目录树的主要部分有root(/)./USR./var./home等等.下面是一个典型的linux目录结构如下: / 根目录 /bin 存放必要的命令 /boot 存放内核以及 ...

  6. Jenkins:VMware虚拟机Linux系统的详细安装和使用教程

    jenkins:VMware虚拟机Linux系统的详细安装和使用教程 (一) 不是windows安装虚拟机可跳过 1.Windows安装VMware 2.VMware安装linux系统 3.windo ...

  7. 3)Linux程序设计入门--文件操作

    )Linux程序设计入门--文件操作 Linux下文件的操作 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 .文件的创建和读 ...

  8. Linux文件属性,类型,ls -lhi解释行列

    Linux文件属性(描述信息) -i inode节点号 -h 人类可读 ls -lhi 1703938 drwxr-xr-x 2 rsync rsync 4.0K Jun 7 07:24 gamese ...

  9. linux 内核的链表操作(好文不得不转)

    以下全部来自于http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html 无任何个人意见. 本文详细分析了 2.6.x 内 ...

随机推荐

  1. Python 中的反转字符串:reversed()、切片等

    摘要:以相反的顺序反转和处理字符串可能是编程中的一项常见任务.Python 提供了一组工具和技术,可以帮助您快速有效地执行字符串反转. 本文分享自华为云社区<Python 中的反转字符串:rev ...

  2. 使用pmml实现跨平台部署机器学习模型

    一.概述   对于由Python训练的机器学习模型,通常有pickle和pmml两种部署方式,pickle方式用于在python环境中的部署,pmml方式用于跨平台(如Java环境)的部署,本文叙述的 ...

  3. PAT A1024题解——高精度大数相加模板

    PAT:A1024 Palindromic Number A number that will be the same when it is written forwards or backwards ...

  4. [bzoj5340]假面

    修改:维护g[i][j]表示第i个数为j的概率,从前往后转移 转移方程:g[id][i]=g[id][i-1]*p+g[id][i]*(1-p),初始g[i][a[i]]=1 询问:对于每一个人i,输 ...

  5. [loj4]Quine

    很有趣的一道题目,如何让一个程序输出自身如果用字符串s表示程序,那么意味着可以通过s来输出sprintf是一个可以利用的函数,相当于要求printf(s,s)输出的就是s那么只需要在s中加入%c和%d ...

  6. js数组常用添加方法有两种

        //头部     //this.list.unshift({name:this.itemName,date:new Date()});     //尾部         this.list.p ...

  7. 通过Rainbond的团队管理去管理已有的组织架构

    针对于多团队管理我先列举几个小问题,看看大家有没有共鸣,我们在刚刚接触并使用Rainbond的时候,仅仅创建一个团队,里面创建一大堆应用,看起来特别乱,进行管理的时候呢,也会非常麻烦,尤其是当团队需要 ...

  8. Atcoder Regular Contest 061 D - Card Game for Three(组合数学)

    洛谷题面传送门 & Atcoder 题面传送门 首先考虑合法的排列长什么样,我们考虑将每次操作者的编号记录下来形成一个序列(第一次 A 操作不计入序列),那么显然这个序列中必须恰好含有 \(n ...

  9. DP 优化方法大杂烩 & 做题记录 I.

    标 * 的是推荐阅读的部分 / 做的题目. 1. 动态 DP(DDP)算法简介 动态动态规划. 以 P4719 为例讲一讲 ddp: 1.1. 树剖解法 如果没有修改操作,那么可以设计出 DP 方案 ...

  10. Shell 变量嵌套

    实现:eval 1 a="indv1" 2 indv1="Sus1" 3 4 eval tmp='$'$a 5 echo $tmp //这里 echo 返回值为 ...