Linux基础

基础

网卡地址

/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

image-20220429211357758

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

image-20220429213610160

find

image-20220429214053153

在根目录下查找以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 913 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,所以现在需要扩展卷组,将sdb3sdb5都添加进卷组

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
...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值