Linux基础(课内版)09(20210722笔记)
管理基本存储
添加分区/文件系统和持久挂载
硬盘分区方案
硬盘使用
分区 ===> 格式化文件系统 ===> 挂载
物理分区/逻辑(虚拟)分区
MBR分区方案
MBR:每个驱动器最多支持4个主分区,最多划分 2TB 的磁盘。
GPT 分区方案
GPT:每个驱动器最多支持128个分区。可以对磁盘进行 18EB 的分区。
给Linux添加磁盘并使用
1、给Linux添加硬盘
2、识别硬盘
3、分区
4、格式化文件系统
添加分区
借助分区编辑器程序,管理员可以对磁盘的分区进行更改,例如创建分区、 删除分区和更改分区类型。使用 PARTED 管理分区可以对 MBR 和 GPT 分 区方案执行以上操作。
parted /dev/vda print
parted /dev/vda unit s print
要对磁盘进行分区,首先必须写入磁盘标签。磁盘标签指示所用的分区方案。
parted /dev/vdb mklabel msdos/gpt
mklabel命令可擦除现有的分区表,而且parted命令会使其立即生效。因此,如果磁盘 已有磁盘标签,那可能会导致数据的丢失。
添加分区
交互式添加分区:parted
非交互式添加分区:
parted /dev/vdb mkpart primary xfs 2048s 1025MiB
parted /dev/vdc mkpart userdata xfs 2048s 1025MiB
udevadm settle
使用fdisk和gdisk管理分区
使用 fdisk 管理 MBR 分区
fdisk 是一个交互式的配置工具,不断的与系统进行交互实现配置。
常用命令包括:
m:获取帮助
n:添加分区
d:删除分区
p:打印分区表
w:保存配置
使用 gdisk 管理 GPT 分区
gdisk 是 fdisk 的延伸,主要用于 GPT 分区。
挂载文件系统
临时挂载文件系统
管理员可使用 mount 命令将 设备手动连接到目录位置或挂载点,具体为指定设备和挂载 点,以及可能需要的任何选项。
mount /dev/vdb1 /mnt
mount | grep /dev/vdb1
永久挂载文件系统
通过将设备的列表添加到/etc/fstab文件中,管理员可以将设备配置为在系统启动时挂 载到挂载点。
在/etc/fstab文件中添加或删除条目后,运行 systemctl daemon-reload 进行重新加 载,使之生效。
注意:/etc/fstab中存在错误的条目可能会导致计算机无法启动。如果遇到这种情况, 需要进入救援模式进行修改。
管理交换空间
交换空间:与 Linux 内核内存管理子系统配合使用的磁盘区域。交换空间用于通过 保存不活动的内存页来补充系统 RAM。系统 RAM 与交换空间组合在一起称为虚拟内存。
管理员应根据系统的内存工作负载来调整交换空间大小。
创建交换空间
① 创建文件系统类型为 linux-swap 的分区
parted /dev/vdb
② 对设备进行交换签名格式化
mkswap /dev/vdb2
mkswap 命令在设备(分区)开头写入单个数据块,而将其余部分保留为未格式化,这样 内核就可以使用它来存储内存页。
激活交换空间
管理员可以使用 swapon 命令激活已格式化的交换空间。
free或swapon --show
swapon /dev/vdb1
swapoff /dev/vdb1
持久激活交换空间
要想每次启动时,都激活交换空间,需要在/etc/fstab文件中放置一个条目。
在/etc/fstab文件中添加或删除条目后,运行 systemctl daemon-reload 进行重新加载,使之生效。
swapon -a命令可以激活/etc/fstab文件中列出的所有交换空间。
设置交换空间优先级
默认情况下,swap 分区优先级为-2,swapon 命令的 -p 选项可以设置,也可以通过 在/etc/fstab文件中的第三字段进行设置。使用 swapon --show 可以查看其优先级。
swap分区优先级值越大,优先级越高。当swap分区优先级相同时,内核会以轮询的方式进行写入。
管理逻辑卷
创建逻辑卷
LVM逻辑卷管理
将若干存储资源池化,实现灵活使用和调整
支持替换故障磁盘,提高可用性
步骤
① 准备物理设备
LVM 支持使用整块磁盘或者分区,可以使用 parted 命令以及 fdisk/gdisk 命令创建分区以便与 LVM 结合使用。要注意,分区的类型需要选择 Linux LVM。
parted 方式
正常创建分区
parted /dev/vdb mklabel msdos/gpt
parted /dev/vdb ===> 创建分区
设置为Linux LVM类型
parted /dev/vdb set <分区编号> lvm on
fdisk/gdisk 方式
先使用 n 选项正常创建分区,再使用t选项设置其类型:
② 创建物理卷
使用 pvcreate 将分区或者其他物理设备标记为物理卷。pvcreate 命令会将物理卷分成若干特定 大小的物理区块(PE)
pvcreate /dev/vdb2 /dev/vdc
③ 创建卷组
使用 vgcreate 将一个或多个物理卷结合为一个卷组。vgcreate 命令由卷组名后跟一个或多个要 分配给该卷组的物理卷组成。
vgcreate <vg name> <pv1> <pv2> <...>
④ 创建逻辑卷
使用 lvcreate 可根据卷组中的可用物理区块(PE)创建新的逻辑卷。
lvcreate -n <lv name> -L <lv size> <vg name>
lvcreate 命令中至少包含用于设置 lv 名称的 -n 选项,用于设置 lv 大小的 -L 选项。-L 选项使用字节作为单位,例如 700M,也可以使用 -l 选项,以物理区块(PE)数量作为单位。
注意:如果设置的 lv 大小无法完全匹配,则将补偿为物理区块大小的倍数。
⑤ 创建及挂载文件系统 m
mkfs -t <filesystem> <lv name>
mount <lv name> <dir>
vim /etc/fstab
查看LVM状态信息
查看物理卷pv状态
pvdisplay
查看卷组vg状态
vgdisplay
查看逻辑卷lv状态
lvdisplay
删除LVM逻辑卷
a、卸载文件系统
umount /mnt/lvm-strage
b、删除逻辑卷
lvremove /dev/vg-01/lv01
c、删除卷组
vgremove vg-01
d、删除物理卷
pvremove /dev/vdb1
扩展逻辑卷
扩展和缩减卷组
扩展卷组:通过添加额外的物理卷来为卷组增加更多磁盘空间。
缩减卷组:将未使用的物理卷从卷组中删除。
扩展卷组
准备物理设备
parted /dev/vdb mkpart primary 1MiB 1025MiB
parted /dev/vdb set 3 lvm on
创建物理卷
pvcreate /dev/vdb3
扩展卷组
vgextend vg01 /dev/vdb3
验证可用
vgdisplay vg01
扩展逻辑卷和文件系统
逻辑卷的一个优势在于可以不停机情况下增加其大小,也就是扩展逻辑卷。另外,不建议缩减逻辑卷,以避免意外导致数据丢失。
验证可用空间
使用 vgdisplay 命令查看输出中的 Free PE / Size 是否有 足够空间。
vgdisplay
扩展逻辑卷
lvextend -L +300M /dev/vg01/lv01
使用 -L 选项扩展逻辑卷300M,如果不写+,将扩展为 300M;此处同样支持使用 -l 选项。
扩展文件系统
扩展逻辑卷后,遗漏文件系统的扩展是一个常见的错误。
xfs_growfs <挂载点>
resize2fs
lvextend 使用 -r 选项可以扩展多种文件系统
扩展逻辑卷和交换空间
格式化为交换空间的逻辑卷也可以进行扩展,但过程与扩展文件系统有所不同。同时, 扩展交换空间必须脱机才能进行。
验证可用空间
使用 vgdisplay 查看 空闲物理区块空间
停用交换空间
swapoff
扩展逻辑卷
vextend -L +extents <dev>
格式化
mkswap <dev>
激活交换空间
swapon <dev>
总结图
计划将来的任务
计划延迟的用户作业
管理员(或普通用户)不时地要在将来某个设定点运行一个或一组命令。例如,计划要向老板发送电子邮件,或要在十分钟后重置防火墙等等。这些计划的命令通常称为计划任务 或作业。
at软件包
假如要让特定任务运行一次,需要用到at程序。
at的守护进程为atd,它有一组命令行工具可与守护进程(at、atq等等)进行交互。
at可以把任务放到/var/spool/at目录中,指定运行的时间,即可在指定的时间运行。
为了避免复杂命令的书写错误,可以先在脚本文件中编写,再通过输入重定向输入到at程序 中执行。简单命令可以在终端窗口中直接输入,通过ctrl+D来完成输入
at 命令
【例1】2分钟后,新建/test目录,并在目录下新建一个1.txt文件。
命令写在脚本里,计划任务执行脚本
【例2】在凌晨2点的时候,重启计算机。
检查和管理作业
作业的配置文件保存在/var/spool/at目录下。文件包括了环境变量(前面)以及计划 执行的命令(后面)。
at -c <JOBNUMBER>
查看目前等待执行的任务:atq
atq
按照优先级执行作业
删除作业
atrm <JOURNUMBER>
注意:非特权用户只能查看和控制自己的作业;root可以查看和管理所有作业
计划周期性用户作业
cron简介
Red Hat Enterprise Linux系统附带了特别针对周期性作业的crond守护进程 ,且默认开机启动。
crond是由多个配置文件和系统范围内的文件控制的,每个用户对应一个配置文件。
这些配置文件使用户和管理员拥有各自的控制权 ,可以控制应执行周期性作业的确切时间。
crond守护进程由cronie软件包提供。
用户周期性作业的配置文件
/var/spool/cron/
某个用户执行crontab -e命令完成周期性作业的编辑后,相关的配置会写入到该目录下,以用户名命名的文件中。该文件在第一次配置周期性作业时创建,后续的配置将追加写入到该文件。
需要删除周期性作业时,可以通过编辑配置文件删除相应任务的行即可;如果直接删除文件将删除用户所有的周期任务。
普通用户仅可以设置自己的周期性用户作业,特权用户root可以使用crontab命令的-u 选项设置其他用户的周期性作业。
【示例】
crontab -e -u student
作业配置文件格式
各个作业都包含六个字段,这些字段包括(按顺序):
时间书写格式
* 表示 无关重要/始终
数字可用于指定分钟数或小时数、日期或者工作日。(对于工作日,0表示星期日,1 表示星期 一,依此类推。7也表示星期日。)
x-y表示范围,x到y (含)
x,y表示列表。列表也可以包含范围,例如“分钟”列中的5,10-13,17表示作业应当在 每小时5分钟、10分钟、11分钟、12分钟、13分钟和17分钟时运行
*/x表示x的时间间隔,例如分钟列中的 */7表示每七分钟运行一次作业
此外,可以使用三个字母的英文缩写来表示月份和工作日,例如Jan、Feb以及Tue、Wed等
【例1】在每年1月1日上午9点执行命令echo “happy new year”
0 9 1 1 * echo "happy new year"
【例2】在七月的每周五,上午9点至下午5点间,每5分钟执行命令echo “hello”
*/5 9-16 * Jul Fri echo "hello"
注意:9-16代表9点至16点59分,也就是上午9点至下午5点
【例3】每个工作日上午9点,执行shell脚本(test.sh)
vim file1 ===> 0 9 * * 1-5 sh test.sh
crontab file1
通过crontab命令运行一个单独写好的任务文件,该文件遵守同样的语法格式
计划周期性系统作业
系统管理员通常需要运行周期性作业,这时就不应使用用户账户运行作业。也就是说, 不要使用crontab命令来安排这些作业,而是使用系统范围的crontab文件。
系统cron作业存储位置/etc/crontab和/etc/cron.d/* 以及/etc/cron.*
01 自己写,自己放
/etc/crontab:直接在该文件中定义,但在进行软件包更新时,现有内 容可能会被覆盖。
/etc/cron.d/*:自定义crontab文件后放入/etc/cron.d目录(推荐)
02 放到对应目录
将自定义的脚本(无需按照crontab书写)放入以下目录中
/etc/cron.hourly/*:每小时运行的脚本的存储库
/etc/cron.daily/*:每天运行的脚本的存储库
/etc/cron.weekly/*:每周运行的脚本的存储库
/etc/cron.monthly/*:每月运行的脚本的存储库
执行规则存储
/etc/cron.hourly/* ===> /etc/cron.d/0hourly
在/etc/cron.d目录下保存着配置文件0hourly定义了/etc/cron.hourly目录下文件的周 期性执行的规则。
etc/cron.daily/* 、/etc/cron.weekly/* 、/etc/cron.monthly/*
在过去,曾使用anacron独立服务来实现周期性计划,使用文件/etc/anacrontab定义 以上目录的周期执行计划。在RHEL 7以后,使用crond服务来解析这个文件。
此外,会在/var/spool/anacron目录下,保存上次作业的时间戳。
配置文件及服务一览
SYSTEMD定时器
随着systemd的出现,一种新的调度功能被推出——systemd定时器单元。systemd 定时器单元可以激活另一个不同类型的单元,例如服务单元。其时间记录会保存在系 统日志中。
示例:sysstat软件包提供了一个sysstat-collect.timer的systemd定时单元。其中的参 数OnCalendar=*:00/10表示定时器单元将每10分钟激活一次相应的单元(sysstat-collect.service)。
更改定时器单元配置文件后,执行以下命令:
systemctl deamon-reload
systemctl enable --now .timer
管理SELinux安全性
SELinux
Security Enhanced Linux (SELinux)是一个额外的系统安全层,由美国国家安全局 (NSA) 开发,主要目标是防止已遭泄露的系统服务访问用户数据。
标准的用户/组/其他权限安全模型,这种基于用户和组的模型称为自主访问控制 (Discretionary Access Control, DAC)
SELinux 提供另一层安全,它基于对象并由更加复杂的规则控制,称为强制访问控制 (Mandatory Access Control, MAC)
SELinux 通过专门的安全标签(SELinux上下文)来确定某个进程能否访问文件、目录或端口。除非显示设置了授予访问权限,否则将默认不允许策略 任何交互。
SELinux安全的基本概念
SELinux 安全标签(SELinux 上下文)
用户、角色、类型和敏感度,默认 策略类型会根据类型上下文来制定策略规则,类型上下文通常以“_t”结尾。
SELinux 策略规则
不同的规则组成了 SELinux 整体的策略。部分规则可 以按照需求启用或禁用。规则是模块化、可扩展的。在安装新的应用程序时, 应用程序可通过添加新的模块来添加规则。用户也可以手动地增减规则
三种模式
强制 enforcing:SELinux 强制执行访问控制规则。(默认模式)
许可 permissive:SELinux 不强制执行访问控制规则,仅记录违反规则的警告。
禁用 disabled:SELinux 完全关闭。
更改SELinux模式
设置默认 SELinux 模式
修改 /etc/selinux/config 文件,修改后重启生效。系统在启动时会读取文件中的配置。
查看当前 SELinux 模式
getenforce
更改当前 SELinux 模式
setenforce [ Enforcing | Permissive | 1 | 0 ]
1启动,0关闭
调查和解决SELinux问题
在 SELinux 阻止访问服务器上的文件时,可以参考以下指南:
检查配置是否正确,如当 Web 服务器尝试访问 /home 中的文件时,如果用户并未发 布 Web 内容,则可能表明服务遭入侵。如果已授予访问权限,则需要采取其他步骤来 解决此问题。
最常见的 SELinux 问题是上下文不正确。在大多数情况下,运行 restorecon 将会更正 此问题。以这种方式更正问题对系统剩余部分的安全性具有非常小的影响。
对于严苛限制性访问的另一个补救措施可以是调整布尔值。例如,ftpd_anon_write 布尔值控制匿名 FTP 用户能否上传文件。如果希望允许匿名 FTP 用户能够上传文件到 服务器,则必须启用此布尔值。
SELinux策略可能存在阻止合法访问的漏洞。不过 SELinux 技术已经比较成熟,这种情 况极少发生。
|