第〇章
1.将系统默认的运行目标修改为“多用户的文本界面”模式,可直接用ln命令把多用户模式目标文件链接到/etc/systemd/system/目录:
[root@linuxprobe ~]# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target
2. 服务的启动、重启、停止、重载、查看状态等常用命令:
|
老系统命令
|
新系统命令
|
作用
|
|
service foo start
|
systemctl start httpd
|
启动服务
|
|
service foo restart
|
systemctl restart httpd
|
重启服务
|
|
service foo stop
|
systemctl stop httpd
|
停止服务
|
|
service foo reload
|
systemctl reload httpd
|
重新加载配置文件(不终止服务)
|
|
service foo status
|
systemctl status httpd
|
查看服务状态
|
3.服务开机启动、不启动、查看各级别下服务启动状态等常用命令
|
老系统命令
|
新系统命令
|
作用
|
|
chkconfig foo on
|
systemctl enable httpd
|
开机自动启动
|
|
chkconfig foo off
|
systemctl disable httpd
|
开机不自动启动
|
|
chkconfig foo
|
systemctl is-enabled httpd
|
查看特定服务是否为开机自启动
|
|
chkconfig --list
|
systemctl list-unit-files --type=httpd
|
查看各个级别下服务的启动与禁用情况
|
第二章
1.man命令中常用按键以及作用
|
按键
|
作用
|
|
空格键
|
向下翻一页
|
|
PaGe down
|
向下翻一页
|
|
PaGe up
|
向上翻一页
|
|
home
|
直接前往首页
|
|
end
|
直接前往尾页
|
|
/
|
从上至下搜索某个关键词,如“/linux”
|
|
?
|
从下至上搜索某个关键词,如“?linux”
|
|
n
|
定位到下一个搜索到的关键词
|
|
N
|
定位到上一个搜索到的关键词
|
|
q
|
退出帮助文档
|
2.man命令中帮助信息的结构以及意义
|
结构名称
|
代表意义
|
|
NAME
|
命令的名称
|
|
SYNOPSIS
|
参数的大致使用方法
|
|
DESCRIPTION
|
介绍说明
|
|
EXAMPLES
|
演示(附带简单说明)
|
|
OVERVIEW
|
概述
|
|
DEFAULTS
|
默认的功能
|
|
OPTIONS
|
具体的可用选项(带介绍)
|
|
ENVIRONMENT
|
环境变量
|
|
FILES
|
用到的文件
|
|
SEE ALSO
|
相关的资料
|
|
HISTORY
|
维护历史与联系方式
|
3.ps命令中的参数以及作用
|
参数
|
作用
|
|
-a
|
显示所有进程(包括其他用户的进程)
|
|
-u
|
用户以及其他详细信息
|
|
-x
|
显示没有控制终端的进程
|
4.grep命令中的参数及其作用
|
参数
|
作用
|
|
-b
|
将可执行文件(binary)当作文本文件(text)来搜索
|
|
-c
|
仅显示找到的行数
|
|
-i
|
忽略大小写
|
|
-n
|
显示行号
|
|
-v
|
反向选择——仅列出没有“关键词”的行。
|
5.在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录中。
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -a {} /root/findresults/ \;
第三章
1.输入重定向中用到的符号及其作用
|
符号
|
作用
|
|
命令 < 文件
|
将文件作为命令的标准输入
|
|
命令 << 分界符
|
从标准输入中读入,直到遇见分界符才停止
|
|
命令 < 文件1 > 文件2
|
将文件1作为命令的标准输入并将标准输出到文件2
|
2.输出重定向中用到的符号及其作用
|
符号
|
作用
|
|
命令 > 文件
|
将标准输出重定向到一个文件中(清空原有文件的数据)
|
|
命令 2> 文件
|
将错误输出重定向到一个文件中(清空原有文件的数据)
|
|
命令 >> 文件
|
将标准输出重定向到一个文件中(追加到原有内容的后面)
|
|
命令 2>> 文件
|
将错误输出重定向到一个文件中(追加到原有内容的后面)
|
|
命令 >> 文件 2>&1
或
命令 &>> 文件
|
将标准输出与错误输出共同写入到文件中(追加到原有内容的后面)
|
3.通过标准输出重定向将man bash命令原本要输出到屏幕的信息写入到文件readme.txt中,然后显示readme.txt文件中的内容
[root@linuxprobe ~]# man bash > readme.txt [root@linuxprobe ~]# cat readme.txt
4.首先通过覆盖写入模式向readme.txt文件写入多行数据(该文件中已包含上一个实验的man命令信息)
[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# echo "Welcome to LinuxProbe.Com" > readme.txt
[root@linuxprobe ~]# cat readme.txt Welcome to LinuxProbe.Com
再通过追加写入模式向readme.txt文件写入一次数据,然后在执行cat命令之后
[root@linuxprobe ~]# echo "Quality linux learning materials" >> readme.txt
[root@linuxprobe ~]# cat readme.txt Welcome to LinuxProbe.Com Quality linux learning materials
5.查看当前目录中某个文件的信息,这里以linuxprobe文件为例。由于这个文件是真实存在的,因此使用标准输出即可将原本要输出到屏幕的信息写入到文件中,而错误的输出重定向则依然把信息输出到了屏幕上。
[root@linuxprobe ~]# ls -l linuxprobe > /root/stderr.txt
[root@linuxprobe ~]# ls -l linuxprobe 2> /root/stderr.txt
-rw-r--r--. 1 root root 0 Mar 1 13:30 linuxprobe
以一个不存在的文件进行实验演示
[root@linuxprobe ~]# ls -l xxxxxx > /root/stderr.txt
cannot access xxxxxx: No such file or directory
[root@linuxprobe ~]# ls -l xxxxxx 2> /root/stderr.txt [root@linuxprobe ~]# cat /root/stderr.txt
ls: cannot access xxxxxx: No such file or directory
6.不区分标准输出和错误输出,只要命令有输出信息则全部追加写入到文件中
[root@linuxprobe ~]# ls -l linuxprobe &>> readme.txt
[root@linuxprobe ~]# ls -l xxxxxx &>> readme.txt
-rw-r--r--. 1 root root 0 Mar 1 13:30 linuxprobe cannot access xxxxxx: No such file or directory
7.使用输入重定向把readme.txt文件导入给wc -l命令,统计一下文件中的内容行数
[root@linuxprobe ~]# wc -l < readme.txt 2
第四章
1.搭建并配置软件仓库
进入/etc/yum.repos.d目录后创建软件仓库的配置文件:
[root@linuxprobe ~]# cd /etc/yum.repos.d/
[root@linuxprobe yum.repos.d]# vim rhel8.repo
创建挂载点后进行挂载操作,并设置成开机自动挂载
[root@linuxprobe yum.repos.d]# mkdir -p /media/cdrom
[root@linuxprobe yum.repos.d]# mount /dev/cdrom /media/cdrom
尝试使用软件仓库的dnf命令来安装Web服务,软件包名称为httpd,安装后出现“Complete!”则代表配置正确
[root@linuxprobe ~]# dnf install httpd -y
2.假设在每周一、三、五的凌晨3:25,都需要使用tar命令把某个网站的数据目录进行打包处理,使其作为一个备份文件。
使用crontab -e命令来创建计划任务,为自己创建计划任务时无须使用-u参数。
crontab –e命令的具体实现效果和crontab -l命令的结果如下
[root@linuxprobe ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
3.如果在crond服务中需要同时包含多条计划任务的命令语句,应每行仅写一条。
例如我们再添加一条计划任务,它的功能是每周一至周五的凌晨1点自动清空/tmp目录内的所有文件。
尤其需要注意的是,在crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,如果不知道绝对路径,请用whereis命令进行查询
[root@linuxprobe ~]# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz /usr/share/man/man1p/rm.1p.gz
[root@linuxprobe ~]# crontab -e
crontab: installing new crontab
[root@linuxprobe ~]# crontab -l
25 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /home/wwwroot
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
第五章
1.用户的解释器被设置为nologin,则代表该用户不能登录到系统中
[root@linuxprobe ~]# useradd -d /home/linux -u 8888 -s /sbin/nologin linuxdown
[root@linuxprobe ~]# id linuxdown
uid=8888(linuxdown) gid=8888(linuxdown) groups=8888(linuxdown)
2.将用户linuxprobe加入到root用户组中
[root@linuxprobe ~]# usermod -G root linuxprobe
3.文件的隐藏属性
chattr命令中的参数及其作用
|
参数
|
作用
|
|
i
|
无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
|
|
a
|
仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)
|
|
S
|
文件内容在变更后立即同步到硬盘(sync)
|
|
s
|
彻底从硬盘中删除,不可恢复(用0填充原文件所在硬盘区域)
|
|
A
|
不再修改这个文件或目录的最后访问时间(atime)
|
|
b
|
不再修改文件或目录的存取时间
|
|
D
|
检查压缩文件中的错误
|
|
d
|
使用dump命令备份时忽略本文件/目录
|
|
c
|
默认将文件或目录进行压缩
|
|
u
|
当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
|
|
t
|
让文件系统支持尾部合并(tail-merging)
|
|
x
|
可以直接访问压缩文件中的内容
|
[root@linuxprobe ~]# echo "for Test" > linuxprobe
[root@linuxprobe ~]# chattr +a linuxprobe
[root@linuxprobe ~]# rm linuxprobe
rm: remove regular file ‘linuxprobe’? y
rm: cannot remove ‘linuxprobe’: Operation not permitted
第六章
略
第七章
1.部署RAID磁盘阵列。
其中,-C参数代表创建一个RAID阵列卡;
-v参数显示创建的过程,同时在后面追加一个设备名称/dev/md0,这样/dev/md0就是创建后的RAID磁盘阵列的名称;
-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;
-l 10参数则代表RAID 10方案;
最后再加上4块硬盘设备的名称
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
可以用-D参数进行查看。也可以用-Q参数查看简要信息
[root@linuxprobe ~]# mdadm -Q /dev/md0
把制作好的RAID磁盘阵列格式化为Ext4格式
[root@linuxprobe ~]# mkfs.ext4 /dev/md0
创建挂载点,将硬盘设备进行挂载操作
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# mount /dev/md0 /RAID
[root@linuxprobe ~]# df -h
查看/dev/md0磁盘阵列设备的详细信息,确认RAID级别(Raid Level)、阵列大小(Array Size)和总硬盘数(Total Devices)都是否正确
[root@linuxprobe ~]# mdadm -D /dev/md0
如果想让创建好的RAID磁盘阵列能够一直提供服务,不会因每次的重启操作而取消,那么一定要记得将信息添加到/etc/fstab文件中
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# cat /etc/fstab
...
2. 损坏磁盘阵列及修复
在确认有一块物理硬盘设备出现损坏而不能再继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态
[root@linuxprobe ~]# mdadm /dev/md0 -f /dev/sdb
mdadm: set /dev/sdb faulty in /dev/md0
[root@linuxprobe ~]# mdadm -D /dev/md0
刚刚使用的-f参数是让硬盘模拟损坏的效果。为了能够彻底地将故障盘移除,还要再执行一步操作
[root@linuxprobe ~]# mdadm /dev/md0 -r /dev/sdb
mdadm: hot removed /dev/sdb from /dev/md0
更换硬盘后再次使用-a参数进行添加操作,系统默认会自动开始数据的同步工作。使用-D参数即可看到整个过程和进度(用百分比表示)
[root@linuxprobe ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@linuxprobe ~]# mdadm -D /dev/md0
3.创建一个RAID 5磁盘阵列+备份盘。
参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候,就能看到有一块备份盘在等待中了。
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
...
[root@linuxprobe ~]# mdadm -D /dev/md0
...
现在将部署好的RAID 5磁盘阵列格式化为Ext4文件格式,然后挂载到目录上,之后就能够使用了
[root@linuxprobe ~]# mkfs.ext4 /dev/md0
...
[root@linuxprobe ~]# mkdir /RAID
[root@linuxprobe ~]# echo "/dev/md0 /RAID ext4 defaults 0 0" >> /etc/fstab
由3块硬盘组成的RAID 5磁盘阵列,其对应的可用空间是n-1,也就是40GB。
4.根据需求把合并后的卷组切割出一个约为150MB的逻辑卷设备,最后把这个逻辑卷设备格式化成Ext4文件系统后挂载使用。
第1步:让新添加的两块硬盘设备支持LVM技术。
[root@linuxprobe ~]# pvcreate /dev/sdb /dev/sdc
Physical volume "/dev/sdb" successfully created.
Physical volume "/dev/sdc" successfully created.
第2步:把两块硬盘设备加入到storage卷组中,然后查看卷组的状态。
[root@linuxprobe ~]# vgcreate storage /dev/sdb /dev/sdc Volume group "storage" successfully created [root@linuxprobe ~]# vgdisplay ...
第3步:再切割出一个约为150MB的逻辑卷设备。
在对逻辑卷进行切割时有两种计量单位。第一种是以容量为单位,所使用的参数为-L。例如,使用-L 150M生成一个大小为150MB的逻辑卷。另外一种是以基本单元的个数为单位,所使用的参数为-l。每个基本单元的大小默认为4MB。例如,使用-l 37可以生成一个大小为37×4MB=148MB的逻辑卷。
[root@linuxprobe ~]# lvcreate -n vo -l 37 storage
Logical volume "vo" created.
[root@linuxprobe ~]# lvdisplay
...
第4步:把生成好的逻辑卷进行格式化,然后挂载使用。
Linux系统会把LVM中的逻辑卷设备存放在/dev设备目录中(实际上就是个快捷方式),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)。
[root@linuxprobe ~]# mkfs.ext4 /dev/storage/vo
...
[root@linuxprobe ~]# mkdir /linuxprobe
[root@linuxprobe ~]# mount /dev/storage/vo /linuxprobe
第5步:查看挂载状态,并写入配置文件,使其永久生效。
[root@linuxprobe ~]# df -h
...
[root@linuxprobe ~]# echo "/dev/storage/vo /linuxprobe ext4 defaults 0 0" >> /etc/fstab
[root@linuxprobe ~]# cat /etc/fstab
...
5.扩容逻辑卷
扩容前请一定要记得卸载设备和挂载点的关联。
[root@linuxprobe ~]# umount /linuxprobe
第1步:把上一个实验中的逻辑卷vo扩展至290MB。
[root@linuxprobe ~]# lvextend -L 290M /dev/storage/vo
...
第2步:检查硬盘的完整性,确认目录结构、内容和文件内容没有丢失。一般情况下没有报错,均为正常情况。
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
第3步:重置设备在系统中的容量。刚刚是对LV(逻辑卷)设备进行了扩容操作,但系统内核还没有同步到这部分新修改的信息,需要手动进行同步。
[root@linuxprobe ~]# resize2fs /dev/storage/vo
第4步:重新挂载硬盘设备并查看挂载状态。
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
...
6.缩小逻辑卷
在执行缩容操作前记得先把文件系统卸载掉。
[root@linuxprobe ~]# umount /linuxprobe
第1步:检查文件系统的完整性。
[root@linuxprobe ~]# e2fsck -f /dev/storage/vo
...
第2步:通知系统内核将逻辑卷vo的容量减小到120MB。
[root@linuxprobe ~]# resize2fs /dev/storage/vo 120M
第3步:将LV逻辑卷的容量修改为120M。
[root@linuxprobe ~]# lvreduce -L 120M /dev/storage/vo
第4步:重新挂载文件系统并查看系统状态。
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# df -h
...
7.逻辑卷快照
在正式操作前,先看看VG(卷组)中的容量是否够用:
[root@linuxprobe ~]# vgdisplay
第1步:使使用-s参数生成一个快照卷,使用-L参数指定切割的大小,需要与要做快照的设备容量保持一致。
另外,还需要在命令后面写上是针对哪个逻辑卷执行的快照操作,稍后数据也会还原到这个相应的设备上。
[root@linuxprobe ~]# lvcreate -L 120M -s -n SNAP /dev/storage/vo Logical volume "SNAP" created
[root@linuxprobe ~]# lvdisplay ...
第2步:在逻辑卷所挂载的目录中创建一个100MB的垃圾文件,然后再查看快照卷的状态。可以发现存储空间的占用量上升了。
[root@linuxprobe ~]# dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M 1+0 records in 1+0 records out 104857600 bytes (105 MB, 100 MiB) copied, 0.312057 s, 336 MB/s
[root@linuxprobe ~]# lvdisplay ...
第3步:为了校验快照卷的效果,需要对逻辑卷进行快照还原操作。在此之前记得先卸载掉逻辑卷设备与目录的挂载。
lvconvert命令用于管理逻辑卷的快照,语法格式为“lvconvert [参数]快照卷名称”。
[root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# lvconvert --merge /dev/storage/SNAP Merging of volume storage/SNAP started. storage/vo: Merged: 36.41% storage/vo: Merged: 100.00%
第4步:快照卷会被自动删除掉,并且刚刚在逻辑卷设备被执行快照操作后再创建出来的100MB的垃圾文件也被清除了。
[root@linuxprobe ~]# mount -a
[root@linuxprobe ~]# cd /linuxprobe/
[root@linuxprobe linuxprobe]# ls lost+found readme.txt [root@linuxprobe linuxprobe]# cat readme.txt
Welcome to Linuxprobe.com
8. 删除逻辑卷
第1步:取消逻辑卷与目录的挂载关联,删除配置文件中永久生效的设备参数。
[root@linuxprobe ~]# umount /linuxprobe
[root@linuxprobe ~]# vim /etc/fstab
第2步:删除逻辑卷设备,需要输入y来确认操作。
[root@linuxprobe ~]# lvremove /dev/storage/vo
第3步:删除卷组,此处只写卷组名称即可,不需要设备的绝对路径。
[root@linuxprobe ~]# vgremove storage Volume group "storage" successfully removed
第4步:删除物理卷设备。
[root@linuxprobe ~]# pvremove /dev/sdb /dev/sdc
Labels on physical volume "/dev/sdb" successfully wiped.
Labels on physical volume "/dev/sdc" successfully wiped.
第八章
Iptables
1.在iptables命令后添加-L参数查看已有的防火墙规则链。
[root@linuxprobe ~]# iptables -L
2.在iptables命令后添加-F参数清空已有的防火墙规则链。
[root@linuxprobe ~]# iptables -F
3.把INPUT规则链的默认策略设置为拒绝。
[root@linuxprobe ~]# iptables -P INPUT DROP
4.向INPUT链中添加允许ICMP流量进入的策略规则。
[root@linuxprobe ~]# iptables -I INPUT -p icmp -j ACCEPT
5.删除INPUT规则链中刚刚加入的那条策略(允许ICMP流量),并把默认策略设置为允许。
[root@linuxprobe ~]# iptables -D INPUT 1
[root@linuxprobe ~]# iptables -P INPUT ACCEPT
6.将INPUT规则链设置为只允许指定网段的主机访问本机的22端口,拒绝来自其他所有主机的流量。
要对某台主机进行匹配,可直接写出它的IP地址;如需对网段进行匹配,则需要写为子网掩码的形式(比如192.168.10.0/24)。
[root@linuxprobe ~]# iptables -I INPUT -s 192.168.10.0/24 -p tcp --dport 22 -j ACCEPT
[root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 22 -j REJECT
7.向INPUT规则链中添加拒绝所有人访问本机12345端口的策略规则。
[root@linuxprobe ~]# iptables -I INPUT -p tcp --dport 12345 -j REJECT
[root@linuxprobe ~]# iptables -I INPUT -p udp --dport 12345 -j REJECT
8.向INPUT规则链中添加拒绝192.168.10.5主机访问本机80端口(Web服务)的策略规则。
[root@linuxprobe ~]# iptables -I INPUT -p tcp -s 192.168.10.5 --dport 80 -j REJECT
9.向INPUT规则链中添加拒绝所有主机访问本机1000~1024端口的策略规则。
前面在添加防火墙策略时,使用的是-I参数,它默认会把规则添加到最上面的位置,因此优先级是最高的。如果工作中需要添加一条最后“兜底”的规则,那就用-A参数
[root@linuxprobe ~]# iptables -A INPUT -p tcp --dport 1000:1024 -j REJECT
[root@linuxprobe ~]# iptables -A INPUT -p udp --dport 1000:1024 -j REJECT
10.使用iptables命令配置的防火墙规则默认会在系统下一次重启时失效,如果想让配置的防火墙策略永久生效,还要执行保存命令
[root@linuxprobe ~]# iptables-save
FIrewalld
1.查看firewalld服务当前所使用的区域。
[root@linuxprobe ~]# firewall-cmd --get-default-zone public
2.查询指定网卡在firewalld服务中绑定的区域。
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=ens160 public
3.把网卡默认区域修改为external,并在系统重启后生效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=ens160 The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=ens160
external
4.把firewalld服务的默认区域设置为public。
默认区域也叫全局配置,指的是对所有网卡都生效的配置,优先级较低。在下面的代码中可以看到,当前默认区域为public,而ens160网卡的区域为external。此时便是以网卡的区域名称为准。
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public
Warning: ZONE_ALREADY_SET: public success
[root@linuxprobe ~]# firewall-cmd --get-default-zone public
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=ens160 externa
5.启动和关闭firewalld防火墙服务的应急状况模式。
使用--panic-on参数会立即切断一切网络连接,而使用--panic-off则会恢复网络连接。
[root@linuxprobe ~]# firewall-cmd --panic-on success
[root@linuxprobe ~]# firewall-cmd --panic-off success
6.查询SSH和HTTPS协议的流量是否允许放行。
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https no
7.把HTTPS协议的流量设置为永久允许放行,并立即生效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no
不想重启服务器的话,就用--reload参数
[root@linuxprobe ~]# firewall-cmd --reload
success
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
yes
8.把HTTP协议的流量设置为永久拒绝,并立即生效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http
Warning: NOT_ENABLED: http success
[root@linuxprobe ~]# firewall-cmd --reload
success
9.把访问8080和8081端口的流量策略设置为允许,但仅限当前生效。
[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports 8080-8081/tcp
10.把原本访问本机888端口的流量转发到22端口,要且求当前和长期均有效。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe ~]# firewall-cmd --reload
success
11.在firewalld服务中配置一条富规则,使其拒绝192.168.10.0/24网段的所有用户访问本机的ssh服务(22端口)
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe ~]# firewall-cmd --reload
success
第九章
1.使用nmcli命令来配置网卡设备的绑定参数
创建出一个bond网卡
使用nmcli命令配置网络信息有一定的难度,所以咱们放到了第9章才开始讲解。首先使用如下命令创建一个bond网卡。其中,命令与参数的意思是创建一个类型为bond(绑定)、名称为bond0、网卡名为bond0的绑定设备,绑定模式为balance-rr:
[root@linuxprobe ~]# nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=balance-rr"
Connection 'bond0' (b37b720d-c5fa-43f8-8578-820d19811f32)
successfully added.
向bond0添加从属网卡
[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port1 ifname ens160 master bond0
Connection 'bond0-port1' (8a2f77ee-cc92-4c11-9292-d577ccf8753d) successfully added.
[root@linuxprobe ~]# nmcli connection add type ethernet slave-type bond con-name bond0-port2 ifname ens192 master bond0
Connection 'bond0-port2' (b1ca9c47-3051-480a-9623-fbe4bf731a89) successfully added.
配置bond0设备的网卡信息
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.addresses 192.168.10.10/24
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.gateway 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns 192.168.10.1
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.dns-search linuxprobe.com
[root@linuxprobe ~]# nmcli connection modify bond0 ipv4.method manual
启动
[root@linuxprobe ~]# nmcli connection up bond0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/22)
[root@linuxprobe ~]# nmcli device status
...
2.安全密钥验证
第1步:在客户端主机中生成“密钥对”,记住是客户端
[root@Client ~]# ssh-keygen
...
第2步:把客户端主机中生成的公钥文件传送至远程服务器。
[root@Client ~]# ssh-copy-id 192.168.10.10
第3步:对服务器进行设置,使其只允许密钥验证,拒绝传统的密码验证方式。记得在修改配置文件后保存并重启sshd服务程序
[root@Server ~]# vim /etc/ssh/sshd_config
………………省略部分输出信息………………
70 # To disable tunneled clear text passwords, change to no here! 71 #PasswordAuthentication yes
72 #PermitEmptyPasswords no
73 PasswordAuthentication no
74
………………省略部分输出信息………………
[root@Server ~]# systemctl restart sshd
第4步:客户端尝试登录到服务器,此时无须输入密码也可成功登录
[root@Client ~]# ssh 192.168.10.10
第十章
1.基于IP地址
第1步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@linuxprobe ~]# mkdir -p /home/wwwroot/10
[root@linuxprobe ~]# mkdir -p /home/wwwroot/20
[root@linuxprobe ~]# mkdir -p /home/wwwroot/30
[root@linuxprobe ~]# echo "IP:192.168.10.10" > /home/wwwroot/10/index.html
[root@linuxprobe ~]# echo "IP:192.168.10.20" > /home/wwwroot/20/index.html
[root@linuxprobe ~]# echo "IP:192.168.10.30" > /home/wwwroot/30/index.html
第2步:从httpd服务的配置文件中大约第132行处开始,分别追加写入3个基于IP地址的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
132 192.168.10.10>
133 DocumentRoot /home/wwwroot/10
134 ServerName www.linuxprobe.com
135 10>
136 AllowOverride None
137 Require all granted
138
139
140 192.168.10.20>
141 DocumentRoot /home/wwwroot/20
142 ServerName www.linuxcool.com
143 20>
144 AllowOverride None
145 Require all granted
146
147
148 192.168.10.30>
149 DocumentRoot /home/wwwroot/30
150 ServerName www.linuxdown.com
151 30>
152 AllowOverride None
153 Require all granted
154
155
………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart httpd
第3步:此时访问网站,则会看到httpd服务程序的默认首页面中显示“权限不足”。手动把新的网站数据目录的SELinux安全上下文设置正确(见前文的实验),并使用restorecon命令让新设置的SELinux安全上下文立即生效。
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/10/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/20/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/30/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot
2.基于主机域名
(这里以192.168.10.10为例)
第1步:手动定义IP地址与域名之间对应关系的配置文件,保存并退出后会立即生效。可以通过分别ping这些域名来验证域名是否已经成功解析为IP地址。
[root@linuxprobe ~]# vim /etc/hosts
127.0.0.1 localhost
localhost.localdomain
localhost4
localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6
localhost6.localdomain6 192.168.10.10 www.linuxprobe.com www.linuxcool.com www.linuxdown.com
第2步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@linuxprobe ~]# mkdir -p /home/wwwroot/linuxprobe
[root@linuxprobe ~]# mkdir -p /home/wwwroot/linuxcool
[root@linuxprobe ~]# mkdir -p /home/wwwroot/linuxdown
[root@linuxprobe ~]# echo "www.linuxprobe.com" > /home/wwwroot/linuxprobe/index.html
[root@linuxprobe ~]# echo "www.linuxcool.com" > /home/wwwroot/linuxcool/index.html
[root@linuxprobe ~]# echo "www.linuxdown.com" > /home/wwwroot/linuxdown/index.html
第3步:从httpd服务的配置文件中大约第132行处开始,分别追加写入3个基于主机名的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
132 192.168.10.10>
133 Documentroot /home/wwwroot/linuxprobe
134 ServerName www.linuxprobe.com
135
136 AllowOverride None
137 Require all granted
138
139
140 192.168.10.10>
141 Documentroot /home/wwwroot/linuxcool
142 ServerName www.linuxcool.com
143
144 AllowOverride None
145 Require all granted
146
147
148 192.168.10.10>
149 Documentroot /home/wwwroot/linuxdown
150 ServerName www.linuxdown.com
151
152 AllowOverride None
153 Require all granted
154
155
………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart httpd
第4步:因为当前的网站数据目录还是在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效,这样就可以立即访问到虚拟主机网站了
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxprobe/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxcool/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/linuxdown/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot
3.基于端口号
第1步:分别在/home/wwwroot中创建用于保存不同网站数据的3个目录,并向其中分别写入网站的首页文件。每个首页文件中应有明确区分不同网站内容的信息,方便稍后能更直观地检查效果。
[root@linuxprobe ~]# mkdir -p /home/wwwroot/6111
[root@linuxprobe ~]# mkdir -p /home/wwwroot/6222
[root@linuxprobe ~]# mkdir -p /home/wwwroot/6333
[root@linuxprobe ~]# echo "port:6111" > /home/wwwroot/6111/index.html
[root@linuxprobe ~]# echo "port:6222" > /home/wwwroot/6222/index.html
[root@linuxprobe ~]# echo "port:6333" > /home/wwwroot/6333/index.html
第2步:在httpd服务配置文件的第46行~48行分别添加用于监听6111、6222和6333端口的参数。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
37 # Listen: Allows you to bind Apache to specific IP addresses and/or
38 # ports, instead of the default. See also the
39 # directive.
40 #
41 # Change this to Listen on specific IP addresses as shown below to
42 # prevent Apache from glomming onto all bound IP addresses.
43 #
44 #Listen 12.34.56.78:80
45 Listen 80
46 Listen 6111
47 Listen 6222
48 Listen 6333
………………省略部分输出信息………………
第3步:从httpd服务的配置文件中大约第134行处开始,分别追加写入3个基于端口号的虚拟主机网站参数,然后保存并退出。记得需要重启httpd服务,这些配置才生效。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
134 192.168.10.10:6111>
135 DocumentRoot /home/wwwroot/6111
136 ServerName www.linuxprobe.com
137 6111>
138 AllowOverride None
139 Require all granted
140
141
142 192.168.10.10:6222>
143 DocumentRoot /home/wwwroot/6222
144 ServerName www.linuxcool.com
145 6222>
146 AllowOverride None
147 Require all granted
148
149
150 192.168.10.10:6333>
151 DocumentRoot /home/wwwroot/6333
152 ServerName www.linuxdown.com
153 6333>
154 AllowOverride None
155 Require all granted
156
157
………………省略部分输出信息………………
第4步:因为我们把网站数据目录存放在/home/wwwroot目录中,因此还是必须要正确设置网站数据目录文件的SELinux安全上下文,使其与网站服务功能相吻合。最后记得用restorecon命令让新配置的SELinux安全上下文立即生效。
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6111/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6222/*
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333
[root@linuxprobe ~]# semanage fcontext -a -t httpd_sys_content_t /home/wwwroot/6333/*
[root@linuxprobe ~]# restorecon -Rv /home/wwwroot/
可以使用semanage命令查询并过滤出所有与HTTP协议相关且SELinux服务允许的端口列表。
[root@linuxprobe ~]# semanage port -l | grep http
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
第5步:SELinux允许的与HTTP协议相关的端口号中默认没有包含6111、6222和6333,因此需要将这3个端口号手动添加进去。该操作会立即生效,而且在系统重启过后依然有效。设置好后再重启httpd服务程序,然后就可以看到网页内容了。
[root@linuxprobe ~]# semanage port -a -t http_port_t -p tcp 6111
[root@linuxprobe ~]# semanage port -a -t http_port_t -p tcp 6222
[root@linuxprobe ~]# semanage port -a -t http_port_t -p tcp 6333
[root@linuxprobe ~]# semanage port -l | grep http
4.Apache的访问控制
第1步:先在服务器上的网站数据目录中新建一个子目录,并在这个子目录中创建一个包含Successful单词的首页文件。
[root@linuxprobe ~]# mkdir /var/www/html/server
[root@linuxprobe ~]# echo "Successful" > /var/www/html/server/index.html
第2步:打开httpd服务的配置文件,在第161行后面添加下述规则来限制源主机的访问。这段规则的含义是允许使用Firefox浏览器的主机访问服务器上的首页文件,除此之外的所有请求都将被拒绝。
[root@linuxprobe ~]# vim /etc/httpd/conf/httpd.conf
………………省略部分输出信息………………
161 "/var/www/html/server">
162 SetEnvIf User-Agent "Firefox" ff=1
163 Order allow,deny
164 Allow from env=ff
165
………………省略部分输出信息………………
[root@linuxprobe ~]# systemctl restart httpd
[root@linuxprobe ~]# firefox
第十一章
1.把FTP协议添加到firewalld服务的允许列表中
[root@linuxprobe ~]# iptables -F
[root@linuxprobe ~]# iptables-save
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=ftp success
[root@linuxprobe ~]# firewall-cmd --reload success
2.向匿名用户开放的权限参数以及作用
|
参数
|
作用
|
|
anonymous_enable=YES
|
允许匿名访问模式
|
|
anon_umask=022
|
匿名用户上传文件的umask值
|
|
anon_upload_enable=YES
|
允许匿名用户上传文件
|
|
anon_mkdir_write_enable=YES
|
允许匿名用户创建目录
|
|
anon_other_write_enable=YES
|
允许匿名用户修改目录名称或删除目录
|
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=YES
2 anon_umask=022
3 anon_upload_enable=YES
4 anon_mkdir_write_enable=YES
5 anon_other_write_enable=YES
6 local_enable=YES
7 write_enable=YES
8 local_umask=022
9 dirmessage_enable=YES
10 xferlog_enable=YES
11 connect_from_port_20=YES
12 xferlog_std_format=YES
13 listen=NO
14 listen_ipv6=YES
15 pam_service_name=vsftpd
16 userlist_enable=YES
3.本地用户模式使用的权限参数以及作用
|
参数
|
作用
|
|
anonymous_enable=NO
|
禁止匿名访问模式
|
|
local_enable=YES
|
允许本地用户模式
|
|
write_enable=YES
|
设置可写权限
|
|
local_umask=022
|
本地用户模式创建文件的umask值
|
|
userlist_deny=YES
|
启用“禁止用户名单”,名单文件为ftpusers和user_list
|
|
userlist_enable=YES
|
开启用户作用名单文件功能
|
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 write_enable=YES
4 local_umask=022
5 dirmessage_enable=YES
6 xferlog_enable=YES
7 connect_from_port_20=YES
8 xferlog_std_format=YES
9 listen=NO
10 listen_ipv6=YES
11 pam_service_name=vsftpd
12 userlist_enable=YES
4.利用PAM文件进行认证时使用的参数以及作用
|
参数
|
作用
|
|
anonymous_enable=NO
|
禁止匿名开放模式
|
|
local_enable=YES
|
允许本地用户模式
|
|
guest_enable=YES
|
开启虚拟用户模式
|
|
guest_username=virtual
|
指定虚拟用户账户
|
|
pam_service_name=vsftpd.vu
|
指定PAM文件
|
|
allow_writeable_chroot=YES
|
允许对禁锢的FTP根目录执行写入操作,而且不拒绝用户的登录请求
|
[root@linuxprobe ~]# vim /etc/vsftpd/vsftpd.conf
1 anonymous_enable=NO
2 local_enable=YES
3 write_enable=YES
4 guest_enable=YES
5 guest_username=virtual
6 allow_writeable_chroot=YES
7 local_umask=022
8 dirmessage_enable=YES
9 xferlog_enable=YES
10 connect_from_port_20=YES
11 xferlog_std_format=YES
12 listen=NO
13 listen_ipv6=YES
14 pam_service_name=vsftpd.vu
15 userlist_enable=YES
第十二章
略
第十三章
略
第十四章
自动管理IP地址
“机房运营部门:明天会有100名学员自带笔记本电脑来我司培训学习,请保证他们能够使用机房的本地DHCP服务器自动获取IP地址并正常上网”。
机房所用的网络地址以及参数信息
|
参数名称
|
值
|
|
默认租约时间
|
21600秒
|
|
最大租约时间
|
43200秒
|
|
IP地址范围
|
192.168.10.50~192.168.10.150
|
|
子网掩码
|
255.255.255.0
|
|
网关地址
|
192.168.10.1
|
|
DNS服务器地址
|
192.168.10.1
|
|
搜索域
|
linuxprobe.com
|
[root@linuxprobe ~]# vim /etc/dhcp/dhcpd.conf
ddns-update-style none;
ignore client-updates;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.50 192.168.10.150;
option subnet-mask 255.255.255.0;
option routers 192.168.10.1;
option domain-name "linuxprobe.com";
option domain-name-servers 192.168.10.1;
default-lease-time 21600;
max-lease-time 43200; }
第十五章
略
第十六章
略
第十七章
略
第十八章
数据库的备份及恢复
[root@linuxprobe ~]# mysqldump -u root -p linuxprobe > /root/linuxprobeDB.dump
第十九章
略
第二十章
略