文章目录
基础
网卡地址
/etc/sysconfig/network-scripts
ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=0dc7a675-015e-40b2-885c-17a150a8faa0
DEVICE=ens33
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR=192.168.92.5
NETMASK=255.255.255.0
GATEWAY=192.168.92.2
DNS1=114.114.114.114
解缩压命令
解压
tar -zxvf 所要解压的文件名 -C 解压位置
压缩
tar -zcvf 压缩之后的文件名 所要压缩的文件夹名
vim快捷键–光标
移动到行尾:$
移动到行首:0
移动到开头:g
移到结尾:G
vim 整体注释、整体缩进
`ctrl + v` ——>方向键选择行——> `shift + i` ——> 按下`#` ——> 按`ESC`
更改主机名
hostnamectl set-hostname 新的主机名
权限
读 写 执行
4 2 1
其他
chown 修改文件属主
chown 新属主 文件
sort
从小到大
[root@wzb my_prac]# cat sort.txt
2
3
6
9
0
0
3
1
1
9
[root@wzb my_prac]# sort -n sort.txt
0
0
1
1
2
3
3
6
9
9
从大到小 -nr
[root@wzb my_prac]# sort -nr sort.txt
9
9
6
3
3
2
1
1
0
0
去重
[root@wzb my_prac]# sort -u sort.txt
0
1
2
3
6
9
指定分隔符,指定区域排序
-t 指定分隔符
-k 区域的指定
[root@wzb my_prac]# cat sort1.txt
1.1.1.36
1.1.1.33
1.1.1.61
1.1.1.83
1.1.1.02
1.1.1.31
1.1.1.67
[root@wzb my_prac]# sort -n -t "." -k 4 sort1.txt
1.1.1.02
1.1.1.31
1.1.1.33
1.1.1.36
1.1.1.61
1.1.1.67
1.1.1.83
uniq
统计重复出现的的次数
[root@wzb my_prac]# sort -n -t "." -k 4 sort1.txt | uniq -c
1 1.1.1.02
1 1.1.1.31
1 1.1.1.33
1 1.1.1.36
1 1.1.1.61
1 1.1.1.67
1 1.1.1.83
只找出文件中重复行
sort -n sort1.txt | uniq -d -c
找出只出现一次的行
sort -n sort1.txt | uniq -c -u
wc
TR
小写转为大写
[root@wzb my_prac]# echo "my name is wzb" | tr '[a-z]' '[A-Z]'
MY NAME IS WZB
删除
删除了字母a
[root@wzb my_prac]# echo "my name is wzb,i am 20" | tr -d 'a'
删除了所有字母
[root@wzb my_prac]# echo "my name is wzb,i am 20" | tr -d 'a-z'
, 20
把文件作为标准输入,进行字符替换
[root@wzb my_prac]# cat tr.txt
abc
ABC
123
[root@wzb my_prac]# tr 'a' 'A' < tr.txt
Abc
ABC
123
stat
find
在根目录下查找以txt结尾的文件
find / -name "*.txt"
限制文件夹深度
find /home/wzb/my_prac/ -maxdepth 2 -name "*.txt"
批量创建文件
[root@wzb manytxt]# ls
1alex.txt 2alex.txt 3alex.txt 4alex.txt 5alex.txt 6alex.txt 7alex.txt 8alex.txt
批量创建文件夹
[root@wzb manytxt]# mkdir {1..8}wjj
[root@wzb manytxt]# ls
1alex.txt 2alex.txt 3alex.txt 4alex.txt 5alex.txt 6alex.txt 7alex.txt 8alex.txt
1wjj 2wjj 3wjj 4wjj 5wjj 6wjj 7wjj 8wjj
以文件类型查找
-type f 指定文件为文本
[root@wzb manytxt]# find . -type f -name "[0-9]*"
./1alex.txt
./2alex.txt
./3alex.txt
./4alex.txt
./5alex.txt
./6alex.txt
./7alex.txt
./8alex.txt
-type d 制定类型为目录
[root@wzb manytxt]# find . -type d -name "[0-9]*"
./1wjj
./2wjj
./3wjj
./4wjj
./5wjj
./6wjj
./7wjj
./8wjj
查找并删除
find . -type d -name '[0-9]*' -delete
用户登录分析
users、who、w
这三个命令详细程度不同,通常使用who
pts:图形命令行终端
[root@svr7 ~]# users
root root wzb wzb
[root@svr7 ~]# who
wzb :0 2022-11-14 09:18 (:0)
wzb pts/0 2022-11-14 09:18 (:0)
root pts/1 2022-11-14 09:18 (192.168.92.1)
root pts/2 2022-11-14 09:18 (192.168.92.1)
[root@svr7 ~]# w
11:06:26 up 1:50, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
wzb :0 :0 09:18 ?xdm? 1:52 0.52s /usr/libexec/gnome-session-bina
wzb pts/0 :0 09:18 1:48m 0.07s 0.37s /usr/libexec/gnome-terminal-ser
root pts/1 192.168.92.1 09:18 1:47m 0.02s 0.02s -bash
root pts/2 192.168.92.1 09:18 2.00s 0.07s 0.00s w
last、lastb
last:登录成功的用户
lastb:登录失败的用户
开机模式
[root@svr7 ~]# systemctl get-default # 查看
graphical.target
[root@svr7 ~]# systemctl set-default multi-user.target # 开机为字符模式
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
ACL策略管理
作用:能够对个别用户、个别组设置独立的权限
linux中有三个权限组,为文件所有者,所有者所属的组,其他人
想要给其他的组或者一个单独的用户赋予权限,该怎么做?
ACL高于普通权限
创建财务组
将新创建的用户添加进组
[root@wzb ~]# groupadd caiwu
[root@wzb ~]# useradd xd
[root@wzb ~]# useradd x2
[root@wzb ~]# gpasswd -a xd caiwu
Adding user xd to group caiwu
[root@wzb ~]# gpasswd -a x2 caiwu
Adding user x2 to group caiwu
创建一个文件夹mo,对其所属组caiwu
拥有读写执行的权限
[root@wzb tom]# ll
drwxrwx---. 2 root caiwu 19 Sep 11 11:41 mo
那么此时ano
用户是无法访问mo的,若想实现访问,要用到setfacl
命令
setfacl [选项] u:用户名:权限 文件...
setfacl [选项] g:组名:权限 文件...
赋予权限,在root用户下操作
[root@wzb tom]# setfacl -m u:ano:rx /home/tom/mo/
此时ano
用户就可以查看mo下的文件内容了,但是无法修改内容
删除ano的acl策略
[root@wzb tom]# setfacl -m u:ano:--- /home/tom/mo
getfacl
可以查看文件是否有acl策略
[ano@wzb mo]$ getfacl /home/tom/mo/
getfacl: Removing leading '/' from absolute path names
# file: home/tom/mo/
# owner: root
# group: caiwu
user::rwx
user:ano:r-x
group::rwx
mask::rwx
other::---
删除acl策略
-R 让目录本身和其下的文件都有acl
-Rm (这样用)
需求:要求lisi用户可以访问/etc/shadow
方法
利用其他人身份
chmod o+r /etc/shadow
利用所属组身份,将目录的所属组改为lisi
chown :lisi /etc/shadow
chmod g+r /etc/shadow
利用所有者身份,将所有者改为lisi
chown lisi /etc/shadow
chmod u+r /etc/shadow
利用acl
setfacl -m u:lisi:r /etc/shadow
附加权限
t & T
• 粘滞位,Sticky Bit 权限
– 占用其他人(Other)的 x 位
– 显示为 t 或 T,取决于其他人是否有 x 权限,没有x权限则显示为T
– 适用于目录,用来限制用户滥用写入权
在设置了t权限的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
s & S
• Set GID权限
– 占用属组(Group)的 x 位
– 显示为 s 或 S,取决于属组是否有 x 权限
– 对目录有效
在一个具有SGID权限的目录下,新建的文档会自动继承此目录的属组身份
附加权限SUID权限
占用属主(User)的 x 位
显示为 s 或 S,取决于属主是否有 x 权限
仅对可执行的程序有意义
当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
手动创建用户家目录
[root@wzb opt]# usermod -d /opt/ano xd
[root@wzb tom]# cat /etc/passwd | grep xd
xd:x:1007:1008::/opt/xd:/bin/bash
登陆xd用户 显示不正确
这是因为创建的目录属于root,而且家目录中应有一些模版文件,来自于/etc/skel
正确的操作
[root@wzb xd]# chown -R xd:caiwu /opt/xd #将家目录下的文件所所有者和所属组改为与xd相关的
[root@wzb xd]# cp -r /etc/skel/. /opt/xd #最后要有点,否则会将文件夹复制到家目录,无法实现
磁盘空间管理
MBR方式
在一个主机加一个10G的硬盘sdb
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 12.3G 0 part
├─centos-root 253:0 0 12G 0 lvm /
└─centos-swap 253:1 0 300M 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
sr0 11:0 1 4.4G 0 rom /run/media/wzb/CentOS 7 x86_64
分区命令
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0x2d3a7742 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-20971519,默认为 20971519):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2d3a7742
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (2099200-20971519,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-20971519,默认为 20971519):+1G
分区 2 已设置为 Linux 类型,大小设为 1 GiB
分了两个主分区,都是1G
][root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 12.3G 0 part
├─centos-root 253:0 0 12G 0 lvm /
└─centos-swap 253:1 0 300M 0 lvm [SWAP]
sdb 8:16 0 10G 0 disk
├─sdb1 8:17 0 1G 0 part
└─sdb2 8:18 0 1G 0 part
sr0 11:0 1 4.4G 0 rom /run/media/wzb/CentOS 7 x86_64
格式化两个分区,然后挂载mount
mkfs.ext4 /dev/sdb1
mkfs.xfs /dev/sdb2
df -h 显示系统正在挂在的设备
…
永久挂载
但是mount为临时挂载,想要在每次开机时都挂载同一个目录就要配置/etc/fstab
格式:
-设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
/dev/sdb1 /mypart1 ext4 defaults 0 0
查看配置文件,随后一行为添加的数据
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sat Aug 20 02:58:42 2022
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=23a04e72-c799-4808-90e4-4e297c29be08 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /root/part1 ext4 defaults 0 0
后续的克隆操作:
因为UUID是唯一的,在克隆后,UUID就会重复
lsblk
查看sda1路径,改为
/dev/sda1 /boot xfs defaults 0 0
检查配置mount -a
没有报错就reboot
现在添加第3个主分区
…
当要继续添加时,系统会推荐我们添加逻辑分区
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
命令(输入 m 获取帮助):n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
已选择分区 4
起始 扇区 (8390656-20971519,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-20971519,默认为 20971519):
将使用默认值 20971519
分区 4 已设置为 Extended 类型,大小设为 6 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:10.7 GB, 10737418240 字节,20971520 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2d3a7742
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
/dev/sdb3 4196352 8390655 2097152 83 Linux
/dev/sdb4 8390656 20971519 6290432 5 Extended
此时 w退出,发现会报错WARNING: Re-reading the partition table failed with error 16: 设备或资源忙. The kernel still uses the old table. The new table will be used at
这是因为要分区的磁盘有分区已经处于挂在状态
此时运行partprobe
[root@localhost wzb]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
再次lsblk发现分区成功了
GPT方式

parted /dev/sdc
(parted) mktable gpt
(parted) mkpart
(parted)
(parted)
(parted)
(parted)

分区的高级使用(逻辑卷)
逻辑卷
其中磁盘不应存放文件,物理卷是组件卷组的成员,若不是就称为基本分区
物理卷:physical volume
卷组:volume group
逻辑卷:logical volume
逻辑卷制作过程:将众多的物理卷(pv)组合成卷组(vg),再从卷组中划分出逻辑卷(lv)
其中物理卷可以是一个磁盘中的分区,或者一个完整的磁盘

逻辑卷命令


完成分区,共划分了52G,还有28G
root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 15G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 12.3G 0 part
├─centos-root 253:0 0 12G 0 lvm /
└─centos-swap 253:1 0 300M 0 lvm [SWAP]
sdb 8:16 0 80G 0 disk
├─sdb1 8:17 0 10G 0 part
├─sdb2 8:18 0 10G 0 part
├─sdb3 8:19 0 12G 0 part
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 20G 0 part
└─sdb6 8:22 0 2G 0 part
创建卷组
硬盘应当没有文件系统(格式化)
其中系统会先将/dev/sdb1/2 转成物理卷,再组合成卷组 systemvg
是卷组名
[root@localhost ~]# vgcreate systemvg /dev/sdb[1-2]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Volume group "systemvg" successfully created
pvs 和 vgs 可查看物理卷和卷组的信息
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <12.30g 4.00m
/dev/sdb1 systemvg lvm2 a-- <10.00g <10.00g
/dev/sdb2 systemvg lvm2 a-- <10.00g <10.00g
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <12.30g 4.00m
systemvg 2 0 0 wz--n- 19.99g 19.99g
创建逻辑卷
格式 -n :-name
lvcreate -L 大小G -n 逻辑卷名字 卷组名
sdb1和sdb2总共20G,这里分配了16G作为逻辑卷,逻辑卷的空间 不能超越卷组
逻辑卷名字为vo ,基于卷组systemvg创建
-l(小写)好像也可以?
[root@localhost ~]# lvcreate -L 16G -n vo systemvg
Logical volume "vo" created.
在相应目录下会产生一个快捷方式
[root@localhost ~]# ls -l /dev/systemvg/vo
lrwxrwxrwx. 1 root root 7 9月 13 10:25 /dev/systemvg/vo -> ../dm-2
格式化
[root@localhost systemvg]# mkfs.xfs /dev/systemvg/vo
...
[root@localhost systemvg]# blkid /dev/systemvg/vo #查看
/dev/systemvg/vo: UUID="7f8da065-4aa1-4b5c-ad0a-7b07030370c6" TYPE="xfs"
lsblk
即可查看相应
扩展逻辑卷
从16G扩展到18G
[root@localhost /]# lvextend -L 18G /dev/systemvg/vo
Size of logical volume systemvg/vo changed from 16.00 GiB (4096 extents) to 18.00 GiB (4608 extents).
Logical volume systemvg/vo successfully resized.
但是df -h
和lvs
的显示不相符
因为df -h
显示的是文件系统的大小,而lvs
显示的是空间的大小,扩展的2G没有文件系统
刷新文件系统(exf文件系统) resize2fs:ext4文件系统
[root@localhost /]# xfs_growfs /dev/systemvg/vo
...
此时df -h
和lvs
的显示相符,都显示18G
需求:现需要将逻辑卷扩展到25G
但是卷组空为20G,所以现在需要扩展卷组,将sdb3
和sdb5
都添加进卷组
vgextend
扩展卷组
[root@localhost /]# vgextend systemvg /dev/sdb3 /dev/sdb5
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb5" successfully created.
Volume group "systemvg" successfully extended
扩展逻辑卷到25G
[root@localhost /]# lvextend -L 25G /dev/systemvg/vo
Size of logical volume systemvg/vo changed from 18.00 GiB (4608 extents) to 25.00 GiB (6400 extents).
Logical volume systemvg/vo successfully resized.
[root@localhost /]# xfs_growfs /dev/systemvg/vo #刷新文件系统
此时lsblk
发现sdb5 似乎没什么改变,应该是因为逻辑卷只扩大了5G,而sdb3就有12G,但是pvs
就可以看到sdb5
了
[root@localhost /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 80G 0 disk
├─sdb1 8:17 0 10G 0 part
│ └─systemvg-vo 253:2 0 25G 0 lvm /mylv
├─sdb2 8:18 0 10G 0 part
│ └─systemvg-vo 253:2 0 25G 0 lvm /mylv
├─sdb3 8:19 0 12G 0 part
│ └─systemvg-vo 253:2 0 25G 0 lvm /mylv
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 20G 0 part
└─sdb6 8:22 0 2G 0 part
逻辑卷补充
xfs文件系统:不支持缩减
ext4文件系统:支持缩减
卷组划分空间的单位PE(扩展单元)默认1个PE的大小为4M
若想要创建一个250M的逻辑卷,当你打完命令发现是252M,因为252可以被4整除


逻辑卷的删除
swap交换空间的制作(虚拟内存)
主要作用是来缓解内存不足
利用硬盘的空间,充当内存的空间CPU----->内存----->硬盘
当物理内存占满了,CPU可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
交换空间最好为内存的2倍,交换空间最大不会超过16G
格式化
[root@localhost ~]# mkswap /dev/sdb6
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=efb35691-6b35-433b-8cce-2d534ee7e4db
[root@localhost ~]# blkid /dev/sdb6 # 查看一下文件系统的类型
/dev/sdb6: UUID="efb35691-6b35-433b-8cce-2d534ee7e4db" TYPE="swap"
[root@localhost ~]# swapon /dev/sdb6 # 启用交换空间
查看交换空间
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 300M 148.3M -2
/dev/sdb6 partition 2G 0B -3

方法二:利用大文件(主要先了解一下dd这个命令)
dd if=数据的源头 of=生成的文件 bs=每次读写数据的大小 count=次数
# /dev/zero 拥有无限的数据,现生成2G的大文件
dd if=/dev/zero of=/opt/swap.txt bs=1M count=2048
将2G的大文件转为swap
# 格式化
mkswap /opt/sawp.txt
# 启动交换分区
swapon /opt/swap.txt

此时交换空间就变大了
进程管理
程序:静态没有执行的代码 硬盘空间
进程:动态执行的代码 CPU与内存资源
ps aux
列出正在运行的所有进程,显示进程信息非常详细
用户 进程ID %CPU %内存 虚拟内存 终端 状态 启示时间 CPU 时间 程序指令
ps -elf
列出正在运行的所有进程,显示进程父进程信息
PPID为父进程的PID
top交互式工具,动态查看进程信息
格式:top [-d 刷新秒数] [-U 用户名]
pstree
查看用户创建的进程
[root@localhost ~]# pstree wzb
bash───vim
[root@localhost ~]# pstree -a wzb
bash
└─vim 123
干掉进程的不同方法
ctrl+c
kill [-9] pid kill [-9] #后台任务编号
killall [-9] 进程名 #强制杀死一个用户开启的所有进程(踢出一个用户)
pkill [-9] 进程名(包含就算)
搭建yum仓库
右键虚拟机---->设置---->CD/DVD---->使用镜像文件---->(E:\004软件\基础环境_所有阶段都需要\CentOS7-1804.iso)
需要将“启用时连接”和“已连接”的√打上
仓库配置文件:/etc/yum.repos.d/*.repo
将配置文件目录所在的文件都移动到备份文件夹
因为这些文件都会影响到后续写的配置文件
[root@svr7 yum.repos.d]# mkdir /etc/yum.repos.d/bak
[root@svr7 yum.repos.d]# mv * bak/
临时挂载镜像文件,挂载的目录自己指定
mount /dev/cdrom /var/ftp/centos
编辑配置文件
[root@svr7 bak]# cat /etc/yum.repos.d/linux.repo
[nsd20] # 仓库的名称
name=linux # 仓库描述信息,任意指定
baseurl=file:///var/ftp/centos # 仓库挂载的地址,指定服务端位置,file://表示为本地服务器
enabled=1 # 本文件启用
gpgcheck=0 # 不检测红帽签名信息
检查
[root@svr7 bak]# yum repolist
...
源标识 源名称 状态
nsd20 linux 9,911
repolist: 9,911
将/dev/cdrom
永久挂载
blkid
可以查看文件类型
[root@server01 yum.repos.d]# blkid /dev/cdrom
/dev/cdrom: UUID="2018-05-07-12-53-47-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
修改 /etc/fstab
格式:设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
...
/dev/cdrom /mydvd iso9660 defaults 0 0
执行umount /mydvd
mount -a
检测是否永久挂载成功
[root@server01 home]# umount /mydvd
[root@server01 home]# mount -a
mount: /dev/sr0 写保护,将以只读方式挂载
自定义Yum仓库
上传包E:\004软件\第一阶段\tools.tar.gz
解压
[root@svr7 ~]# tar -xf /root/tools.tar.gz -C /
[root@svr7 ~]# tar -tf /root/tools.tar.gz
众多的软件包放在/tools/other
[root@svr7 other]# pwd
/tools/other
[root@svr7 other]# ls
boxes-1.1.1-4.el7.x86_64.rpm ntfs-3g-2014.2.15-6.el6.x86_64.rpm sl-5.02-1.el7.x86_64.rpm
cmatrix-1.2a-1.i386.rpm oneko-1.2-19.fc24.x86_64.rpm
生成仓库数据文件
[root@svr7 other]# createrepo /tools/other/
Spawning worker 0 with 2 pkgs
Spawning worker 1 with 1 pkgs
Spawning worker 2 with 1 pkgs
Spawning worker 3 with 1 pkgs
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
在所选的目录可以看到会生成一个目录repodata
待定
修改永久主机名
[root@server01 home]# hostnamectl set-hostname svr7.tedu.cn
[root@server01 home]# hostname
svr7.tedu.cn
修改网卡的命名规则
我们可以修改/etc/default/grub
文件来修改,但是内核读取的是boot/grub2/grub.cfg
文件
所以要通过命令来将配置转入
# 在文件/etc/default/grub的倒数第二行添加:net.ifnames=0 biosdevname=0
# 注意空格
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"
# 将修改映射到内核读取的文件
[root@server01 home]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-cc8867160aa141118ccddde55feeafce
Found initrd image: /boot/initramfs-0-rescue-cc8867160aa141118ccddde55feeafce.img
done
# 完成之后重启 reboot
重启之后发现还是ense33
查了资料后
修改配置文件的名称,在内部也修改名称
# 修改配置文件的名称
mv ifcfg-ens33 ifcfg-eth0
# 配置文件变量修改
DEVICE=eth0
重启之后就生效了
似乎是这样
网卡配置
nmcli命令

这里出问题了,我按照要求删除了ens33,然后就无法用xshell连接了,重启没用,

这里回到快照,回到搭建yum仓库之前
…
阶段一暂告一段落…2022.9.20
回来了 2022-11-13
nmcli命令要给网卡再起一个名字,同时配置也是通过新起的名字。
启动 开启网络管理器
systemctl restart NetworkManager
查看
[root@svr7 network-scripts]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 d604bb9c-9621-4e86-a9ba-a642a75ac47b ethernet --
删除
不删也可以,暂时先不删
[root@svr7 network-scripts]# nmcli connection delete ens33
添加、查看
[root@svr7 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
警告:名为 'eth0' 的连接已存在。使用 uuid '3cd98efe-8cd4-4aa2-9514-9694ed75965b' 来指代连接
连接 "eth0" (3cd98efe-8cd4-4aa2-9514-9694ed75965b) 已成功添加。
[root@svr7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 d604bb9c-9621-4e86-a9ba-a642a75ac47b ethernet -- (旧的)
eth0 549a2586-b9ea-4491-9305-1216f9f44733 ethernet -- (新的)
修改
[root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.200 connection.autoconnect yes
激活
[root@svr7 ~]# nmcli connection up eth0
nmtui命令
pass
克隆操作
链接克隆192.168.92.170
修改主机名
[root@svr7 ~]# hostnamectl set-hostname pc207.tedu.cn
[root@svr7 ~]# hostname
pc207.tedu.cn
修改网卡配置
192.168.92.168
视频:192.168.4.207
输入命令uuidgen
,将生成的UUID写入ifcfg-ens33
网卡配置;在网络适配器复制MAC地址,添加到网卡。
一直重启网卡不成功,重启虚拟机后就可以了。
视频中,将虚拟机的网络连接模式改为自定义(VMnet1仅主机)
在主机中,将vmnet1虚拟网卡的ip地址改为192.168.4.254(与两台虚拟机在同一网段)
此时win应当可以ping通两台虚拟机。
远程管理
此时一台虚拟机可以远程管理另一台虚拟机ssh root@192.168.92.168
记录保存在/root/.ssh/known_hosts
传输文件
scp /etc/passwd root@192.168.92.168:/root
scp -r /home root@192.168.92.207:/root
scp root@192.168.92.207:/etc/shadow /mnt/ # 将远程管理的主机的文件传输到本机
生成公钥和私钥,存放在/root/.ssh
ssh-keygen #大部分情况,一直按回车就行
将公钥传输给别人
ssh-copy-id root@192.168.92.168
ssh root@192l.168.92.168 # 测试无密码控制
exit # 登出
linux日志
日志文件表格,比较重要
日志文件 | 主要用途 |
---|---|
/var/log/messages | 记录内核消息,各种服务的公共消息 |
/var/log/dmesg | 记录系统启动过程的各种消息 |
/var/log/cron | 记录与cron计划任务相关的消息 |
/var/log/maillog | 记录邮件收发相关的消息 |
/var/log/secure | 记录与访问限制相关的安全消息 |
用户日志
信息使用二进制格式,不是很重要
日志文件 | 主要用途 |
---|---|
/var/log/lastlog | 记录最近的用户登录事件 |
/var/log/wtmp | 记录成功的用户登录/注销事件 |
/var/log/btmp | 记录失败的用户登录事件 |
/var/run/utmp | 记录当前登录的每个用户的相关信息 |
SElinux
SElinux的运行模式
enforce(强制)、permissive(宽松)、disabled(彻底禁用、需要重启)
切换运行模式
-临时切换:setenforce 1|0
1:强制
0:宽松
修改之后每次重启还是会是“强制”
要永久修改就要在配置文件修改。
-固定配置:/etc/selinux/config
查看
getenforce
[root@svr7 ~]# getenforce
Disabled
修改配置
修改完毕无法立即改变,只是设定开机之后的SElinux模式
vim /etc/selinux/config
SELINUX=disabled -----> SELINUX=permissive
Web服务
httpd
vim /var/www/html/index.html
...
[root@svr7 etc]# cat /var/www/html/index.html
wzb web server
[root@svr7 etc]# > resolv.conf # 清空文件内容(备份了的),若不清空,httpd似乎无法启动
[root@svr7 etc]# /usr/sbin/httpd # 启动httpd
[root@svr7 etc]# curl http://192.168.92.170 # 查看内容
wzb web server
[root@svr7 etc]# killall httpd # 停止服务
vsftp
由于修改了resolv.conf
导致无法安装vsftpd
先改回来。
安装完成后启动
[root@svr7 vsftpd]# /usr/sbin/vsftpd
[root@svr7 vsftpd]# curl ftp://192.168.92.170
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
[root@svr7 vsftpd]# touch /var/ftp/info.txt
[root@svr7 vsftpd]# curl ftp://192.168.92.170
-rw-r--r-- 1 0 0 0 Nov 14 09:53 info.txt
drwxr-xr-x 2 0 0 6 Jun 09 2021 pub
在浏览器访问,可以看到新建的info.txt

两台
两台虚拟机都将SElinux设为permissive
(宽松模式)
[root@svr7 ~]# setenforce 0
[root@svr7 ~]# getenforce
Permissive
[root@svr7 ~]# vim /etc/selinux/config
SELINUX=permissive
若出现setenforce: SELinux is disabled
修改配置文件
vim /etc/selinux/config
SELINUX=disabled -----> SELINUX=1
关闭防火墙
[root@svr7 ~]# systemctl stop firewalld
[root@svr7 ~]# systemctl disable firewalld
修改httpd默认文件路径(网页文件根目录)
[root@svr7 ~]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html" -----> DocumentRoot "/var/www/myweb"
添加访问目录
[root@svr7 ~]# mkdir /webroot
[root@svr7 ~]# echo wo shi webroot > /webroot/index.html #首页 index.html
[root@svr7 ~]# vim /etc/httpd/conf/httpd.conf # 添加
DocumentRoot "/webroot"
<Directory "/var/www">
Require all granted
</Directory>
虚拟Web主机
使用了虚拟web主机之后,主配置文件中的DocumentRoot
会失效
# 先在相应路径下创建hh.conf(*.conf)
[root@svr7 webroot]# cat /etc/httpd/conf.d/hh.conf
<VirtualHost *:80>
ServerName www.qq.com
DocumentRoot /var/www/qq
</VirtualHost *:80>
<VirtualHost *:80>
ServerName www.lol.com
DocumentRoot /var/www/lol
</VirtualHost *:80>
在相应目录创建配置文件
[root@svr7 www]# pwd
/var/www
[root@svr7 www]# ls
cgi-bin html lol qq
访问
在主配置DocumentRoot
失效后,此时访问会出现qq,写在前面的优先级高
[root@svr7 conf.d]# curl 192.168.92.170
it's qq
NFS
创建共享文件夹
[root@svr7 ~]# mkdir /public
[root@svr7 ~]# echo "123wzb" > /public/1.txt
[root@svr7 ~]# echo "456wzb" > /public/2.txt
[root@svr7 ~]# ls /public/
1.txt 2.txt
修改配置文件,重启服务
[root@svr7 ~]# vim /etc/exports
[root@svr7 ~]# cat /etc/exports # 只读 *表示所有用户都可以访问
/public *(ro)
[root@svr7 ~]# systemctl restart rpcbind # nfs-server依赖于此服务,与动态端口有关
[root@svr7 ~]# systemctl restart nfs-server
在另一台机器(防火墙要关闭)
[root@svr7 ~]# showmount -e 192.168.92.170 #查看目标主机共享的文件夹
Export list for 192.168.92.170:
/public *
[root@svr7 ~]# mkdir /mnt/mynfs
[root@svr7 ~]# mount 192.168.92.170:/public /mnt/mynfs/ # 将共享文件夹挂载
[root@svr7 ~]# ls /mnt/mynfs/ # 查看
1.txt 2.txt
开机自动挂载
[root@svr7 mynfs]# vim /etc/fstab
...
192.168.92.170:/public /mnt/mynfs nfs default,_netdev 0 0
# _netdev:申明网络设备,系统在具备网络参数后,再进行挂载本设备
DNS搭建
装服务
yum -y install bind bind-chroot
bind
的服务名为named
;默认端口号:53
主配置文件:/etc/named.conf
# 设置负责解析的域名
地址库文件:/var/named
# 完全合格的主机名与IP地址对应关系
修改配置文件
原配置文件备份到/home/wzb
[root@svr7 webroot]# cat /etc/named.conf
options {
directory "/var/named"; # 定义地址库存放路径
};
zone "tedu.cn" IN { # 定义负责的解析tedu.cn域名
type master; # 权威主DNS服务器
file "tedu.cn.zone"; # 地址库文件名称
};
创建地址库文件
-p
可以将权限继承,named服务对于权限管理较为严格。可以直接复制模板文件
[root@svr7 named]# cp -p named.localhost tedu.cn.zone
修改配置文件
配置主DNS,只修改了最后几行
NS:name server
tedu.cn. 其中最后一个.表示结尾
同时 tedu.cn.
也可以省略不写,服务会去/etc/named.conf
寻找
申明
[root@svr7 named]# cat tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
svr7 A 192.168.92.170
www A 1.1.1.1
ftp A 2.2.2.2
测试DNS服务器
resolv.conf
中只剩下nameserver 192.168.92.170
nslookup
会绕过hosts
文件直接读取resolv.conf
文件
[root@svr7 ~]# vim /etc/resolv.conf
nameserver 192.168.92.170
[root@svr7 ~]# nslookup
[root@svr7 ~]# nslookup www.tedu.cn
Server: 119.29.29.29
Address: 119.29.29.29 #53
再建立一个
注意地址库文件的权限,所属组必须是named
主配置文件
[root@svr7 named]# cat /etc/named.conf
options {
directory "/var/named";
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "lol.com" IN {
type master;
file "lol.com.zone";
};
地址库文件
[root@svr7 named]# cat lol.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
lol.com. NS svr7
svr7 A 192.168.92.170
www A 4.4.4.4
vip A 5.5.5.5
有规律的泛域名解析
pc1.tedu.cn ---->192.168.92.1
pc2.tedu.cn ---->192.168.92.2
pc3.tedu.cn ---->192.168.92.3
...
pc50.tedu.cn ---->192.168.92.50
地址库文件
[root@svr7 named]# cat tedu.cn.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
tedu.cn. NS svr7
svr7 A 192.168.92.170
www A 10.10.10.10
ftp A 2.2.2.2
$GENERATE 1-50 pc$ A 192.168.92.$
测试
[root@svr7 ~]# nslookup pc1.tedu.cn
Server: 192.168.92.170
Address: 192.168.92.170#53
Name: pc1.tedu.cn
Address: 192.168.92.1
[root@svr7 ~]# nslookup pc20.tedu.cn
Server: 192.168.92.170
Address: 192.168.92.170#53
Name: pc20.tedu.cn
Address: 192.168.92.20
解析记录的别名
[root@svr7 named]# cat /var/named/tedu.cn.zone
...
ftp A 2.2.2.2
vip CNAME ftp
测试
[root@svr7 ~]# nslookup vip.tedu.cn
Server: 192.168.92.170
Address: 192.168.92.170#53
vip.tedu.cn canonical name = ftp.tedu.cn.
Name: ftp.tedu.cn
Address: 2.2.2.2
DNS主从架构
作用:提高可靠性,从DNS服务器备份主DNS服务器的书库(备份地址库文件)
主机主配置文件
添加了allow-transfer { 192.168.92.170 };
[root@svr7 named]# cat /etc/named.conf
options {
directory "/var/named";
allow-transfer { 192.168.92.168 }; # 允许谁可以进行数据传输
};
zone "tedu.cn" IN {
type master;
file "tedu.cn.zone";
};
zone "lol.com" IN {
type master;
file "lol.com.zone";
};
主机地址库文件
[root@svr7 ~]# cat /var/named/lol.com.zone
...
lol.com. NS pc207 #申明从DNS服务器
pc207 A 192.168.92.168
在168从机编辑主配置文件
文件名lol.com.slave
可以随意指定,也可以按照命名规则
从机的地址库文件一般放在/var/named/slaves/
下,因为自带的salves目录属主为named所属组为named
[root@pc207 ~]# cat /etc/named.conf
options {
directory "/var/named";
};
zone "lol.com" IN {
type slave;
file "/var/named/slaves/lol.com.slave";
masters { 192.168.92.170; };
masterfile-format text;
};
重启服务后可以在/vat/named/slave
下看到lol.com.slave
主从同步
主机地址库文件
修改如下
0 ; serial
----> 2022112401 ; serial
# 这里没有固定规则,最多10位,一般按照日期,最后2位是修改次数
www A 4.4.4.4
-----> www A 33.33.33.33
[root@svr7 ~]# cat /var/named/lol.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
2022112401 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
lol.com. NS svr7
lol.com. NS pc207
svr7 A 192.168.92.170
www A 33.33.33.33
vip A 5.5.5.5
pc207 A 192.168.92.168
重启named后
可以看到从机的lol.com.zone
也会改变
递归解析和迭代解析
递归查询:客户端发送请求给首选DNS服务器,首选DNS服务器与其他的DNS服务器交互,最总将解析结果带回来。
迭代查询:客户端发送请求给首选DNS服务器,首选DNS服务器告知下一个DNS服务器地址。
缓存DNS解析
从机192.168.92.168
作为缓存DNS机器
从机主配置文件
forwarders { 192.168.92.170; };
申明主DNS机器
[root@pc207 slaves]# cat /etc/named.conf
options {
directory "/var/named";
forwarders { 192.168.92.170; };
};
此时通过从机DNS访问的结果
[root@pc207 slaves]# nslookup www.lol.com 192.168.92.168
Server: 192.168.92.168
Address: 192.168.92.168#53
Non-authoritative answer: # 表明这个结果是他问来的
Name: www.lol.com
Address: 33.33.33.33
防火墙
防火墙区域
public:仅允许访问本机的ssh、dhcp、ping服务
trusted:允许任何访问
block:拒绝任何来访请求,明确拒绝客户端
drop:丢弃任何来访的数据包、不给任何回应
见规则改为trusted
时,在win上文件夹搜索ftp://192.168.92.170
可以访问
firewall
查看
[root@svr7 yum.repos.d]# firewall-cmd --get-default-zone
public
修改(临时)
[root@svr7 yum.repos.d]# firewall-cmd --set-default-zone=trusted
success
[root@svr7 yum.repos.d]# firewall-cmd --get-default-zone
trusted
重新加载
可以理解为只加载永久性的则略
此时之前在public
添加的http
协议就没了
[root@svr7 ~]# firewall-cmd --reload
success
永久修改
[root@svr7 ~]# firewall-cmd --permanent --zone=public --add-service=http
success
查看规则详细
[root@svr7 ~]# firewall-cmd --zone=public --list-all
public
target: default
icmp-block-inversion: no
interfaces:
sources:
services: dhcpv6-client http ssh
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
防火墙public区域添加规则
[root@svr7 yum.repos.d]# firewall-cmd --zone=public --add-service=http
success
此时,虚拟机B可以访问http://192.168.92.170
[root@svr7 ~]# curl http://192.168.92.170
wzb web server
移除
[root@svr7 ~]# firewall-cmd --permanent --zone=public --remove-service=ftp
邮件服务器
就一台机器192.168.92.170
主配置文件
[root@svr7 named]# cat /etc/named.conf
options {
directory "/var/named";
allow-transfer { 192.168.92.168; };
};
...
zone "qq.com" IN {
type master;
file "qq.com.zone";
};
地址库文件
注意com后面有.
[root@svr7 named]# cat /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
svr7 A 192.168.92.170
www A 1.1.1.1
测试
[root@svr7 ~]# systemctl restart named
[root@svr7 ~]# nslookup www.qq.com
Server: 192.168.92.170
Address: 192.168.92.170#53
Name: www.qq.com
Address: 1.1.1.1
# host -t #指出邮件交换服务器
[root@svr7 ~]# host -t MX qq.com # M:mail邮件 X:exchange交换
qq.com has no MX record # 发现没有邮件交换
修改地址库文件
添加了
qq.com. MX 10 mail # 10为优先级,数字越小优先级越高
mail A 192.168.92.170
[root@svr7 named]# cat /var/named/qq.com.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
qq.com. NS svr7
qq.com. MX 10 mail
svr7 A 192.168.92.170
mail A 192.168.92.170
www A 1.1.1.1
测试
[root@svr7 named]# host -t MX qq.com # 测试qq.com区域邮件交换记录
qq.com mail is handled by 10 mail.qq.com.
[root@svr7 named]# host mail.qq.com # 测试域名完整解析
mail.qq.com has address 192.168.92.170
邮件服务的搭建
装包
[root@svr7 named]# yum -y install postfix
....
修改配置
[root@svr7 named]# vim /etc/postfix/main.cf
...
myorigin = qq.com #第99行 作用是自动添加邮箱后缀
...
inet_interfaces = all #第116行,作用可以理解为本机所有的网卡都提供邮件服务
...
mydestination = qq.com #第164行,作用是告诉自己这台邮件服务器,以`qq.com`为后缀的邮件自己可以处理,不用投递出去
测试
# 新建用户
[root@svr7 named]# useradd yg # 杨过
[root@svr7 named]# useradd xln # 小龙女
# 格式: mail -s '邮件标题' -r 发件人 收件人
# 可以写 mail -s 'wocao' -r yg@qq.com xln@qq.com 但是有自动补全,所以可以不写
[root@svr7 named]# mail -s 'wocao' -r 'yg' xln
WTF
.
EO
# quit/q退出
时间服务器
装包
[root@svr7 named]# yum -y install chrony
...
修改配置文件
[root@svr7 named]# vim /etc/chrony.conf
...
将3到6行注释
...
26 allow all # 允许谁可以同步时间
...
29 local stratum 10 # 取消注释就行,表示本机传递的时间来自时间服务器第10层的时间
...
重启服务、设置开机自启
[root@svr7 named]# systemctl restart chronyd
[root@svr7 named]# systemctl enable chronyd
客户端 192.168.92.168
装包、修改配置
将2-6行注释,在其下添加server 192.168.92.170 iburst
作用是与192.168.92.170
进行时间同步
重启服务、设置开机自启
若时间有差错,重启服务即可同步时间。
DHCP服务器
装包
yum -y install dhcp
....
修改配置文件
将 /usr/share/doc/dhcp*/dhcpd.conf.example
的内容追加到/etc/dhcp/dhcp.conf
剩下以下内容
[root@pc207 ~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
再次修改
[root@pc207 ~]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
subnet 192.168.92.0 netmask 255.255.255.0 { # 分配网段
range 192.168.92.100 192.168.92.200; # 分配IP地址范围
option domain-name-servers 8.8.8.8; # 分配DNS
option routers 192.168.92.254; # 分配的网关地址
default-lease-time 600;
max-lease-time 7200;
}
重启服务
systemctl restart dhcpd
网络装机PXE
流程图
思路:
机器先请求DHCP,DHCP会给机器分配IP地址
然后告诉机器下一个服务器(搭建TFTP)的IP地址和向该服务器所要的网卡引导文件(pxelinux.0)
之后找到TFTP服务器来提供pxelinux.0

PXE组件及过程分析
需要哪些服务组件?
–DHCP服务,分配IP地址、定位引导程序
–TFTP服务,提供引导程序下载
–HTTP服务(或FTP/NFS),提供yum安装源·客户机应具备的条件
客户机应具备的条件
–网卡芯片必须支持PXE协议
–主板支持从网卡启动
TFTP:简单的文件传输协议 默认端口:69
默认共享数据的主目录:/var/lib/tftpboot
安装TFTP;启动服务
[root@svr7 lib]# yum -y install tftp-server
...
[root@svr7 lib]# systemctl restart tftp
修改DHCP的配置文件
添加一些内容
pxelinux.0
:网卡引导文件(网络装机说明书);二进制文件,安装一个软件可以获得该文件
next-server 192.168.92.170; # 下一个服务器的IP地址
filename "pxelinux.0"; # 指明网卡引导文件名称
[root@svr7 home]# cat /etc/dhcp/dhcpd.conf
# DHCP Server Configuration file.
subnet 192.168.92.0 netmask 255.255.255.0 {
range 192.168.92.100 192.168.92.200;
option domain-name-servers 8.8.8.8;
option routers 192.168.92.254;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.92.170;
filename "pxelinux.0";
}
pxelinux.0
关于pxelinux.0
具体可以用一下命令查询一下,后面要跟绝对路径
[root@svr7 lib]# yum provides */pxelinux.0
.....
装包
[root@svr7 lib]# yum -y install syslinux
....
移动pxelinux.0
到默认共享数据的主目录
[root@svr7 syslinux]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
在之前搭建的YUM仓库复制一些文件到指定位置
这些文件是一些菜单文件、内核、驱动、图形模块等,机器会先读取pxelinux.0,通过读到的信息会让机器去读菜单文件default
通过菜单文件,机器又会去读驱动、内核等内容。
[root@svr7 tftpboot]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@svr7 default]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@svr7 tftpboot]# cp /mnt/isolinux/vesamenu.c32 /mnt/isolinux/splash.png /var/lib/tftpboot/
[root@svr7 tftpboot]# cp /mnt/isolinux/vmlinuz /mnt/isolinux/initrd.img /var/lib/tftpboot/
[root@svr7 tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg splash.png vesamenu.c32 vmlinuz
修改default菜单文件
删除了一些内容,修改了菜单的标题。
[root@svr7 tftpboot]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
timeout 600
display boot.msg
# Clear the screen when exiting the menu, instead of leaving the menu displayed.
# For vesamenu, this means the graphical background is still displayed without
# the menu itself for as long as the screen remains in graphics mode.
menu clear
menu background splash.png
menu title wzb pxe server
menu vshift 8
menu rows 18
menu margin 8
#menu hidden
menu helpmsgrow 15
menu tabmsgrow 13
# Border Area
menu color border * #00000000 #00000000 none
# Selected item
menu color sel 0 #ffffffff #00000000 none
# Title bar
menu color title 0 #ff7ba3d0 #00000000 none
# Press [Tab] message
menu color tabmsg 0 #ff3a6496 #00000000 none
# Unselected menu item
menu color unsel 0 #84b8ffff #00000000 none
# Selected hotkey
menu color hotsel 0 #84b8ffff #00000000 none
# Unselected hotkey
menu color hotkey 0 #ffffffff #00000000 none
# Help text
menu color help 0 #ffffffff #00000000 none
# A scrollbar of some type? Not sure.
menu color scrollbar 0 #ffffffff #ff355594 none
# Timeout msg
menu color timeout 0 #ffffffff #00000000 none
menu color timeout_msg 0 #ffffffff #00000000 none
# Command prompt text
menu color cmdmark 0 #84b8ffff #00000000 none
menu color cmdline 0 #ffffffff #00000000 none
# Do not display the actual menu unless the user presses a key. All that is displayed is a timeout message.
menu tabmsg Press Tab for full configuration options on menu items.
menu separator # insert an empty line
menu separator # insert an empty line
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img
初步测试
新建虚拟机
步骤没有特殊的地方,内存要设置在2G以上

网络适配器选择VMnet8,因为DHCP服务器就是用的这个网卡
在虚拟网络编辑器中选择VMnet8,取消使用本地DHCP
选择开启虚拟机,即可显示界面,标题显示的是自己写的

构建FTP服务
构建FTP服务,提供光盘内容
FTP:文件传输协议 默认端口:21
默认共享数据的主目录:/var/ftp
装包vsftpd
[root@svr7 ~]# yum -y install vsftpd
...
[root@svr7 ~]# systemctl restart vsftpd
创建目录,将光盘镜像挂载
[root@svr7 dev]# mkdir /var/ftp/centos
[root@svr7 dev]# mount /dev/cdrom /var/ftp/centos
mount: /dev/sr0 写保护,将以只读方式挂载
测试一下,注意最有要有“/”结尾
[root@svr7 dev]# curl ftp://192.168.92.170/centos/
...
实现无人值守安装,生成应答文件
装服务 图形工具:system-config-kickstart
[root@svr7 ~]# yum -y install system-config-kickstart
...
在虚拟机图形界面运行system-config-kickstart
会出现以下界面

而选择软件包选择,会出现失败的信息。
这是一个BUG,system-config-kickstart
程序需要Yum仓库的支持才能显示软件包的选择,必须要求Yum仓库的标志为[development]
编辑yum仓库配置文件
将标识改为developemnt
[root@svr7 yum.repos.d]# cat /etc/yum.repos.d/linux.repo
[development]
name=linux
baseurl=file:///var/ftp/centos
enabled=1
gpgcheck=0
此时选择软件包安装就会出现新的东西

在基本配置中如下写入
密码是为要装机的主机设置的,这里是123456

安装方法
centos
为相对路径,实际访问的是ftp://192.168.92.170/centos
—> /var/ftp/centos

引导装载选项

分区信息


网络配置

防火墙中禁用SElinux
软件包

保存,这里存放在/home/wzb
名为ks.cfg
将文件复制
[root@svr7 centos]# cp /home/wzb/ks.cfg /var/ftp/
检测一下是否能访问
[root@svr7 ftp]# curl ftp://192.168.92.170/ks.cfg
...
修改菜单文件,指定应答文件获取方式
[root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
...
append initrd=initrd.img ks=ftp://192.168.92.170/ks.cfg
...
准备工作结束
进行装机
检查是否关闭vm自带的DHCP服务
重启服务
[root@svr7 ftp]# systemctl restart dhcpd
[root@svr7 ftp]# systemctl restart tftp
[root@svr7 ftp]# systemctl restart vsftpd
开启 测试机器,若出现insatll centos7
,即为成功,以下是正在安装的界面,它是自动安装的,不需要设置。

源码编译安装
准备:将E:\004软件\第一阶段\tools.tar.gz
上传到虚拟机170,我放在了/home/wzb
解压
[root@svr7 local]# tar -xf /home/wzb/tools.tar.gz -C /usr/local
[root@svr7 local]# tar -xf /usr/local/tools/inotify-tools-3.13.tar.gz -C /usr/local/
大部分软件或服务编译安装的步骤
步骤1∶安装开发工具gcc 与make,释放源代码至指定目录
步骤2: tar解包,释放源代码至指定目录
步骤3: ./configure配置,指定安装目录/功能模块等选项
步骤4: make编译,生成可执行的二进制程序文件
步骤5: make install安装,将编译好的文件复制到安装目录
运行 configure脚本
作用:1、检测当前系统是否安装gcc
2、指定安装位置与功能
cd /usr/loacl/inotify-tools-3.13/
./configure --prefix=/opt/myrpm # 指定安装位置,不产生相应的目录
make
make install
此时在目录/opt/myrpm
就会生成bin
目录,其下有可执行文件
rsync同步操作
rsync:增量拷贝,只传输变化的数据
用法
大部分情况下,源目录都以“/”结尾,这样就可以同步目录的内容,而不加就是同步目录本身。
rsync [选项...] 源目录 目标目录
rsync -av --delete /home/wzb/ /home/tom # 大部分情况下
rsync -av --delete /home/wzb/ root@192.168.92.168:/home/wzb 两台机器远程同步
选项 | 作用 |
---|---|
-n | 测试同步过程,不做实际修改 |
–delete | 删除目标文件夹内多余的文档 |
-a | 归档模式,相当于 -rlptfoD(可以理解为什么都不改变进行同步) |
-v | 显示详细操作信息 |
-z | 传输过程中启用压缩/解压 |
自动同步
首先将主机A的公钥发给主机B
检测目录是否有改动 的命令/opt/myrpm/bin/inotifywait
若在指定文件夹做了修改,那么在当先终端就会实时显示,并且中断当前的监控进程
/opt/myrpm/bin/inotifywait -rq /home/wzb/mydir/
自动同步脚本
[root@svr7 shell]# cat rsync_1.sh
#!/bin/bash
while true
do
/opt/myrpm/bin/inotifywait -rq /home/wzb/mydir/
if [ $? -eq 0 ];then
rsync -av --delete /home/wzb/mydir/ /home/www/todir
echo "changed"
fi
done
数据库初体验
将E:\004软件\第一阶段\users.sql
上传至主机170,我放在了/home/wzb
装包;重启服务
[root@svr7 ~]# yum -y install mariadb-server
...
[root@svr7 ~]# systemctl restart mariadb
出现过无法安装和无法重启服务的情况,前者删除了mariadb相关的包,后者重启了一下就解决了,咋回事?
报错…
12月 04 11:03:49 svr7.tedu.cn mariadb-prepare-db-dir[4052]: Database MariaDB is probably initialized in /var/lib/mysql already, nothing is done.
12月 04 11:03:49 svr7.tedu.cn mariadb-prepare-db-dir[4052]: If this is not the case, make sure the /var/lib/mysql is empty before running mariadb-prepare-db-
12月 04 11:03:49 svr7.tedu.cn mysqld_safe[4083]: 221204 11:03:49 mysqld_safe Logging to '/var/log/mariadb/mariadb.log'.
12月 04 11:03:50 svr7.tedu.cn mysqld_safe[4083]: 221204 11:03:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
12月 04 11:03:55 svr7.tedu.cn systemd[1]: mariadb.service: control process exited, code=exited status=1
12月 04 11:03:55 svr7.tedu.cn systemd[1]: Failed to start MariaDB database server.
-- Subject: Unit mariadb.service has failed
进入数据库
[root@svr7 ~]# mysql -uroot -h 127.0.0.1 -p
...
命令mysql -uroot -p
好像不行,会报错
执行ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
即可修复
来源:https://blog.youkuaiyun.com/whowhowhoisimportant/article/details/111599804)
产生数据
利用users.sql
将数据恢复到mysql
[root@svr7 wzb]# mysql test < /home/wzb/users.sql
此时,在test
库下会有两张表
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| base |
| location |
+----------------+
修改mysql管理员密码
已知旧密码,修改新密码
mysqladmin -u root -p4566 password '123'
mysql -u root -p123
podman
准备
安装rhel8.2
修改主机名thel8.tedu.cn
关闭SElinux
[root@localhost wzb]# vim /etc/selinux/config
...
SELINUX=disabled
...
关闭防火墙
[root@localhost wzb]# systemctl stop firewalld.service
[root@localhost wzb]# systemctl disable firewalld.service
挂载光盘镜像
mdkir /dvd
mount /dev/cdrom /dvd
编写镜像配置文件
[root@localhost dev]# cat /etc/yum.repos.d/rhel.repo
[redhat]
name=wzb
baseurl=file:///dvd/AppStream
enabled=1
gpgcheck=0
[redhat1]
name=wzb1
baseurl=file:///dvd/BaseOS
enabled=1
gpgcheck=0
开机自动挂载
[root@localhost dev]# cat /etc/fstab
...
/dev/cdrom /dvd iso9660 defaults 0 0
修改网卡命名规则
vim /etc/default/grub
..
添加网卡
[root@rhel8 ~]# nmcli connection add type ethernet ifname eth0 con-name eth0
配置ip
[root@rhel8 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.92.180/24 connection.autoconnect yes
后续
[root@rhel8 ~]# yum -y module install container-tools
...
导入镜像
[root@rhel8 podman]# podman load -i /home/wzb/podman/httpd.tar.gz
[root@rhel8 podman]# podman load -i /home/wzb/podman/nginx.tar.gz
[root@rhel8 podman]# podman load -i /home/wzb/podman/myos.tar.gz
查看镜像
REPOSITORY:镜像名
TAG:镜像标签
IMAGE ID:镜像ID
[root@rhel8 podman]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/myos nginx 8a9042664597 2 years ago 392 MB
localhost/myos httpd 2f2eb9bd1363 2 years ago 392 MB
localhost/myos latest 2f57195050eb 2 years ago 392 MB
删除镜像
podman rmi 镜像ID值
podman rmi localhost/myos:nginx # 镜像名:镜像标签
生成镜像
创建一个/etc/resolv.conf
文件,防止生成镜像时出错
touch /etc/resolve.conf
选项
选项 | 效果 |
---|---|
-i (interact) | 交互式 |
-t | 终端 |
-d | 后台运行 |
–name | 容器名字 |
启动镜像
[root@rhel8 podman]# podman run --name abc01 -it localhost/myos:httpd /bin/bash
...