SRE-第一周作业
1. 总结计算机发展相关,并且总结服务器硬件相关知识。
1.1 .计算机发展相关历史
- 第一代计算机(1946-1957):电子管时代
#世界上第一台计算机
相关服务:美国GPU服务器
1946年,世界上第一台计算机ENIAC(electronic numerical integrator and calculator 电子数字积分计算机)在美国宾州大学诞生,是美国奥伯丁武器试验场为了满足计算弹道需要而研制成的。使用了17468只电子管,占地170平方米,重达30吨,耗电174千瓦,耗资40多万美元。每秒可进行5000次加法或减法运算
#冯诺依曼体系
- 第二代计算机(1958-1964):晶体管时代
- 第一代计算机(1965-1970):集成电路时代
- 第一代计算机(1971年以后):大规模集成电路时代
1.2. 服务器相关知识
1.2.1.按服务器外形分类
如图所示,按照统一标准设计,配合机柜统一使用,便于统计管理,高密度,节省空间,常用U为单位,1U=1.75英寸=44.45毫米,机箱尺寸比较小巧,在机柜中可以同时放置多台服务器,机架式服务器的宽度为19英寸(48.26cm),厚度通常有1U,2U,3U,4U,5U,7U几种标准的服务器机柜的尺寸也是采用通用的工业标准,如:宽度600mm,深度1000mm,高度2000mm(42U),现阶段是最主流的的服务器。
1.2.2.服务器硬件组成
主要有CPU、主板、内存、硬盘、网卡

1.2.2.1.服务器硬件——CPU
1.2.2.2.服务器硬件---主板
主板一般为矩形电路板,上面安装了组成计算机的主要电路系统,一般有BIOS芯片、I/O控制芯片、键盘和面板控制开关接口、指示灯插接件、扩充插槽、主板及插卡的直流电源供电接插件等元件
1.2.2.3.服务器硬件---内存
内存是介于CPU 和外部存储之间,是CPU 对外部存储中程序与数据进行高速运算时存放程序指令、数据和中间结果的临时场所,它的物理实质就是一组具备数据输入输出和数据存储功能的高速集成电路。
内存是CPU能直接寻址的存储空间,由半导体器件制成。内存的特点是存取速度快。
计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
与之相对应的还有外存:硬盘,U盘,软盘,光盘
1.2.2.4服务器硬件---硬盘
1.2.2.5.服务器硬件---网卡
1.2.2.6.服务器硬件-相关其他硬件
1.2.2.7.服务器硬件---阵列卡

1.2.2.8.服务器硬件---电源

1.2.2.9.服务器硬件---显卡
1.2.3.0.服务器硬件---热插拔技术
1.2.3.1服务器硬件---机柜

2. 制作一个教程,说明vmware软件如何下载安装。安装rocky 8.5, ubuntu22.04,并结合xshell说明如何通过虚拟IP登入系统。
2.1.VMware安装










注册码百度VMware workstation 17许可证即可激活

2.2.安装rocky8.5
rocky下载地址:Index of /vault/rocky/8.5/isos/x86_64/

选择自定义高级

默认即可,下一步

选择下载的rocky8.5镜像,并下一步

选择安装位置,由于C盘是系统盘,所以我们安装在E盘,选择完毕后下一步

默认即可,选择完毕下一步

默认即可,选择完毕下一步

选择NAT即可

默认即可

Linux系统选择SCSI

选择创建新虚拟机磁盘

默认即可,建议存储为单个文件

下一步即可

点击完成即可开始安装

选择第二个即可

选择英语

时区选择shanghai
设置root密码
配置网络和主机名


设置完成后,点击下一步


点击重启即可完成安装

同意许可证


点击下一步

创建用户名和密码


完成安装

2.2.1.使用xshell连接虚拟机
先查看虚拟机ip地址

输入虚拟机IP地址

输入登录账号和密码

接受并保存


登录成功
2.3.安装Ubuntu 22.04
ubuntu下载地址 https://mirrors.ustc.edu.cn/ubuntu-releases/22.04/






默认即可

默认即可

选择Ubuntu server

配置网络

选择国内源,加速安装

默认即可

默认即可

选择用户名、域名和用户名密码

选择安装ssh服务

默认即可 
开始安装Ubuntu22.04

点击重启即可完成安装

输入创建的用户名和密码

2.3.1.使用xshell连接Ubuntu
查看IP地址
输入虚拟机ip地址和用户名密码,并点击连接
登录成功

3. 结合man命令总结linux常用基本命令用法,以及查看帮助文档的方法。
3.1.man命令
man提供命令帮助的文件,手册页存放在/usr/share/man
几乎每个命令都有man的页面
man帮助
https://man7.org/linux/man-pages/index.html
https://man7.org/linux/man-pages/dir_all_alphabetic.html
中文man需要安装包
1.man-pages
2.man-pages-zh-CN
# man 页面分组
不同类型的帮助称为不同的“章节”,统称为linux手册,`man 1 man`
1 用户命令
2 系统调用
3 C库调用
4 设备文件及特殊文件
5 配置文件格式
6 游戏
7 杂项
8 管理类的命令
9 Linux 内核API
# man 命令的配置文件:
# centos 6 之前版 man 的配置文件
/etc/man.config
# CentOS 7 之后版 man 的配置文件
/etc/man_db.conf
# ubuntu man 的配置文件
/etc/manpath.config
# 格式:
MANPATH /PATH/TO/SOMEWHERE # 指明man文件搜索位置
# 也可以指定位置下搜索COMMAND 命令的手册页并显示:
man -M /PATH/TO/SOMEWHERE COMMAND
# 查看man手册页
man [OPTION...] [SECTION] PAGE ...
man [章节] keyword
# 常用选项
1.列出所有帮助
man -a keyword
eg:
[root@rocky ~]# man -a ls
2.搜索man手册
列出所有匹配的页面,使用`whatis 数据库`
man -k keyword
3.打印man帮助文件的路径
man -w [章节] keyword
[root@rocky ~]# man -w 1 ls
/usr/share/man/man1/ls.1.gz
#eg:安装man帮助包
root@ubuntu:~# man -w 1 passwd
/usr/share/man/man1/passwd.1.gz
root@ubuntu:~# whatis passwd
passwd (1) - change user password
passwd (1ssl) - OpenSSL application commands
passwd (5) - the password file
#eg:查看passwd相关命令和文件,man帮助文件路径
[root@rocky ~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz
# 示例3:直接打开man的帮助文件
[root@rocky ~]# man -w ls
/usr/share/man/man1/ls.1.gz
[root@rocky ~]# file /usr/share/man/man1/ls.1.gz
/usr/share/man/man1/ls.1.gz: gzip compressed data, max compression, from Unix, original size 7921
# 直接打开man的gz压缩格式文档
[root@rocky ~]# man /usr/share/man/man1/ls.1.gz
4. 总结linux文件系统相关知识,并结合操作演示文件操作常见的命令
4.1常见命令
4.1.1.查看cpu
`lscpu`命令可以查看cpu信息
`cat /proc/cpuinfo`也可以查看到cpu信息,这个是每核都能查看到
[root@rocky ~]# lscpu
架构: x86_64
CPU 运行模式: 32-bit, 64-bit
字节序: Little Endian
CPU: 4
在线 CPU 列表: 0-3
每个核的线程数: 1
每个座的核数: 2
座: 2
NUMA 节点: 1
厂商 ID: GenuineIntel
BIOS Vendor ID: GenuineIntel
CPU 系列: 6
型号: 183
型号名称: Intel(R) Core(TM) i9-14900HX
BIOS Model name: Intel(R) Core(TM) i9-14900HX
步进: 1
CPU MHz: 2419.199
BogoMIPS: 4838.39
虚拟化: VT-x
超管理器厂商: VMware
虚拟化类型: 完全
L1d 缓存: 48K
L1i 缓存: 32K
L2 缓存: 2048K
L3 缓存: 36864K
NUMA 节点0 CPU: 0-3
[root@rocky ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 183
model name : Intel(R) Core(TM) i9-14900HX
stepping : 1
microcode : 0x122
cpu MHz : 2419.199
cache size : 36864 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 32
wp : yes
bogomips : 4838.39
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 183
model name : Intel(R) Core(TM) i9-14900HX
stepping : 1
microcode : 0x122
cpu MHz : 2419.199
cache size : 36864 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
apicid : 1
initial apicid : 1
fpu : yes
fpu_exception : yes
cpuid level : 32
wp : yes
bogomips : 4838.39
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
processor : 2
vendor_id : GenuineIntel
cpu family : 6
model : 183
model name : Intel(R) Core(TM) i9-14900HX
stepping : 1
microcode : 0x122
cpu MHz : 2419.199
cache size : 36864 KB
physical id : 1
siblings : 2
core id : 0
cpu cores : 2
apicid : 2
initial apicid : 2
fpu : yes
fpu_exception : yes
cpuid level : 32
wp : yes
bogomips : 4838.39
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
processor : 3
vendor_id : GenuineIntel
cpu family : 6
model : 183
model name : Intel(R) Core(TM) i9-14900HX
stepping : 1
microcode : 0x122
cpu MHz : 2419.199
cache size : 36864 KB
physical id : 1
siblings : 2
core id : 1
cpu cores : 2
apicid : 3
initial apicid : 3
fpu : yes
fpu_exception : yes
cpuid level : 32
wp : yes
bogomips : 4838.39
clflush size : 64
cache_alignment : 64
address sizes : 45 bits physical, 48 bits virtual
power management:
4.1.2.查看内存大小
[root@rocky ~]# free
total used free shared buff/cache available
Mem: 1997072 230192 1529500 8900 237380 1609908
Swap: 2129916 0 2129916
另一种方式查看内存大小
[root@rocky ~]# cat /proc/meminfo
MemTotal: 1997072 kB
MemFree: 1529448 kB
MemAvailable: 1609964 kB
Buffers: 3164 kB
Cached: 201124 kB
SwapCached: 0 kB
Active: 99196 kB
Inactive: 166200 kB
Active(anon): 1532 kB
Inactive(anon): 68476 kB
Active(file): 97664 kB
Inactive(file): 97724 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 2129916 kB
SwapFree: 2129916 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 61108 kB
Mapped: 82080 kB
Shmem: 8900 kB
KReclaimable: 33200 kB
Slab: 80444 kB
SReclaimable: 33200 kB
SUnreclaim: 47244 kB
KernelStack: 5088 kB
PageTables: 6584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 3128452 kB
Committed_AS: 289604 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
Percpu: 83968 kB
HardwareCorrupted: 0 kB
AnonHugePages: 12288 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 137088 kB
DirectMap2M: 1959936 kB
DirectMap1G: 0 kB
4.1.3.查看硬盘和分区情况
[root@rocky ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 10G 0 rom
nvme0n1 259:0 0 100G 0 disk
├─nvme0n1p1 259:1 0 1G 0 part /boot
└─nvme0n1p2 259:2 0 99G 0 part
├─rl-root 253:0 0 65.2G 0 lvm /
├─rl-swap 253:1 0 2G 0 lvm [SWAP]
└─rl-home 253:2 0 31.8G 0 lvm /home
[root@rocky ~]# cat /proc/partitions
major minor #blocks name
259 0 104857600 nvme0n1
259 1 1048576 nvme0n1p1
259 2 103808000 nvme0n1p2
11 0 10465280 sr0
253 0 68317184 dm-0
253 1 2129920 dm-1
253 2 33357824 dm-2
4.1.2.查看系统版本信息
4.1.2.1.查看系统架构
[root@rocky ~]# arch
x86_64
root@ubuntu:~# arch
x86_64
4.1.2.2.查看内核版本
root@ubuntu:~# uname -r
5.15.0-107-generic
[root@rocky ~]# uname -r
4.18.0-348.el8.0.2.x86_64
4.1.2.3.查看操作系统发行版本
#rocky8查看发行版本
[root@rocky ~]# cat /etc/redhat-release
Rocky Linux release 8.5 (Green Obsidian)
[root@rocky ~]# cat /etc/os-release
NAME="Rocky Linux"
VERSION="8.5 (Green Obsidian)"
ID="rocky"
ID_LIKE="rhel centos fedora"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Rocky Linux 8.5 (Green Obsidian)"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:rocky:rocky:8.5:GA"
HOME_URL="https://rockylinux.org/"
BUG_REPORT_URL="https://bugs.rockylinux.org/"
ROCKY_SUPPORT_PRODUCT="Rocky Linux"
ROCKY_SUPPORT_PRODUCT_VERSION="8"
#ubuntu查看发行版本
root@ubuntu:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
root@ubuntu:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.3 LTS
Release: 22.04
Codename: jammy
4.1.3.日期和时间
#Linux的两种时钟
1.系统时钟:由Linux内核通过CPU的工作频率进行的
2.硬件时钟:通过主板
相关命令:
date:显示和设置系统时间
eg:
root@ubuntu:~# date
Mon Jun 10 03:45:15 PM CST 2024
#显示时区信息
root@ubuntu:~# date -R
Mon, 10 Jun 2024 15:46:07 +0800
#clouk,hwclock:显示硬件时钟
[root@rocky ~]# clock
2024-06-10 15:46:59.828525+08:00
-s,--hctosys # 以硬件时钟为准,校正系统时钟
-w,--systohc # 以系统时钟为准,校正硬件时钟
eg:
[root@rocky ~]# ll /usr/sbin/clock
lrwxrwxrwx. 1 root root 7 10月 14 2021 /usr/sbin/clock -> hwclock
# 时区
/etc/localtime
# 设置时区
[root@rocky ~]# timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
……[root@rocky ~]# timedatectl set-timezone Asia/Shanghai
[root@rocky ~]# timedatectl status
Local time: 一 2024-06-10 15:49:59 CST
Universal time: 一 2024-06-10 07:49:59 UTC
RTC time: 一 2024-06-10 07:49:59
Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@rocky ~]# ll /etc/localtime
lrwxrwxrwx. 1 root root 35 3月 23 13:45 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
#显示日历
eg:查看2024年6月的日历
[root@rocky ~]# cal 6 2024
六月 2024
日 一 二 三 四 五 六
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
4.1.4.关机和重启
# 关机
halt
poweroff
init 0
shutdown -h now
# 重启
reboot
-f:强制,不调用shutdown
-p:切断电影
ctrl+alt+del 三个键
init 6
shutdown -r now
# 关机或重启:shutdown
shutdown [OPTION]... [TIME] [MESSAGE]
-r:reboot
-h:halt
-c:cancel
TIME:无指定,默认相当于+1 (CentOS 7)
now:立刻,相当于+0
+#:相对时间表示法,几分钟之后:例如 +3
hh:mm:绝对时间表示,指明具体时间
4.1.5.用户登录信息查看
# whoami:显示当前登录有效用户
[root@rocky8 even]# whoami
root
#who:系统当前所有的登录会话
[root@rocky ~]# who
root pts/0 2024-06-05 18:07 (10.0.0.1)
root pts/1 2024-06-10 07:24 (10.0.0.1)
# w:系统当前所有的登录会话及所做的操作
[root@rocky ~]# w
07:52:56 up 1 day, 19:18, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 三18 4days 0.01s 0.01s -bash
root pts/1 10.0.0.1 07:24 0.00s 0.05s 0.00s w
4.1.6.文本编辑
# 工具可以实现文本的编辑,上手容易,适合初学者 nano
# 工具是图形工具 gedit
4.1.7.会话管理
命令行的典型使用方式是,打开一个终端窗口,在里面输入命令,用户与计算机的折中临时的交互,称为一次“会话”。
会话的一个重要的特点是:窗口与其中启动的进程是连接在一起的,打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。
一个典型的例子就是,SSH登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次SSH会话已经终止了,里面的进程也随之消失了。为了解决这个问题,会话与窗口可以“解绑”:窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话“绑定”其他窗口。
终端服用器软件就是会话与窗口的“解绑”工具,将他们彻底分离。
1.它允许在单个窗口中个,同时访问多个会话。这对于同时运行多个命令行程序很有用。
2.它可以让新窗口“接入”已经存在的会话。
3.它运行每个会话有多个连接窗口,因此可以多人实时共享会话。
4.它还支持窗口任意的垂直和水平拆分。
类似的终端复用器还有screen,tmux
4.1.7.1.screen
利用screen可以实现会话管理,如:新建会话,共享会话等
注意:centos 7来自base源,centos 8来自于epel源
eg:安装screen
[root@rocky ~]# yum install epel-release -y
[root@rocky ~]# dnf -y install screen
# screen 命令常见用法:
1.创建新screen会话
screen -S [SESSION]
2.加入screen会话
screen -x [SESSION]
3.退出并关闭screen会话
exit
4.剥离当前screen会话
ctrl+a,d
5.显示所有已经打开的screen会话
screen -ls
6.恢复某screen会话
screen -r [SESSION]
4.1.7.2.tmux
tmux是一个终端复用器,类似screen,但是更易用,也更强大
tmux就是会话与窗口的“解绑”工具,将他们彻底分开,功能如下
- 它允许在单个窗口中,同时访问多个会话
- 它可以让新窗口“接入”已经存在的会话
- 它允许每个会话有多个连接窗口
- 它还支持窗口任意的垂直和水平拆分
安装:
[root@rocky ~]# yum install -y tmux
启动与退出
[root@rocky ~]# tmux
[exited]
4.1.8.输出信息echo
# 语法
echo [-neE] [字符串]
# 字符串
-E (默认)不支持\解释功能
-n 不自动换行
-e 启用\字符的解释功能
# 显示变量
echo "$VAR_NAME" # 用变量值替换,弱引用
echo '$VAR_NAME' # 变量不会替换,强引用
# 启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a # 发出警告声
\b # 退格键
\c # 最后不加上换行符号
\e # escape,相当于\033
\n # 换行且光标移至首行
\r # 回车,即光标移至行首,但不换行
\t # 插入tab
\\ # 插入\字符
\0nnn # 插入nnn(八进制)所代表的ASCII字符
\xHH # 插入HH(十六进制)所代表的ASCII字符
4.1.8.1.echo基本用法
# 可以显示具有颜色的字符,其格式如下:
"\033[字符背景颜色;字体颜色m字符串\033[0m"
\033[30m -- \033[37m # 设置前景色
\033[40m -- \033[47m # 设置背景色
# 字符背景颜色范围:40--47
40 # 黑
41 # 红
42 # 绿
43 # 黄
44 # 蓝
45 # 紫
46 # 深绿
47 # 白色
# 字体颜色:30--37
30 # 黑
31 # 红
32 # 绿
33 # 黄
34 # 蓝
35 # 紫
36 # 深绿
37 # 白色
# 加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码:
\033[0m # 关闭所有属性
\033[1m # 设置高亮度
\033[4m # 下划线
\033[5m # 闪烁
\033[7m # 反显
\033[8m # 消隐
\033[nA # 光标上移n行
\033[nB # 光标下移n行
\033[nC # 光标右移n行
\033[nD # 光标左移n行
\033[x;yH # 设置光标位置x行y列
\033[2J # 清屏
\033[K # 清除从光标到行尾的内容
\033[s # 保存光标位置
\033[u # 恢复光标位置
\033[?25l # 隐藏光标
\033[?25h # 显示光标
\033[2J\033[0;0H # 清屏且将光标置顶
4.1.8.2.echo高级用法
在终端中,ANSI定义了用于屏幕显示的Escape屏幕控制码可以显示具有颜色的字符,其格式如下:
"\033[字符背景颜色;字体颜色m字符串\033[0m'
1033[30m -033[37m设置前景色
1033[40m -\033[47m设置背景色
#字符背景颜色范围:40--47
40:黑
41:红
42:绿
43:黄
44:蓝
45:紫
46:深绿
47:白色
#字体颜色:30--37
30:黑
31:红
32:绿
33:黄
34:蓝
35:紫
36:深绿
37:白色
加颜色只是以下控制码中的一种,下面是常见的一些ANSI控制码
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033 [4m 下划线
\033[5m 闪烁
\033 [7m 反显
\033 [8m 消隐
\033 [nA 光标上移n行
\033[nB 光标下移n行
\033[nc 光标右移n列
\033[nD 光标左移n列
\033[x;yH 设置光标位置x行y列
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
033[?251 隐藏光标
\033[?25h 显示光标
\033[2J\033[0;0H 清屏且将光标置顶
4.1.9.tab键补全
tab键可以实现命令以及路径等补全,提高输出效率,避免出错
4.1.9.1.命令补全
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻以给定命令名命名的文件,第一次找到的命令即为要执行的命令
命令的子命令补全,需要安装 bash-completion
注意:用户给定的字符串只有一条唯一对应的命令,直接补全,否则,再次Tab会给出列表
4.1.9.2.路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符串开头的文件名
如果唯一:则直接补全
否则:再次Tab给出列表
4.1.9.3.双击tab键
- command 2Tab 所有子命令或文件补全
- string2Tab 以string开头命令
- /2Tab 显示所有根目录下一级目录,包括隐藏目录
- ./2Tab 当前目录下子目录,包括隐藏目录
- *2Tab 当前目录下子目录,不包括隐藏目录
- ~2Tab 所有用户列表
- $2Tab 所有变量
- @2Tab /etc/hosts记录(centos7 不支持)
- =2Tab 相当于ls-A (centos7不支持)
5. 总结linux安全模型
# 资源分派:
1.Authentication:认证,验证用户身份
2.Authorization:授权,不同的用户设置不同权限
3.Accouting|Audition:审计
当用户登录成功时,系统会自动分配令牌token,包括:用户标识和组成员等信息
5.1.用户
Linux中每个用户是通过 User ld (UID) 来唯一标识的
1.管理员: root, 0
2.普通用户: 1-60000 自动分配
3.系统用户: 1-499 (CentOS 6以前),1-999 (Cento 7以后)对守护进程获取资源进行权限分配;
4.登录用户: 500+ (CentOs6以前),1000+ (Centos7以后)给用户进行交互式登录使用
5.2.用户组
Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID (GID) 来唯一标识的。
1.管理员组: root 0
2.普通组:
系统组: 1-499 (CentOS 6以前),1-999 (CentOS 7以后),对守护进程获取资源进行权限分配;
普通组: 500+ (CentOS 6以前),1000+ (CentOS 7以后),给用户使用
5.3.用户和用户组的关系
1.用户的主要组(primarygroup): 用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组。
2.用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组。
# eg:
[root@rocky ~]# id wb
uid=1000(wb) gid=1000(wb) 组=1000(wb)
5.4安全上下文
Linux安全上下文Context: 运行中的程序,即进程(process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份。
比如: 分别以root 和wang 的身份运行/bin/cat /etc/shadow,得到的结果是不同的,资源能否能被访问,是由运行者的身份决定,非程序本身。
#eg:
[wb@rocky ~]$ cat /etc/shadow
cat: /etc/shadow: 权限不够
[root@rocky ~]# cat /etc/shadow
root:$6$ERPTsfS.7bP/F6Ju$wkbwYUy6pb5NTGeymCxOPx8DAphJbikfhn4LJitCzX2vT8x.v8zOPLzihAkbY4SSxx8rRW8e.GQFQLO4atZ6/0:19879:0:99999:7:::
6. 总结学过的权限,属性及ACL相关命令及选项,示例。
6.1.文件权限管理
程序访问文件时的权限,取决于此程序的发起者
1.进程的发起者,同文件的属主;则应用文件属主权限
2.进程的发起者,属于文件属组;则应用文件属组权限
3.应用文件“其它“权限
6.2.文件所有者和属组属性操作
6.2.1.设置文件的所有者chown
chown 命令可以修改文件的属主,也可以修改文件属组
# 格式:
chown [OPTION]...[OWNER][:[GROUP]] FILE[OPTION]...
chown [OPTION]... --reference=RFILE FILE...
# 用法说明:
OWNER # 只修改所有者
OWNER:GROUP # 同时修改所有者和属组
:GROUP # 只修改属组,冒号也可用
--reference=RFILE # 参考指定的的属性,来修改
-R # 递归,此选项慎用,非常危险
eg:
[root@rocky test]# cp /etc/fstab 1.txt
[root@rocky test]# pwd
/test
[root@rocky test]# ll
总用量 4
-rw-r--r-- 1 root root 655 6月 10 08:26 1.txt
[root@rocky test]# chown wb 1.txt
[root@rocky test]# chown :admins 1.txt
[root@rocky test]# ll 1.txt
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
[root@rocky test]# chown root.bin 1.txt
[root@rocky test]# ll
总用量 4
-rw-r--r-- 1 root bin 655 6月 10 08:26 1.txt
[root@rocky test]# chown wb:admins 1.txt
[root@rocky test]# ll
总用量 4
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
[root@rocky test]# cp /etc/issue 2.txt
[root@rocky test]# ll
总用量 8
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
-rw-r--r-- 1 root root 23 6月 10 08:27 2.txt
[root@rocky test]# chown --reference=1.txt 2.txt
[root@rocky test]# ll
总用量 8
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
-rw-r--r-- 1 wb admins 23 6月 10 08:27 2.txt
[root@rocky ~]# ll -d /test/
drwxr-xr-x 2 root root 32 6月 10 08:27 /test/
[root@rocky ~]# ll /test/
总用量 8
-rw-r--r-- 1 root root 655 6月 10 08:26 1.txt
-rw-r--r-- 1 root root 23 6月 10 08:27 2.txt
[root@rocky ~]# chown -R wb.admins /test/
[root@rocky ~]# ll -d /test/
drwxr-xr-x 2 wb admins 32 6月 10 08:27 /test/
[root@rocky ~]# ll /test/
总用量 8
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
-rw-r--r-- 1 wb admins 23 6月 10 08:27 2.txt
6.2.2.设置文件的属组信息chgrp
chgrp 命令可以只修改文件的属组
# 格式:
chgrp [OPTION]... GROUP FILE...
chgrp [OPTION]... --reference=RFILE FILE...
-R 递归
# eg:[root@rocky test]# ll 1.txt
-rw-r--r-- 1 wb admins 655 6月 10 08:26 1.txt
[root@rocky test]# chgrp root 1.txt
[root@rocky test]# ll 1.txt
-rw-r--r-- 1 wb root 655 6月 10 08:26 1.txt
[root@rocky test]#
6.3.文件权限
6.3.1.文件权限说明
# 文件的权限主要针对三类对象进行定义
owner 属主,u
group 属组,g
other 其他,o
# 注意
1.用户的最终权限,是从左向右进行顺序匹配,即,所有者,所属组,其他人,一旦匹配权限立即生效,不再向右查看其权限
2.r和w权限对root 用户无效
3.只要所有者,所属组或other三者之一有x权限,root就可以执行
每个文件针对每类访问者都定义了三种权限
r Readable 4
w Writable 2
x Excutable 1
# 对文件的权限:
r # 可使用文件查看类工具,比如: cat,可以获取其内容
w # 可修改其内容,文件的是否被删除和文件的权限无关
x # 可以把此文件提请内核启动为一个进程,即可以执行(运行) 此文件(此文件的内容必须是可执行)
# 文件权限常见组合
--- 0
r 4
r-x 5
rw 6
rwx 7
# 对目录的权限:
r # 可以使用ls查看此目录中文件名列表,但无法看到文件的属性meta信息,包括inode号,不能查看文件的内容
w # 可在此目录中创建文件,也可删除此目录中的文件,而和此被删除的文件的权限无关
x # 可以cd进入此目录,可以使用ls -l file 或 stat file 查看此目录中指定文件的元数据,当预先知道文件名称时,也可以查看文件的内容,属于目录的可访问的最小权限
X # 分配给目录或有部分x权限的文件的x权限,对无任意x权限的文件则不会分配x权限
# 目录权限常见组合:
- 不能访问目录
r-x 只读目录
rwx 可读也可写目录
数学法的权限:

八进制数字
--- 000 0
--x 001 1
-w- 010 2
-wx 011 3
r-- 100 4
r-x 101 5
rw- 110 6
rwx 111 7
# 举例:
rw-r----- 640
rwxr-xr-x 755
6.3.2.修改文件权限chmod
# 格式
chmod [OPTION] ...MODE[,MODE]... FILE...
chmod [OPTION] ...OCTAL-MODE FILE...
# 参考RFILE文件的权限,将FILE的修改为同RFILE
chmod [OPTION] ...--reference=RFILE FILE...
# 说明: 模式法格式
MODE: who opt permission
who:u,g,o,a
opt:+,-,=
permission:r,w,x
# 修改指定一类用户的所有权限
U= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a- + -
-R: 递归修改权限
# eg: 设置 X 权限
[root@rocky test]# ll dir
总用量 8
-rw-r--r-- 1 root root 655 6月 10 08:43 1.txt
-rw-r--r-- 1 root root 23 6月 10 08:43 2.txt
[root@rocky test]# ll -d dir
drwxr-xr-x 2 root root 32 6月 10 08:43 dir
[root@rocky test]# chmod -R a+x dir
[root@rocky test]# ll -d dir
drwxr-xr-x 2 root root 32 6月 10 08:43 dir
[root@rocky test]# ll dir
总用量 8
-rwxr-xr-x 1 root root 655 6月 10 08:43 1.txt
-rwxr-xr-x 1 root root 23 6月 10 08:43 2.txt
# eg:
chmod u+wx,g-r,o=rx file
chmod-R g+rwx /testdir
chmod 600 file
6.4.新建文件和目录的默认权限
umask 的值可以用来保留在创建文件权限
实现方式:
- 新建文件的默认权限:666-umask,如果所得结果某位存在执行(奇数)权限,则将其权限+1,偶数不变
- 新建目录的默认权限:777-umask
非特权用户umask默认是 002
root的umask默认是 022
查看umask
#模式方式显示
umask -S
#输出可被调用
umask -p
修改umask
umask #
eg:
[root@rocky ~]# umask 0600
[root@rocky ~]# touch 1.txt
[root@rocky ~]# ll
总用量 0
----rw-rw- 1 root root 0 6月 10 08:52 1.txt
6.5.Linux文件系统上的特殊权限
前面介绍了三种常见的权限: r,w,x 还有三种特殊权限: SUID,SGID,Sticky
# 特殊权限:
SUID 作用于二进制可执行文件上,用户将继承此程序所有者的权限
SGID
作用于二进制可执行文件上,用户将继承此程序所有组的权限
作用于目录上,此目录中新建的文件的所屈组将自动从此目录继承
STICKY 作用于目录上,此目录中的文件只能由所有者自已来删除
6.5.1.特殊权限SUID
前提: 进程有属主和属组,文件有属主和属组
1.任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限
2.启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组
3.进程访问文件时的权限,取决于进程的发起者
二进制的可执行文件上SUID权限功能:
1.任何一个可执行程序文件能不能启动为进程: 取决发起者对程序文件是否拥有执行权限
2.启动为进程之后,其进程的属主为原程序文件的属主
3.SUID只对二进制可执行程序有效
4.SUID设置在目录上无意义
# SUID权限设定:
chmod u+s FILE..
chmod 4xxx FILE
chmod u-s FILE...
# eg:
[root@rocky ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 33544 3月 14 2021 /usr/bin/passwd
6.5.2.特殊权限SGID
# 二进制的可执行文件上SGID权限功能:
1.任何一个可执行程序文件能不能启动为进程: 取决发起者对程序文件是否拥有执行权限
2.启动为进程之后,其进程的属组为原程序文件的属组
# SGID权限设定:
chmod g+s FILE...
chmod 2xxx FILE
chmod g-s FILE...
# 目录上的SGID权限功能:
默认情况下,用户创建文件时,其属组为此用户所属的主组,一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组,通常用于创建一个协作目录。
# SGID权限设定:
chmod g+s DIR...
chmod 2xxx DIR
chmod g-s DIR...
6.5.3.特殊权限 Sticky 位
1.具有写权限的目录通常用户可以删除该目录中的任何文件,无论该文件的权限或拥有权
2.在目录设置sticky 位,只有文件的所有者或root可以删除该文件
3.sticky 设置在文件上无意义
# sticky权限设定:
chmod o+t DIR...
chmod1xXX DIR
chmod o-t DIR...
# 范例:
[root@rocky ~]# ll -d /tmp/
drwxrwxrwt. 10 root root 220 6月 10 08:19 /tmp/
6.5.4.特殊权限数字法
SUID SGID STICKY
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
# 范例:
chmod 4777 /tmp/a.txt
# 权限位映射
SUID:user,占据属主的执行权限位
s:属主拥有x权限
s:属主没有x权限
SGID:group,占据属组的执行权限位
s:group拥有x权限
s:group没有x权限
sticky:other,占据other的执行权限位
t:other拥有x权限
T:other没有x权限
6.6.设定文件特殊属性
# 设置文件的特殊属性,可以访问 root 用户误操作删除或修改文件;不能删除,改名,更改
chattr +i file
# 只能追加内容,不能删除,改名
chattr +a file
# 显示特定属性
lsattr
# eg1:
[root@rocky ~]# mkdir dir
[root@rocky ~]# touch dir/1.txt
[root@rocky ~]# touch dir/2.txt
#追加i属性:
[root@rocky ~]# chattr +i dir
[root@rocky ~]# lsattr dir
-------------------- dir/1.txt
-------------------- dir/2.txt
[root@rocky ~]# rm -rf dir/
rm: 无法删除'dir/1.txt': 不允许的操作
rm: 无法删除'dir/2.txt': 不允许的操作
[root@rocky ~]# lsattr
----i--------------- ./dir
#去掉i属性
[root@rocky ~]# chattr -i dir
[root@rocky ~]# lsattr
-------------------- ./dir
[root@rocky ~]# rm -rf dir
6.7.访问控制列表ACL
6.7.1.ACL权限功能
ACL: Access Control List,实现灵活的权限管理
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
Centos7 默认创建的xfs和ext4文件系统具有ACL功能
Centos7 之前版本,默认手工创建的ext4文件系统无ACL功能需手动增加
tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test
# ACL生效顺序:
所有者,自定义用户,所属组|自定义组,其他人
6.7.2.ACL相关命令
setfacl 可设置ACL权限
getfacl 可查看设置的ACL权限
#eg:
[root@rocky dir]# ll 1.txt
-rw-r--r-- 1 root root 0 6月 10 09:22 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@rocky dir]# setfacl -m u:wb:- 1.txt
[root@rocky dir]# ll
总用量 0
-rw-r--r--+ 1 root root 0 6月 10 09:22 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:---
group::r--
mask::r--
other::r--
[root@rocky dir]# su wb
[wb@rocky dir]$ cat 1.txt
cat: 1.txt: 权限不够
[wb@rocky dir]$ echo 111 >> 1.txt
bash: 1.txt: 权限不够
# mask 权限
1.mask只影响除所有者和other的之外的人和组的最大权限
2.mask需要与用户的权限进行逻辑与运算后,才能变成有限的权限(Effective Permission)
3.用户或组的设置必须存在于mask权限设定范围内才会生效
#eg:
[root@rocky dir]# ll 1.txt
-rw-rw-r--+ 1 root root 0 6月 10 09:22 1.txt
[root@rocky dir]# chmod g=r 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:---
group::r--
mask::r--
other::r--
[root@rocky dir]# setfacl -m mask:rw 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:---
group::r--
mask::rw-
other::r--
[root@rocky dir]# setfacl -m u:wb:rwx 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:rwx
group::r--
mask::rwx
other::r--
[root@rocky dir]# setfacl -m mask:rw 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:rwx #effective:rw-
group::r--
mask::rw-
other::r--
# -set选项会把原有的ACL项都删除,用新的替代,需要注意的是一定要包含UGO的设置,不能象-m一样只是添加ACL就可以
setfacl --set u::rw,u:wang:rw,g::r,o::- file1
[root@rocky dir]# setfacl --set u::rw,u:wb:rw,g::r,o::- 1.txt
[root@rocky dir]# getfacl 1.txt
# file: 1.txt
# owner: root
# group: root
user::rw-
user:wb:rw-
group::r--
mask::rw-
other::---
7.结合vim几种模式,学会使用vim几个常见操作。
7.1.如何打开文件。并在打开文件(命令模式)之后如何退出文件。
7.1.1.vim命令格式
# 格式:
vim [OPTION]... FILE...
# 常用选项:
+# # 打开文件后,让光标处于第#行的行首,+默认行尾
+/PATTERN # 让光标处于第一个被PATTERN匹配到的行行首-b file 二进制方式打开文件
-d filel file2... # 比较多个文件,相当于 vimdiff
-m file # 只读打开文件
-e file # 直接进入ex模式,相当于执行ex file
-y file # Easy mode (like"evim",modeless),直接可以操作文件,ctrl+o:wqlq! 保存和不保存退出
# 说明:
1.如果该文件存在,文件被打开并显示内容
2.如果该文件不存在,当编辑后第一次存盘时创建它
7.1.2.三种主要模式和转换
vim 是一个模式编辑器,击键行为是依赖于 vim的的“模式
# 三种常见模式:
1.命令或普通(Normal)模式: 默认模式,可以实现移动光标,剪切/粘贴文本
2.插入(Insert)或编辑模式: 用于修改文本
3.扩展命令(extended command) 或命令(末)行模式: 保存,退出等
# 命令模式-->插入模式
i insert,在光标所在处输入
I 在当前光标所在行的行首输入
a append,在光标所在处后面输入
A 在当前光标所在行的行尾输入
o 在当前光标所在行的下方打开一个新行
O 在当前光标所在行的上方打开一个新行
# 插入模式--- ESC----->命令模式
# 命令模式----:----> 扩展命令模式
# 扩展命令模式----ESC,enter----> 命令模式
# 范例: 插入颜色字符
1 切换至插入模式
2 按ctrl+v+[ 三个键,显示^[
3 后续输入颜色信息,如:^[[32mhe11o^[[Om
4 切换至扩展命令模式,保存退出
5 cat 文件可以看到下面显示

eg:


7.2.打开文件(命令模式)之后,进入插入模式。并在插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。
插入模式--->ESC--->命令模式
命令模式---->wq(q),回车---->退出文件
7.3.打开文件(命令模式)之后,进入插入模式,编写一段话,““马哥出品,必属精品””, 之后从插入模式中如何回到打开文件的状态(命令模式),并在命令模式之后如何退出文件。

#过程:
编辑文件--->命令模式--->插入模式--->插入内容--->ESC--->命令模式--->wq,回车--->退出文件
7.4.使用cat命令验证文件内容,是刚刚自己写的内容。



https://www.vmware.com/products/desktop-hypervisor.html?spm=5176.28103460.0.0.6ddb3da2Ih5mjE















