美文网首页
作业-第03周--课堂-Day12-linux文件核心属性知识(

作业-第03周--课堂-Day12-linux文件核心属性知识(

作者: MineG | 来源:发表于2019-03-17 12:03 被阅读0次

    Day12 课堂笔记

    1. 用户及用户组

    1.1 用户介绍

    ~~Linux是一个多用户、多任务的分时操作系统。每个用户都有一个唯一的用户名和用户口令(密码),普通用户需要超级用户权限时,可以通过“sudo命令名”方式来执行仅root用户才允许执行的权限。
    说明:sudo和su是两个重要的切换用户角色的命令

    1.2.1 Linux系统中用户角色划分

    ~~在Linux系统中,用户是分角色的,由于用户角色不同,权限和所完成的任务也不同:用户的角色是通过UID和GID来识别的

    • UID 用户ID,用来标识每个用户的唯一标示符
    • GID 组ID,用来标识用户组的唯一标识符

    Linux里所有的用户和进程都要有用户对应。
    文件存在必须对应用户
    进程运行必须应用用户

    1.2.1.1 超级用户:root

    ~~默认是root用户,它的UID和GID都为0。root用户在每台Unix/Linux操作系统中都是唯一且真实存在的。
    ~~在生产环境中,一般会禁止root账号通过SSH远程连接服务器,也会更改默认的SSH端口.

    [root@oldboyedu ~]# id root
    uid=0(root) gid=0(root) groups=0(root)
    [root@oldboyedu ~]# id
    uid=0(root) gid=0(root) groups=0(root) 
    [root@oldboyedu ~]# whoami
    root
    

    1.2.1.2 普通用户

    ~~这类用户一般是由具备系统管理员root权限的运维或系统管理员添加的

    1.2.1.3 虚拟用户

    ~~特点是安装系统后默认就会存在的,且默认情况大多数不能登录系统。
    价值何在?
    满足文件或进程运行属主的要求。但是又不会带来管理风险。


    Linux安全优化:

    • 安装系统后可以删除用不到的虚拟用户,但最好不删而是注释掉,万一出问题可以恢复回来。
    • 在部署服务的时候,一般就需要创建虚拟用户,满足服务启动的属主需求。

    Linux系统中不同用户角色对应的UID

    UID整数范围 角色
    0 超级用户
    1-499 虚拟用户
    500-60000(CentOS6)1000-60000(CentOS7) 普通用户

    1.2 用户组介绍

    ~~Linux系统中的用户组就是具有相同特征的用户集合,用户和用户组的对应关系有:一对一,一对多,多对一和多对多。

    1.3 创建用户及用户组命令

    • 创建用户:useradd
    • 创建用户组:groupadd
    • 切换用户:su

    勇于承担责任,才是能力变强的最佳捷径。————老男孩
    要想比别人强,永远要比别人多做一点点,早做一点点。————老男孩
    半步领先

    [root@oldboyedu ~]# useradd test
    [root@oldboyedu ~]# id test
    uid=1002(test) gid=1002(test) groups=1002(test)
    [root@oldboyedu ~]# groupadd sa
    [root@oldboyedu ~]# su - test
    [test@oldboyedu ~]$ touch test.txt
    [test@oldboyedu ~]$ ls -l
    total 0
    -rw-rw-r--. 1 test test 0 Oct  1 10:20 test.txt
    

    2. 文件的权限列

    ~~Linux中,每个文件或目录都有一组共9个基础权限位,每三个字符被分为一组,它们分别是属主权限位、用户组权限位、其它用户权限位。

    不同权限位对应的用户和组图解

    其中表示权限的字符rwx-分别代表特殊的含义,如下:

    • r(read):可读权限,对应数字4。
    • w(write):可写权限,对应数字2。
    • x(Execute):可执行权限,对应数字1。
    • -:没有任何权限,对应数字0。

    3. 文件的修改时间属性列(了解即可)

    ~~文件的时间戳属性有3重类型,即访问时间(access)、修改时间(modify)、改变时间(change)。

    [root@oldboyedu ~]# stat /etc/hosts
      File: ‘/etc/hosts’
      Size: 158         Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d  Inode: 16829878    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:net_conf_t:s0
    Access: 2020-10-01 00:00:21.849999186 +0800访问时间
    Modify: 2013-06-07 22:31:32.000000000 +0800修改时间
    Change: 2019-03-04 11:15:49.426692303 +0800变化时间
     Birth: -
    [root@oldboyedu ~]# stat -c %A /etc/hosts
    -rw-r--r--
    
    [root@oldboyedu /data]# echo oldboy>>test.txt
    [root@oldboyedu /data]# stat test.txt
      File: ‘test.txt’
      Size: 14          Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d  Inode: 33656257    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2020-10-01 11:07:28.953508888 +0800
    Modify: 2020-10-01 11:07:53.119507988 +0800
    Change: 2020-10-01 11:07:53.119507988 +0800
     Birth: -
    [root@oldboyedu /data]# cat test.txt
    oldboy
    oldboy
    [root@oldboyedu /data]# cat test.txt
    oldboy
    oldboy
    [root@oldboyedu /data]# stat test.txt
      File: ‘test.txt’
      Size: 14          Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d  Inode: 33656257    Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2020-10-01 11:08:32.147506535 +0800
    Modify: 2020-10-01 11:07:53.119507988 +0800
    Change: 2020-10-01 11:07:53.119507988 +0800
     Birth: -
    [root@oldboyedu /data]# chmod +x test.txt 
    [root@oldboyedu /data]# stat test.txt
      File: ‘test.txt’
      Size: 14          Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d  Inode: 33656257    Links: 1
    Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:default_t:s0
    Access: 2020-10-01 11:08:32.147506535 +0800
    Modify: 2020-10-01 11:07:53.119507988 +0800
    Change: 2020-10-01 11:08:57.442505593 +0800
     Birth: -
    
    [root@oldboyedu /data]# ls --time-style=long-iso -l
    total 12
    -rw-r--r--. 1 root root   0 2020-10-01 00:19 1.txt
    -rw-r--r--. 1 root root   0 2020-10-01 00:19 2.txt
    -rw-r--r--. 1 root root   0 2020-10-01 00:19 3.txt
    -rw-r--r--. 1 root root   0 2020-10-01 00:19 4.txt
    -rw-r--r--. 1 root root   0 2020-10-01 00:19 5.txt
    -rw-r--r--. 1 root root 187 2020-10-01 09:01 oldboy.tar.gz
    -rw-r--r--. 1 root root  18 2020-10-01 09:01 paichu.txt
    -rwxr-xr-x. 1 root root  14 2020-10-01 11:07 test.txt
    
    ls参数:
    -t modify,文件内容被改过之后的时间。
    -c change,文件属性发生改变的时间。
    -a access,文件内容被访问过的时间。
    

    4. 索引节点

    ~~索引节点是Linux系统中重要的基础知识,索引节点Inode列的属性对应“ls -lhi /data”命令结果中的第1列的一串数字,如下:

    [root@oldboyedu  ~]# ls -lhi /data/
    total 0
    16974684 -rw-r--r-- 1 root root 0 Mar 15 11:49 1.txt
    

    ~~在每个Linux存储设备或存储设备的分区被格式化为ext系列文件系统后,都会生成两部分内容:第一部分是inode(默认大小128B或256B),第二部分是Block(默认大小1~4KB)。inode本质是一小块具备唯一数字编号的存储空间,主要用来存放文件(目录)属性的数据信息,inode里面唯独不包含文件名本身(文件名不算文件的属性)。Block叫做磁盘块,是用来存放实际数据的实体单元,即真正用来存放数据的地方。inode存储的属性信息,包括但不限于文件大小、属主、归属的用户组、文件权限、文件类型、修改时间等,还包含指向文件的实体指针等(Block的位置)。

    4.1 Inode和Block的特点

    Inode特点

    • ext3/ext4文件系统(CentOS5.x/CentOS6.x默认的文件系统)下,一个非空文件至少要占用一个Inode(有且只有一个)和一个Block(可以有多个)。
    • Inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。
    • Inode在某一个文件系统(分区)内是唯一的。

    Block特点

    • 硬盘读取数据是以Block为单位读取的。
    • 每读取一个Block就会消耗一次I/O。
    • 若文件比较大,一个文件可能占用多个Block。
    • 若文件比较小,一个Block剩余空间会被浪费,无论内容有多小。

    4.2 查看和管理Inode

    查看文件系统Inode总量以及剩余量的命令如下:

    [root@oldboyedu  ~]# df -i
    Filesystem      Inodes IUsed   IFree IUse% Mounted on
    /dev/sda3      9960960 73246 9887714    1% /
    devtmpfs        121783   373  121410    1% /dev
    tmpfs           124487     1  124486    1% /dev/shm
    tmpfs           124487   697  123790    1% /run
    tmpfs           124487    16  124471    1% /sys/fs/cgroup
    /dev/sda1       131072   332  130740    1% /boot
    tmpfs           124487     1  124486    1% /run/user/0
    [root@oldboyedu  ~]# 
    

    查看磁盘的使用量相当于是看Block的情况,示例命令如下:

    [root@oldboyedu  ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.8G   18G   9% /
    devtmpfs        476M     0  476M   0% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    [root@oldboyedu  ~]# 
    

    4.3 磁盘空间不足导致企业故障的案例

    以下是磁盘装满的两种企业模拟案例

    环境准备,命令集合演示结果如下:

    [root@oldboyedu  ~]# mkdir -p /app/logs
    [root@oldboyedu  ~]# dd if=/dev/zero of=/dev/sdc bs=8K count=10 
    10+0 records in
    10+0 records out
    81920 bytes (82 kB) copied, 0.000122544 s, 668 MB/s
    [root@oldboyedu  ~]# mkfs.ext4 /dev/sdc 
    mke2fs 1.42.9 (28-Dec-2013)
    /dev/sdc is not a block special device.
    Proceed anyway? (y,n) y
    
    Filesystem too small for a journal
    Discarding device blocks: done                            
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    16 inodes, 80 blocks
    4 blocks (5.00%) reserved for the super user
    First data block=1
    1 block group
    8192 blocks per group, 8192 fragments per group
    16 inodes per group
    
    Allocating group tables: done                            
    Writing inode tables: done                            
    Writing superblocks and filesystem accounting information: done
    
    [root@oldboyedu  ~]# mount -o loop /dev/sdc /app/logs
    [root@oldboyedu  ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.7G   18G   9% /
    devtmpfs        476M   52K  476M   1% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    /dev/loop0       73K   14K   54K  21% /app/logs
    [root@oldboyedu  ~]# 
    

    4.3.1 模拟Block被占满了的测试案例

    [root@oldboyedu  ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.7G   18G   9% /
    devtmpfs        476M   52K  476M   1% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    /dev/loop0       73K   14K   54K  21% /app/logs
    [root@oldboyedu  ~]# cd /app/logs/
    [root@oldboyedu  /app/logs]# ls -lh /bin/ls
    -rwxr-xr-x. 1 root root 115K Oct 31 03:16 /bin/ls
    [root@oldboyedu  /app/logs]# cp /bin/ls .
    cp: error writing ‘./ls’: No space left on device
    cp: failed to extend ‘./ls’: No space left on device
    [root@oldboyedu  /app/logs]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.7G   18G   9% /
    devtmpfs        476M   52K  476M   1% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    /dev/loop0       73K   70K     0 100% /app/logs
    [root@oldboyedu  /app/logs]# mv ls /tmp/
    [root@oldboyedu  /app/logs]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.7G   18G   9% /
    devtmpfs        476M   80K  476M   1% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    /dev/loop0       73K   14K   54K  21% /app/logs
    [root@oldboyedu  /app/logs]# 
    

    4.3.2 模拟Inode耗尽的测试案例

    [root@oldboyedu  /app/logs]# touch {1..6}.txt
    touch: cannot touch ‘6.txt’: No space left on device
    [root@oldboyedu  /app/logs]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda3        19G  1.8G   18G   9% /
    devtmpfs        476M   80K  476M   1% /dev
    tmpfs           487M     0  487M   0% /dev/shm
    tmpfs           487M  7.7M  479M   2% /run
    tmpfs           487M     0  487M   0% /sys/fs/cgroup
    /dev/sda1       253M  136M  117M  54% /boot
    tmpfs            98M     0   98M   0% /run/user/0
    /dev/loop0       73K   14K   54K  21% /app/logs
    [root@oldboyedu  /app/logs]# df -i
    Filesystem      Inodes IUsed   IFree IUse% Mounted on
    /dev/sda3      9960960 73249 9887711    1% /
    devtmpfs        121783   378  121405    1% /dev
    tmpfs           124487     1  124486    1% /dev/shm
    tmpfs           124487   703  123784    1% /run
    tmpfs           124487    16  124471    1% /sys/fs/cgroup
    /dev/sda1       131072   332  130740    1% /boot
    tmpfs           124487     1  124486    1% /run/user/0
    /dev/loop0          16    16       0  100% /app/logs
    [root@oldboyedu  /app/logs]# mv *.txt /tmp/
    [root@oldboyedu  /app/logs]# df -i
    Filesystem      Inodes IUsed   IFree IUse% Mounted on
    /dev/sda3      9960960 73254 9887706    1% /
    devtmpfs        121783   378  121405    1% /dev
    tmpfs           124487     1  124486    1% /dev/shm
    tmpfs           124487   703  123784    1% /run
    tmpfs           124487    16  124471    1% /sys/fs/cgroup
    /dev/sda1       131072   332  130740    1% /boot
    tmpfs           124487     1  124486    1% /run/user/0
    /dev/loop0          16    11       5   69% /app/logs
    [root@oldboyedu  /app/logs]# touch 1.txt
    [root@oldboyedu  /app/logs]# ls
    1.txt  lost+found
    

    4.3.3 磁盘空间满了的故障情况总结

    • 情况1:Block耗尽,例如500GB的磁盘存放了400GB+200GB的视频文件。
    • 情况2:Inode耗尽,产生大量的小文件(小于1KB)。

    相关文章

      网友评论

          本文标题:作业-第03周--课堂-Day12-linux文件核心属性知识(

          本文链接:https://www.haomeiwen.com/subject/gvzrmqtx.html