Linux09--文件属性信息


文件属性信息

1 概述

# 0.查看文件属性命令
  相关命令:ls -l -i
  统计inode数量:df -i
  目录及文件的信息:stat [文件或目录]


# 1.详细文件属性解读
inode号  文件类型及权限  硬链接个数 属主  属组 文件的大小 文件的修改时间 文件名字

201326677  drwxr-xr-x.   6    root  root  100   Sep 13 16:48   yum
67662624   -rw-r--r--    1    root  root  970   Sep 23 03:50   yum.conf
134451378  drwxr-xr-x.   4    root  root  151   sep 23 04:16   yum.repos.d


属主:文件所有者
属组:文件所属组
文件大小:最小单位字节

2 详述

1.inode号

# inode号: 即index node索引节点 

# stat [文件或目录]
文件的元信息(除了文件名),具体来说有以下内容:
    Size    : 文件的字节数
    Blocks  : 块数
    IO Block: 块大小
    Device  : 设备号码
    Inode   : 文件数据block的位置
    Links   : 链接数,即有多少文件名指向这个inode
    Access  : 文件的读写执行权限
    Uid     : 文件拥有者的User ID
    Gid     : 文件的Group ID
    Access  : 指文件上一次打开的时间
    Modify  : 指文件内容上一次变动的时间
    Change  : 指inode上一次变动的时间

2.文件类型及权限

# 常见的文件类型
  d: 文件夹(directory)
  -: 普通文件(file)    f或- 表示   # file [文件] 查看文件类型
       纯文本文件 text   /etc/hosts
       二进制文件 binary /bin/ls
       数据型文件 data   /tmp/etc.tar.gz
      
  l: 链接文件  eg: 软链接、符号链接、快捷方式
  c: 字符设备文件,会不断产生字符信息 character  eg:字体
  b: 块设备文件 block  eg:硬盘
  s: socket文件,套接字接口文件,和网络有关的文件
  p: 管道文件 pipe
     管道:将前一个命令的结果交给后面一个命令来处理即管道技术

# 文件类型查看方法
  配置文件:.conf
  日志文件:.log
  脚本文件:.sh
  脚本文件:.py
  
# 注意:文件拓展名说明
  windows是通过拓展名区分不同文件类型
  Linux是通过拓展名提示不同文件类型,即使将压缩文件的后缀名改了,依旧压缩文件。
	
  
# 权限
  r(read)   : 4   # 可读
  w(write)  : 2   # 可写
  x(execute): 1   # 可执行
  N/A(-)    : 0(没有权限)

3.硬链接和软链接

数据的存储

# 创建一个文件至少占用一个inode和一个block


# inode存放:文件的属性(包含名称等)
在同一个分区中,两个文件的inode号码相同,两个文件互为硬链接


# block存储:文件的数据
block默认大小为4k, 比较大的文件占用多个block, 比较小的文件,剩余空间无法使用
磁盘读取数据按block为单位读取的
读取一个block会消耗一次磁盘I/O(input/output 磁盘读写)


# 如何真正删除文件:
  1.在linux操作系统中,硬链接个数为0时,才会删除源文件,表示数据真正删除了
    文件的inode信息中有一项叫做“链接数”,记录指向该inode的文件名总数。
	删除一个文件名,就会使得indoe中的链接数减一
	当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其对应的block区域
	
  2.文件信息没有被进程调用的时候,进程调用数为0

# 硬链接: 相当于文件的别名,id号一致
ln [源来的路径] [新的路径]

硬链接: 源文件与目标文件的inode号码相同,都指向同一个inode。


# 软链接: 相当于快捷方式,用于存放指向源文件的路径信息
ln -s [源来的路径] [新的路径]

软链接: 文件指向的是源文件的文件名,而不是inode号,所以源文件的“链接数”不会增加

特点:1. 防止误删数据 2.不能给目录创建硬链接



# 空目录文件的“链接数”为何为2 ?
    创建目录时,默认会硬链接生成两个目录项"."和".."
    "." 的inode号码就是当前目录的inode号码,".."的inode号码就是父目录的inode号码,
    此时,当前目录的inode号的中“链接数” 分别是:创建的目录名和目录中的"."
	
    # 所以,任何一个目录的“链接数”总数,总是等于 2+它的子目录总数(含隐藏目录)

4.用户与用户组

# 1.用户及用户组
  用户:相当于系统管理员
  用户组:相当于具有某种相同特征的一系列用户的集合


# 2.创建用户
  useradd  : 创建用户
  groupadd : 创建用户组
  id       : 查看指定用户的id  # 默认查看当前用户
  
  格式:useradd [选项] [用户名称]
  
  用户名命名规则:
    1.可以包含字母和数字
    2.必须字母开头
  
  选项:
    -u:指定uid
    -g: 指定gid
    -r: 指定创建系统用户
    -s: 指定用户默认的解释器

    uid代表的是用户的唯一标号
    gid代表的用户组的唯一编号

  # eg:创建用户
    groupadd -g 666 shanhe
    useradd -u 666 -g 666 test777

# 修改密码
    passwd 用户名  # 为该用户设置密码

# 删除用户
    userdel -r 用户名  # 彻底删除
  
# 3.系统用户和普通用户的区别:
  系统用户一般用来运行系统级别的应用程序
  
    id号在0-200之间的用户运行的是操作系统级别的应用程序
    id号在201-999之间的用户运行的是用户级别的应用程序
    
  通常情况下:id号在1000以下,那么该用户就是系统用户,在1000以上是普通用户。
普通用户一般用来登录操作系统


# 4.用户的相关信息文件
  用户的特征信息: /etc/passwd   # 包含用户登录使用的解释器
  用户的密码信息: /etc/shadow
  用户组特征信息: /etc/group
  用户组密码信息: /etc/gshadow

5.文件时间及shell解释器

# 6.时间信息 
  文件修改时间 : mtime
  属性修改时间 : ctime
  文件访问时间 : atime  


# 7.系统常用的shell解释器:
  /bin/bash   # 默认bash解释器
  /bin/sh