• Linux文件和目录的属性及权限


    Linux文件和目录的属性及权限讲解

     

     

     

     

     

     

      

    文字解释:

    第一列:inode索引节点

    第二列:文件类型及权限

    第三列:硬链接个数

    第四列:文件或目录所属的用户(属主)

    第五列:文件或目录所属的用户所归属的组(用户组)

    第六列:文件或目录的大小

    第七、八、九列:文件或目录的最近修改时间

    第十列:实际的文件名或目录名(文件名称存放在上级目录的block中)

    ls -l 显示的时间是修改时间。

    [root@oldboy ~]# ls -l --time-style=long-iso

    total 9104

    -rw-------. 1 root root    1056 2016-07-05 21:13 anaconda-ks.cfg

    drwxr-xr-x. 8 root root    4096 2016-07-18 17:57 data

    -rw-r--r--. 1 root root 9264484 2015-04-15 01:40 etc.tar.gz

    -rw-r--r--. 1 root root   21682 2016-07-05 21:13 install.log

    -rw-r--r--. 1 root root    5890 2016-07-05 21:12 install.log.syslog

    文件的时间说明

    Access: 2016-07-21 15:33:01.698142377 +0800  <==访问时间 find -atime

    Modify: 2016-07-19 09:35:42.432295596 +0800  <==修改时间,内容发生变化 find -mtime

    Change: 2016-07-19 09:35:42.452302559 +0800  <==变化时间,包含Modify权限、属主、用户组 find -ctime

    stat命令查看时间等的属性

     

     

     

    Linux在硬盘格式化分区、创建文件系统时,主要创建了两部分:

    第一部分是inode索引节点(很多个):

    用来存放文件的属性(文件类型、修改时间、权限等),文件的属性不包括文件名。

    inode存放的还包含指向文件实体的指针的功能(inode节点--block的对应关系)等。

    第二部分是Block数据块(很多个):

    用来存放数据和内容(照片、视频、文档等)

    我们读取一个文件的内容时需要通过inode节点指向这个文件的block里,然后通过指向才能从block中读取数据和内容,因为数据和内容都是存放在block里的。

    每个文件或目录的inode大小(存放属性的大小):5.8128    6.4256

    Linux有关block的知识:

    1)磁盘读取数据是按block为单位读取的。

    2)一个文件可能占用多个block每读取一个block就会消耗一次磁盘I/O

    3)如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多

    4)一个block只能存放一个文件的内容,无论内容有多小。如果block 4K,那存放1K的文件,剩余3K就浪费了。

    5block并非越大越好block太大对于小文件存放就会浪费磁盘空间。

    例如:1000K的文件,block4K,占用250blockblock1K,占用1000block。访问效率谁更高?消耗IO分别为250次和1000次。

    6)大文件(大于16K)一般设置block大一点;小文件(小于1K)一般设置block小一点。

    7block太大例如4K,文件都是0.1K的,大量浪费磁盘空间。

    8block太小例如1K,文件都是1000K的,消耗磁盘IO

    9block的设置也是格式化分区时候 mkfs.ext4 -b 2048 -I 256 /dev/sdb(工作中不要改)

    10)文件较大时,block设置大一些会提升磁盘访问效率。

    11ext3/ext4文件一般设置为4K

    文件原理图:

     

       

      

     

     

     

      

    inode原理图:

     

     

    学会给阶段性的知识做小结是学好Linux的好习惯

    有关inode知识的小结:

    1)磁盘分区格式化为ext4文件系统后会生成一定数量的inodeblock

    2inode是索引节点,作用是存放文件的属性信息以及作为文件的索引(指向文件的实体block)。

    3ext3/ext4文件系统的block存放的是文件的实际内容

    4block的大小一般有1k,2k,4k几种。其中引导分区等为1k,其它普通分区为4k(C6)

    [root@oldboy ~]# dumpe2fs /dev/sda1|grep -i "block size"  <==/boot分区10241K

    dumpe2fs 1.41.12 (17-May-2010)

    Block size:               1024

    [root@oldboy ~]# dumpe2fs /dev/sda3|grep -i "block size"  <== / 根分区40964K

    dumpe2fs 1.41.12 (17-May-2010)

    Block size:               4096

    5inode是一块磁盘存储空间,C6非启动分区inode默认大小256字节,C5128字节。

    6inode是一串数字,不同的文件对应的inode(一串数字)在文件系统里是唯一的

    7inode号相同的文件,互为硬链接文件(文件的又一个入口)。

    8)一个文件被创建后至少要占用一个inode和一个block。可以理解为一个文件诞生需要一个inode和一个block,就算是空文件,系统也会分配给它inodeblock

    9)如果一个文件很大,可能占多个block4K)。

    10)如果文件很小,也要至少占一个block,并且剩余空间 不可以使用了(浪费了)。

    11inode大小和总量查看

    [root@oldboy ~]# dumpe2fs /dev/sda3|egrep -i "block size|Inode size"

    dumpe2fs 1.41.12 (17-May-2010)

    Block size:               4096

    Inode size:               256

    [root@oldboy ~]# dumpe2fs /dev/sda3|egrep -i "block count|Inode count"   

    dumpe2fs 1.41.12 (17-May-2010)

    Inode count:              479552

    Block count:              1914624

    Reserved block count:     95731

    12)查看inode的总量和使用量命令df -i

    13)如何生成及指定inode大小 mkfs.ext4 -b 2048 -I 256 /dev/sdb(工作中没必要改)。

    #以上的C6C5分别代表CentOS6CentOS5

     

     

     

     

     

     特别提示:目录不能创建硬链接,只有文件才能创建硬链接。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

      

    文件类型小结:

    1-  regular file 普通文件 *****5星重点)

        普通文件细分又包含:ASCII text纯文本、executable二进制文件、data数据文件。

    [root@oldboy ~]# file /etc/hosts

    /etc/hosts: ASCII text

    [root@oldboy ~]# file /bin/cp

    /bin/cp: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

    [root@oldboy ~]# file /var/log/wtmp

    /var/log/wtmp: data

    [root@oldboy ~]# ls -l /var/log/wtmp /etc/hosts /bin/cp

    -rwxr-xr-x. 1 root root 122872 1015 2014 /bin/cp

    -rw-r--r--. 2 root root    180 7月  19 2016 /etc/hosts

    -rw-rw-r--. 1 root utmp   6144 4月  19 07:49 /var/log/wtmp

    2d  directory 目录 *****5星重点)

    3l link 符号链接或者软连接文件 ***3星重点)

        相当于windows的快捷方式,它指向文件的实体。

    4)字符文件,块设备文件

        c  character    串口设备、猫

        b  block     硬盘、光驱 **2星重点)

    5.sock进程之间通信会用到。

        s  socket

    6)管道文件

        p  named pipe (FIFO)

     

     

      

     

     

     

     

     

     

     

     

      

     

     

     

     

      

      

      

      

      

     

     

     

     

     

     

      

    访问文件原理图:

     

     想要访问/tmp/oldboyfile首先从“/”根目录开始,通过“/”根目录的inode找到对应的block。其中根的block内又存放有子文件和子目录的文件名(包括/tmp)。通过访问/tmp的inode信息,然后在由inode指向对应的block,从而找到oldboyfile文件的名字。找到oldboyfile后,通过它的inode信息判断,如果权限允许则指向对应block。

     

     

     

     

      

    对于文件:

    [root@oldboy test]# umask 032   

    [root@oldboy test]# umask       

    0032

    [root@oldboy test]# touch 032.log

    [root@oldboy test]# ls -l 032.log

    -rw-r--r--. 1 root root 0 7月  26 18:14 032.log    #为什么权限是644?

    [root@oldboy test]# umask 051

    [root@oldboy test]# umask

    0051

    [root@oldboy test]# touch 051.log

    [root@oldboy test]# ls -l 051.log

    -rw--w-rw-. 1 root root 0 7月  26 18:18 051.log   #为什么权限是626?

    =========================================

    对于目录:

    [root@oldboy test]# umask

    0051

    [root@oldboy test]# mkdir d051

    [root@oldboy test]# ls -ld d051/

    drwx-w-rw-. 2 root root 4096 7月  26 18:26 d051/

    小结:

        文件默认权限就是666 - umask得到的值,目录默认权限就是777 - umask得到的值。但是对于文件,umask值的每一位上如果有奇数,相减完后,奇数的那一位还要在加上1。

    如下所示:

    f 666-umask

    6 6 6

    0 2 2 -

    ---------

    6 4 4

    6 6 6

    0 3 2 -

      1   +

    ---------

    6 4 4

    6 6 6

    0 5 1 -

      1 1 +

    ---------

    6 2 6

    生产案例:

    网站站的服务用户为oldboy

    防止木马入侵:

    文件和目录给什么权限,安全临界点:

    d(目录) 755  root root

    f(文件) 644  root root

    所以umask默认控制的权限是比较安全的值

      

    特别提示:在一般生产环境当中,umask的使用不多见,在此,大家了解一下umask是怎么回事即可。

  • 相关阅读:
    monorepo使用教程
    pnpm教程
    Vite 从入门到精通,玩转新时代前端构建法则
    browserslist 目标浏览器配置表
    VS项目属性的一些配置项的总结
    FastAPI入门教程(持续更新中)
    FastAPI 学习之路(六十)打造系统的日志输出
    FastAPI 学习之路(六十一)使用mysql数据库替换sqlite数据库
    FastAPI 学习之路(五十九)封装统一的json返回处理工具
    FastAPI 学习之路(五十八)对之前的代码进行优化
  • 原文地址:https://www.cnblogs.com/sunday294/p/6907955.html
Copyright © 2020-2023  润新知