第九章Linux文件核心属性知识
1、Linux是一个多用户、多任务的操作系统。
1.1、用户:管理Linux系统而存在的。
用户一般分为用户名和用户ID,相当于我们的名字和身份证,名字和学号。
用户名方便管理员使用,用户ID是唯一区别一个用户(计算机只识别ID)
1.2、用户名:user 用户ID:UID
Linux里所有的用户和进程都要有用户对应。
文件存在必须对应用户 进程运行必须应用用户
2、Linux里把用户分为三类:
2.1、超级管理员 root(唯一) 权限堪称皇帝,UID为0。
UID为0的都有皇帝对应的权限。
id 查看用户身份
[root@yuzhiwei~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@yuzhiwei~]# id
uid=0(root) gid=0(root) groups=0(root)
whoami 查看当前用户
[root@yuzhiwei~]# whoami
root
不要修改ID为0变管理员
作业:root密码丢失如何找回?
2.2、虚拟用户(傀儡)
实际存在的用户,但是不允许它登录。
价值何在?(作用)
它能够满足文件或进程运行属主的要求,但有不会带来管理风险。
UID 1-499
2.3、普通用户
实际存在的用户,又允许它登录,它是管理员身份创建的,帮助管理员管理系统的。
权限仅仅限制家目录,在一些系统级目录可读不可写,不可以进入/root目录。
UID C7 1000起步 C6 500起步
useradd 添加普通用户(管理员身份)
3、用户组:集合、组织。
相当于人的家庭,Linux里面每个用户必须要有一个组织,这个组织就是用户组。用户组也是给人看的,用户组也有唯一标识,Group ID 简称GID.
默认情况创建用户,并没有创建用户组,它会自动创建一个和用户名相同的用户组以及相同的GID。
[root@yuzhiwei~]# id oldgirl
uid=1000(oldgirl) gid=1000(oldgirl) groups=1000(oldgirl)
4、用户和用户组的对应关系
4.1、1对1
4.2、1对多个用户组
4.3、多个用户对应一个用户组
4.4、多对多
[root@yuzhiwei~]# id oldgirl
uid=1000(oldgirl) gid=1000(oldgirl) groups=1000(oldgirl)
[root@yuzhiwei~]#
[root@yuzhiwei~]# useradd test
[root@yuzhiwei~]# id test
uid=1001(test) gid=1001(test) groups=1001(test)
[root@yuzhiwei~]# groupadd sa
[root@yuzhiwei~]# su - test
[test@yuzhiwei~] ls -l
total 0
-rw-rw-r-- 1 test test 0 Mar 16 10:53 test.txt
[test@yuzhiwei~]$ logout
[root@yuzhiwei~]# ls -l /dat
ls: cannot access /dat: No such file or directory
[root@yuzhiwei~]# ls -l /data
total 0
-rw-r--r-- 1 root root 0 Mar 15 19:26 1.txt
-rw-r--r-- 1 root root 0 Mar 15 19:26 2.txt
-rw-r--r-- 1 root root 0 Mar 15 19:26 3.txt
-rw-r--r-- 1 root root 0 Mar 15 19:26 4.txt
-rw-r--r-- 1 root root 0 Mar 15 19:26 5.txt
[root@yuzhiwei~]# whoami
root
5、文件权限:严格的权限,Linux安全,权限严格。
rwxr-xr-x 9个字符
r read 可读取 4
w write 可写 2
x execute 可执行 1
- 没有权限 0
6、字符分组:三个字符是一组
d rwx r-x r-x . 2 root root 76 Mar 8 11:16 data1
用户的权限 | 用户组权限 | 其他权限 | 索引节点个数 | 属主 | 属组 |
. 是标识selinux的符号
789列:文件的最后修改时间
文件的时间有三种:
修改时间:modify,文件内容被改过之后的时间
访问时间:access,文件内容被访问过的时间
变化时间:change,文件属性发生改变的时间
[root@yuzhiwei~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 158 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 16809627 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2019-03-16 09:54:00.484918398 +0800
Modify: 2019-03-07 10:23:08.889612761 +0800
Change: 2019-03-07 10:23:08.894612760 +0800
Birth: -
7、stat 查看文件属性
[root@yuzhiwei~]# stat -c %A /etc/hosts
-rw-r--r--
7.1、-c 获取指定文件属性的一部分 %A 显示字符权限
[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
7.2、--time-style 显示修改时间的格式
long-iso 年月日时分
iso 月日时分
ls参数:
-t modify,文件内容被改过之后的时间。
-c change,文件属性发生改变的时间。
-a access,文件内容被访问过的时间。
8、[root@yuzhiwei~]# ls -lhi
total 12K
33651696 -rw-r--r-- 1 root root 8 Mar 14 18:45 1.txt
8.1、第一列:
数字33651696 叫做文件的索引节点(Index Node)
类似人的身份证,索引节点是文件在系统中的唯一标识。
找一个文件最终都要通过索引节点才能找到
索引节点的概念出在ext文件系统中(ext2 ext3 ext4)
索引节点是硬盘上的一块存储空间。大小256字节或512字节。
索引节点里面存放的数据是文件的属性(大小、访问时间、用户和组、权限等)都在索引节点里,
唯独不包含文件名(文件名在上级目录的block里)。
磁盘要想使用要先分区,格式化(创建文件系统)。
在格式化创建文件系统的时候,就会生成大量的inode和block。
inode作用用于存储文件的属性信息,同时存放指向文件实体(blocl)的指针(类似软链接)。
block作用是存放文件内容的
8.2、Block叫做磁盘块,是用来存放实际数据的实体单元(ext文件系统一般最大为4KB),即用来真正存放数据,例如:照片、视频等普通文件数据,单个大的文件需要占用多个Block块来存储,特别小的单个文件如果不能占满整个Block块,剩余的空间也无法在利用。
一个Block最多只能存一个文件的内容,一个block 4K,放了0.1K文件,剩余的3.9K浪费了。
df 查看文件系统信息
-i 查看inode信息
-h 查看block信息
8.3、磁盘满的原因有两种:
1、inode满了
2、block满了
8.4、no space left on device 报错,没有空间在设备上了。磁盘满了。
检查步骤:
1、df -h 看是不是block满了
2、df -i 看是不是inode满了
8.5、inode满的原因是小文件太多
初始化的时候block数量远大于inode数量