AI智能
改变未来

Linux 文件属性及详细操作

[toc]

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 ~]# lsanaconda-ks.cfg  test01  test02[root@localhost ~]# ll -itotal 8134319695 -rw-------. 1 root root 1691 Dec  9 19:03 anaconda-ks.cfg134930018 -rw-r--r--. 1 root root   12 Dec 14 16:17 test01135086254 lrwxrwxrwx. 1 root root   10 Dec 14 16:25 test02 -> /root/test[root@localhost ~]# cat test01chinaaaaaaa[root@localhost ~]# cat test02cat: test02: No such file or directory

    补充知识

    • 如何真正删除一个文件:

    • 删除文件的底层逻辑:1、删除的是硬链接2、判断该文件硬链接数是否为03、如果为0,则在磁盘中将其删除4、如果不为0,则只删除一个硬链接

    存储数据相关-inode/block

    inode:

    inode用于存放的是文件属性、指针位置,主要在是在格式化创建文件系统的时候诞生的,创建一个文件至少占用一个inode和一个block,在同一分区中,两个文件的inode号码相同,两个文件互为硬链接。

    • 展示inode信息:
    [root@localhost ~]# cd /etc/[root@localhost etc]# ll -hi /etc/hosts67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts
    • 统计inode数目

      命令:df -i

    [root@localhost etc]# df -iFilesystem                Inodes IUsed    IFree IUse% Mounted ondevtmpfs                   56934   334    56600    1% /devtmpfs                      59949     1    59948    1% /dev/shmtmpfs                      59949   692    59257    2% /runtmpfs                      59949    16    59933    1% /sys/fs/cgroup/dev/mapper/centos-root 52164608 77758 52086850    1% //dev/sda1                 262144   326   261818    1% /boottmpfs                      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/hosts67109955 -rw-r--r--. 1 root root 158 Jun  7  2013 /etc/hosts[root@localhost etc]# dfFilesystem              1K-blocks    Used Available Use% Mounted ondevtmpfs                   227736       0    227736   0% /devtmpfs                      239796       0    239796   0% /dev/shmtmpfs                      239796    5624    234172   3% /runtmpfs                      239796       0    239796   0% /sys/fs/cgroup/dev/mapper/centos-root 104278276 2636220 101642056   3% //dev/sda1                  520868  134236    386632  26% /boottmpfs                       47960       0     47960   0% /run/user/0

    读取文件原理图

    1. 文件首先存储在硬盘上,文件最小的单位是
      块(block)

      ,块由

      扇区(sector)

      组成,块一般大小为

      4kb

      ,连续8个扇区组成一个块

    2. 硬盘的最小存储单位
      扇区(sector)

      ,每个扇区存储

      512字节

    3. 操作系统读取硬盘数据:一次性读取一块数据
    • 读取文件流程

      以读取/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
  • 命令3:id [用户名] / [组名]

  • 用户文件操作

  • # 查看用户详情文件[root@localhost mail]# useradd hammer[root@localhost mail]# cat /etc/passwd# 格式如下hammer:x:1000:1000:[用户简介]:/home/hammer:/bin/bash用户名		 	:hammer密码占位符	   :x1000    	   :userid1000		   :组id/home/hammer    :家目录/bin/bash	    :默认的解析器# 默认的解析器为bash# 解析器的种类 (可以修改)bash  /   sh    / zsh# sh和bash解析器切换/bin/bash/bin/sh切换用户su - [用户名]su [用户名]# 在已存在的用户组内添加用户# 通过指定组名添加[root@localhost mail]# id hammeruid=1000(hammer) gid=1000(hammer) groups=1000(hammer)[root@localhost mail]# useradd wang -g hammer[root@localhost mail]# id wanguid=1001(wang) gid=1000(hammer) groups=1000(hammer)# 通过指定组id添加[root@localhost mail]# useradd -g li 1000[root@localhost mail]# id liuid=1002(li) gid=1000(hammer) groups=1000(hammer)
    • 用户组操作
    [root@localhost mail]# groupadd hammer[root@localhost mail]# cat /etc/grouphammer:x:1000:hammer	:组名x		:密码占位符1000	:组id

    用户相关文件

    • 用户的特征信息:/etc/passwd (掌握文件各列信息)
    • 用户的密码信息:/etc/shadow
    • 用户组特征信息:/etc/group
    • 用户组密码信息:/etc/gshadow
    • 用户家目录默认隐藏文件:/etc/skel/

    不适用useradd命令添加用户

    步骤如下:

    # 添加用户vim /etc/passwdtest08:x:2001:2001:自建用户:/home/test08:/bin/bash# 添加组vim /etc/grouptest08:x:2001:# 添加用户密码密码vim /etc/shadowtest08:$6h4j93wta/:18974:0:99999:7:::# 添加用户组密码vim /etc/gshadowtest08:!::# 家目录mkdir test08cp /etc/skel/.bash* /home/test08/chown -R test08.test08  test08chmod 700 test08/

    【续:文件权限】

    赞(0) 打赏
    未经允许不得转载:爱站程序员基地 » Linux 文件属性及详细操作