zoukankan      html  css  js  c++  java
  • Linux 文件属性及权限_007

     

     

    Linux一切皆文件:

    Llinux系统的文件或目录的属性主要包括:索引节点、文件类型、文件权限、链接数、所属的用户和用户组、最近修改时间等。

     

    Llinux文件属性及权限图形说明:

     

     

    Linux文件属性及权限补充说明:

     

     

     

     

    第一列:inode索引结点

     

    inode (index node)概述

     

      一个硬盘需要存放数据,首先分区,再格式化(格式化会创建文件系统类型),最后就可以存储数据。

    Linux的文件系统类型一般有ext2/ext3/ext4等类型。在每个linux存储设备或存储分区被格式化创建成

    ext4(CentOS 6.7)文件系统后,创建文件系统一般生成两部分:第一部分inode,第二部分是block。

    inode用来存储文件属性及信息索引(指向文件实体,但文件名称不包含在inode),block用来存放实

    际的数据使用(例如文字、照片、视频等普通文件数据)。inode是一块存储空间,CentOS 6非启动分

    区inode默认大小为256字节,CentOS 5 默认大小为128字节。正常情况下,一个文件只能占用一个

    inode,如果两个文件的inode相同则说明是这两个文件是互为硬链接,也可以是多个文件。inode节点

    的总数一般在格式化时就给定。

     

    查看系统分区及文件类型

    [root@oldboy test]# df -Th

    Filesystem     Type   Size  Used Avail Use% Mounted on

    /dev/sda3      ext4   8.8G  1.4G  7.0G  17% /

    tmpfs          tmpfs  491M     0  491M   0% /dev/shm

    /dev/sda1      ext4   190M   36M  145M  20% /boot

     

    查看指定文件inode

    [root@oldboy test]# stat file.txt

      File: `file.txt'

      Size: 0               Blocks: 0          IO Block: 4096   regular empty file

    Device: 803h/2051d      Inode: 139792      Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

    Access: 2018-11-13 16:58:45.989909373 +0800

    Modify: 2018-11-13 16:58:45.989909373 +0800

    Change: 2018-11-13 16:58:45.989909373 +0800

    [root@oldboy test]# ls -lih file.txt

    139792 -rw-r--r-- 1 root root 0 Nov 13 16:58 file.txt

     

    查看系统分区inode使用情况

    [root@oldboy test]# df -i

    Filesystem     Inodes IUsed  IFree IUse% Mounted on

    /dev/sda3      593344 55764 537580   10% /

    tmpfs          125596     1 125595    1% /dev/shm

    /dev/sda1       51200    38  51162    1% /boot

    [root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode count"

    dumpe2fs 1.41.12 (17-May-2010)

    Inode count:              593344

     

    不同CentOS版本inode大小不同(boot分区默认是128字节)

    [root@localhost test]# cat /etc/redhat-release

    CentOS release 5.5 (Final)

    [root@localhost test]# dumpe2fs /dev/sda1 | grep -i "inode size"

    dumpe2fs 1.39 (29-May-2006)

    Inode size:              128

    [root@localhost test]# dumpe2fs /dev/sda3 | grep -i "inode size"

    dumpe2fs 1.39 (29-May-2006)

    Inode size:              128

    [root@oldboy test]# cat /etc/redhat-release

    CentOS release 6.7 (Final)

    [root@oldboy test]# df -h

    Filesystem      Size  Used Avail Use% Mounted on

    /dev/sda3       8.8G  1.4G  7.0G  17% /

    tmpfs           491M     0  491M   0% /dev/shm

    /dev/sda1       190M   36M  145M  20% /boot

    [root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "inode size"

    dumpe2fs 1.41.12 (17-May-2010)

    Inode size:               128

    [root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "inode size"

    dumpe2fs 1.41.12 (17-May-2010)

    Inode size:               256

     

     

    block概述

     

      linux存储设备或存储分区被格式化创建成ext4(CentOS 6.7)文件系统后,创建文件系统

    一般生成两部分:第一部分inode,第二部分是block。inode前面已讲述,。了解block先了

    解sector(扇区)。硬盘的最小存储单位:sector(扇区),每个扇区储存512字节,操作系统

    会一次性连续读取多个扇区,即一次性读取多个扇区称为一个block(块),文件存取的最小

    单位:block(块),由多个扇区组成;block的大小常见的有1KB、2KB、4KB,在linux中常见

    设置为4KB,即连续8个扇区组成一个block,/boot分区的block一般为1KB。系统创建一个文件

    或者文件占大小一次固定分配4K(8个扇区,每个扇区512B)

     

    查看每个分区的sector大小

    [root@oldboy test]# df -l

    Filesystem     1K-blocks    Used Available Use% Mounted on

    /dev/sda3        9213440 1440588   7298180  17% /

    tmpfs             502384       0    502384   0% /dev/shm

    /dev/sda1         194241   35992    148009  20% /boot

     

    查看分区指定的block大小

    [root@oldboy test]# dumpe2fs /dev/sda3 | grep -i "block size"

    dumpe2fs 1.41.12 (17-May-2010)

    Block size:               4096

    [root@oldboy test]# dumpe2fs /dev/sda1 | grep -i "block size"

    dumpe2fs 1.41.12 (17-May-2010)

    Block size:               1024

     

    查看指定分区的扇区、磁道、柱面、磁头等信息,磁盘的容量=磁头*磁道*扇区(512B)*柱面

    [root@oldboy test]# fdisk -l  /dev/sda3

    Disk /dev/sda3: 9721 MB, 9721348096 bytes

    255 heads, 63 sectors/track, 1181 cylinders

    Units = cylinders of 16065 * 512 = 8225280 bytes

    Sector size (logical/physical): 512 bytes / 512 bytes

    I/O size (minimum/optimal): 512 bytes / 512 bytes

    Disk identifier: 0x00000000

     

     

     

     

    第二列:文件类型及权限

     

      文件类型及权限共有10个字符组成(第一个字符代表文件类型、后面9个字符代表文件权限),

    假如把SElinux开启,文件类型及权限共有11个字符(第一个字符代表文件类型、第2个到第10个字符

    代表文件权限,第11个字符与selinux有关系,一般用不到)

     

    第一个字符:

    Linux的文件类型

      在linux系统中,可以说一切设备(包括目录、普通文件等)皆文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号链接文件、管道文件等等

     

    1、 d(directory)表示目录

    [root@oldboy test]# ls -l /test/ | grep "^d"

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir1

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir2

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 dir3

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

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir1

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir2

    drwxr-xr-x 2 root root 4096 Nov 14 19:24 /test/dir3

     

    2、 -(regular file) 普通文件

    (1)、纯文本文件(ascll)文件内容可以直接读到的数据,例如:字母、数字、特殊字条串等,可以用cat命令读取的文,比如配置文件几乎都是这种类型。

    [root@oldboy test]# file file.txt

    file.txt: ASCII text

     

    (2)、二进制文件(binary)linux中的命令程序就属于这个格式。例如cat 命令就是一个二进制文件。

    [root@oldboy test]# file /bin/ls

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

     

    (3)、数据格式文件(data)有些程序运行过程中会读取某些特定格式的文件,那些特定格式的文件可以被称为数据文件。例如:linux 在用户登录时都会将登录数据记录在/var/log/wtmp 那个文件内,该文件是一个数据文件,通过last命令读出来。/var/log/lastlog也是一个数据文件,可以使用lastlog命令读出来。cat命令读取会是乱码,因为他属于一种特殊格式的文件。file 命令也可以查看文件类型

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

    /var/log/wtmp: data

     

    3、l (link)链接文件(一般指得是软链接文件或符号链接)

    [root@oldboy test]# ls -l /mnt/file_hard_link.txt

    lrwxrwxrwx 1 root root 14 Nov 14 19:38 /mnt/file_hard_link.txt -> /test/file.txt

    [root@oldboy test]# readlink /mnt/file_hard_link.txt

    /test/file.txt

     

    4、 b(block)块设备和其它外围设备,是特殊类型的文件

    [root@oldboy ~]# find /dev/ -type b | xargs ls -l | head -3

    brw-rw---- 1 root disk   7,  0 Nov 12 23:12 /dev/loop0

    brw-rw---- 1 root disk   7,  1 Nov 12 23:12 /dev/loop1

    brw-rw---- 1 root disk   7,  2 Nov 12 23:12 /dev/loop2

     

    5、 c(character)字符设备文件(一般是指串设备或终端设备等)

    [root@oldboy ~]# find /dev/ -type c | xargs ls -l | head -3

    crw-rw---- 1 root video    10, 175 Nov 12 23:12 /dev/agpgart

    crw-rw---- 1 root root    251,   0 Nov 12 23:12 /dev/bsg/0:0:0:0

    crw-rw---- 1 root root    251,   1 Nov 12 23:12 /dev/bsg/2:0:0:0

     

    6、 s(socket)套接字文件

    [root@oldboy ~]# find /dev/ -type s | xargs ls -l | head -3

    srw-rw-rw- 1 root root 0 Nov 12 23:12 /dev/log

     

    7、 p(named pipe)管道文件

    [root@oldboy ~]# find /var/spool/postfix/public/ -type p | xargs ls -l

    prw--w--w- 1 postfix postfix 0 Nov 14 19:52 /var/spool/postfix/public/pickup

    prw--w--w- 1 postfix postfix 0 Nov 14 19:48 /var/spool/postfix/public/qmgr

     

    Linux下扩展名的作用

    在linux中,虽然扩展名没什么实际意义,但为了兼容windows,同时方便我们多数习惯了windows用户区分文件的不同,所以还是习惯通过扩展名来表示不同的文件类型,例如:

    1、.tar.tar.gz.tgz.zip.tar.bz表示压缩文件,创建命令一般为targzipunzip等

    2、.sh表示shell脚本文件,通过shell语言开发的程序

    3、.pl表示perl语言文件,通过perl语言开发的程序

    4、.py表示python语言文件,通过python语言开发的程序

    5、.html.htm.php.jsp.do表示网页语言文件

    6、.conf表示系统配置文件

    7、.rpm表示rpm安装包文件

     

     

    后面9个字符:

     

     

     

     

    第三列:硬链接个数

     

    文件链接分为两种,硬链接和软链接(符号链接)。

    硬链接文件与软链接访问图形说明:

    软链接(符号链接)可以看作是windows的快捷方式,可以让你快速找到目标文件,只是一个普通的文件,

    但软链接文件跟实际的原文件inode是不相同,软链接可以针对文件和目录进行创建。

     

    硬链接是通过原文件的索引节点进行链接的文件,也可以理解为通过原文件inode复制出来的一个文件。

    硬链接和原文件的inode索引节点是相同的,硬链接只可以针对文件进行创建,目录创建不了(系统限制)。

    每个创建的目录会自动创建两个硬链接.和..可通过ls –a查看

     

    链接创建命令

    ln       原文件   目标文件      ##创建硬链接命令

    ln  -s   原文件   目标文件     ##创建软链接命令

     

    硬链接创建

    [root@oldboy test]# touch file

    [root@oldboy test]# echo "testfile" > file

    [root@oldboy test]# cat file

    testfile

    [root@oldboy test]# ln file file_hard_link

    [root@oldboy test]# ls -lih

    total 0

    140988 -rw-r--r-- 2 root root 0 Nov 15 01:51 file

    140988 -rw-r--r-- 2 root root 0 Nov 15 01:51 file_hard_link

    [root@oldboy test]# cat file_hard_link

    testfile

    [root@oldboy test]# mkdir dir

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

    drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/

    [root@oldboy test]# ls -lid dir/ dir/.

    140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/

    140989 drwxr-xr-x 2 root root 4096 Nov 15 01:52 dir/.

     

     

    软链接创建

    [root@oldboy test]# touch file

    [root@oldboy test]# echo "testfile" > file

    [root@oldboy test]# cat file

    testfile

    [root@oldboy test]# ln -s file file_soft_link

    [root@oldboy test]# ls -li

    total 4

    140988 -rw-r--r-- 1 root root 9 Nov 15 01:57 file

    140989 lrwxrwxrwx 1 root root 4 Nov 15 01:57 file_soft_link -> file

    [root@oldboy test]# cat file_soft_link

    testfile

     

     

     

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

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

     

      Linux/Unix是一个多用户、多任务的操作系统同,在linux系统系统用户是分角色的,linux系统中,

    由于角色不同,权限和所完成的任务也不同,用户的角色是通过UID和GID识别的,特别是UID,在linux

    系统中,一个UID是唯一标识系统用户的账号(相当于我们的身份证)。用户的系统账号的名称(如oldboy)

    其实给人(管理员)看的,linu系统能够识别的仅仅是UID和GID这样的数字。用户UID就相当于我们的身份

    证一样,用户名就相当于我们的名字。

     

    UID(User Identify)  中文用户ID,相当于各位的身份证,在系统中是唯一的

    GIP(Group Identify) 中文组ID,相当于各位的家庭或者你们的学校ID

     

    Linux系统分为三类用户:

    1、 超级用户root

    root(超级管理员),UID为0,拥有最高的权限,类似windows系统的administrator本地管理员。root可以使用sudo管理提权给普通用户使用,相当于分配特殊权限给普通用户使用。

    2、 虚拟用户

    虚拟用户,UID为1~499,虚拟用户一般与系统和程序服务相关,一般是默认不能登录系统使用。

    3、 普通用户

    一般是由具备系统管理员root权限用户所创建,UID为500~65534,这类用户的权限会受到一定的基本权限限制,一般来自具备管理员用户的限制。

     

    查看用户UID和GID命令

    [root@oldboy ~]# id oldboy

    uid=500(oldboy) gid=500(oldboy) groups=500(oldboy)

     

    当创建一个用户,以下配置文件会被修改

    用户配置文件         /etc/passwd

    用户密码配置文件     /etc/shadow

    用户组配置文件       /etc/group

    用户组密码配置文件   /etc/gshadow

     

    1、用户配置文件/etc/passwd 是系统识别用户的一个文件,系统所有用户都记录在这里/etc/passwd文件里 

     

    2、用户密码配置文件/etc/shadow是系统用户密码配置文件,与用户配置文件/etc/passwd中x字段的占位符相对应,记录着用户密码等相关记录。

     

     

    3、用户组配置文件/etc/group记录用户组相关信息。

     

     

    4、用户组密码配置文件/etc/gshadow与用户配置文件/etc/group中x占位符相对应,记录用户组密码相关信息。

     

     

     

     

    第七、八、九列:文件或目录的修改时间,默认月日时分

     

    文件时间戳分三种:

    modify   修改时间  find命令对应选项  -mtime   一般修改文件内容

    change   改变时间  find命令对应选项  -ctime   文件的属性改变

    access    访问时间  find命令对应选项  -actime  访问文件内容

     

     

    格式化时间:

    [root@oldboy ~]# ls -l

    total 44

    -rw-------. 1 root root  1139 Sep  7 17:18 anaconda-ks.cfg

    -rw-r--r--. 1 root root 22179 Sep  7 17:18 install.log

    -rw-r--r--. 1 root root  5890 Sep  7 17:16 install.log.syslog

    drwxr-xr-x  2 root root  4096 Nov 14 18:18 test

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

    total 44

    -rw-------. 1 root root  1139 2018-09-07 17:18 anaconda-ks.cfg

    -rw-r--r--. 1 root root 22179 2018-09-07 17:18 install.log

    -rw-r--r--. 1 root root  5890 2018-09-07 17:16 install.log.syslog

    drwxr-xr-x  2 root root  4096 2018-11-14 18:18 test

     

    修改时间戳命令:

    [root@oldboy ~]# stat install.log

      File: `install.log'

      Size: 22179           Blocks: 56         IO Block: 4096   regular file

    Device: 803h/2051d      Inode: 13          Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

    Access: 2018-09-07 17:12:50.634999903 +0800

    Modify: 2018-09-07 17:18:05.290999679 +0800

    Change: 2018-09-07 17:18:18.479999676 +0800

     

    [root@oldboy test]# touch file.txt

    [root@oldboy test]# echo "testfile" > file.txt

    [root@oldboy test]# stat file.txt

      File: `file.txt'

      Size: 9               Blocks: 8          IO Block: 4096   regular file

    Device: 803h/2051d      Inode: 140987      Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

    Access: 2018-11-17 13:33:09.362803892 +0800

    Modify: 2018-11-17 13:33:57.626808703 +0800

    Change: 2018-11-17 13:33:57.626808703 +0800

    [root@oldboy test]# cat file.txt

    testfile

    [root@oldboy test]# stat file.txt

      File: `file.txt'

      Size: 9               Blocks: 8          IO Block: 4096   regular file

    Device: 803h/2051d      Inode: 140987      Links: 1

    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

    Access: 2018-11-17 13:34:13.969814896 +0800

    Modify: 2018-11-17 13:33:57.626808703 +0800

    Change: 2018-11-17 13:33:57.626808703 +0800

    [root@oldboy test]# chown oldboy.oldboy file.txt

    [root@oldboy test]# stat file.txt

      File: `file.txt'

      Size: 9               Blocks: 8          IO Block: 4096   regular file

    Device: 803h/2051d      Inode: 140987      Links: 1

    Access: (0644/-rw-r--r--)  Uid: (  500/  oldboy)   Gid: (  500/  oldboy)

    Access: 2018-11-17 13:34:13.969814896 +0800

    Modify: 2018-11-17 13:33:57.626808703 +0800

    Change: 2018-11-17 13:34:38.519806714 +0800

     

     

     

     

    第十列:文件名

     

    注意:文件名不包含在文件inode里,而是在上级目录的block里

    查看文件和目录

    [root@oldboy ~]# ls -lF

    total 56

    -rw-------. 1 root root  1139 Sep  7 17:18 anaconda-ks.cfg

    -rw-r--r--. 1 root root 22179 Sep  7 17:18 install.log

    -rw-r--r--. 1 root root  5890 Sep  7 17:16 install.log.syslog

    -rw-r--r--  1 root root 10240 Nov 17 18:10 pack.tar

    drwxr-xr-x  2 root root  4096 Nov 17 17:47 test/

     

    感谢老男孩博客提供参考  https://blog.51cto.com/oldboy

  • 相关阅读:
    springboot中如何获取配置文件的值
    自动获取当月天数
    控制输入前端时间格式及其它常见需求
    页面输出格式常用注解----@JsonIgnore,@JsonFormat,@JsonFormat
    echart动态生成标题
    echart柱状图中每个柱子超过阈值改变颜色状态
    如何把箭头放置在文本前面,并根据数据的正负显示向上和向下箭头
    02、GPIO初始化
    Linux文件目录的权限
    Linux执行命令./command与直接输入命令的区别
  • 原文地址:https://www.cnblogs.com/zoulongbin/p/10456285.html
Copyright © 2011-2022 走看看