终端提示符
[root@localhost ~]#
root
:当前登录的用户@
:at,在……localhost
:当前登录的主机名~
:当前的目录#
:当前登录的用户是root$
:当前登录的用户是普通用户
快捷键
ctrl
+c
废弃当前编辑的命令行(结束正在运行的命令)Esc
+.
或Alt
+.
粘贴上一个命令的参数ctrl
+l
清空整个屏幕ctrl
+u
清空至行首ctrl
+w
往回删除一部分(以空格界定)ctrl
+shift
+t
新开一个终端ctrl
+shift
++
放大ctrl
+-
缩小
常用命令
颜色区分文件类型:
- 白色:文本文件
- 蓝色:目录
- 绿色:可执行文件
- 蓝绿色:软链接
- 红色:归档文件
- 黄色:设备文件
cd:切换工作路径
cd - # 返回上一次所处的目录
cd .. # 返回上级目录
cd ~ # 切换当前用户的家目录
rm:删除文件或目录
选项:
- -r 递归删除目录
- -f 强制删除,不出现提示
cat: 查看文本
touch:创建空白文件
mkdir:创建空白目录
选项:
- -p 递归创建目录
获取系统帮助
- help帮助
- 命令 –help
- man手册
- man 命令
- 交互:
- 方向键滚动屏幕
- /关键词 搜索,n下一个,N上一个
- 放大字体 Ctrl + Shift + +
- 缩小字体Ctrl –
- q退出
vim:文本编辑器,不支持鼠标操作
vim 文件
- 若文件存在则编辑,否则创建后编辑
- vim打开文件后默认进入“命令模式”
- 命令模式下“i”进入插入模式,“:”进入末行模式
- wq或:x保存并退出
- q!不保存强制退出
管道符 | :前面的命令的输出结果,交由后面的命令处理(只适用于单一参数的命令)
head [-n] 文件:显示前n行,默认10行
head -2 /etc/passwd # 显示/etc/passwd文件的前2行
tail [-n] 文件:显示后n行,默认10行
tail -3 /etc/passwd # 显示/etc/passwd文件的后3行
查看/etc/passwd的第8~12行
head -12 /etc/passwd | tail -5
grep:文本过滤
grep [选项] 过滤条件 文本
- 选项
-n
显示行号-v
取反-i
忽略大小写-c
统计匹配行数
- 过滤条件
- 关键词 显示有关键词的行
- ^关键词 显示开头是关键词的行
- 关键词$ 显示结尾是关键词的行
- ^$ 显示出空行
grep root /etc/passwd
grep ^root /etc/passwd
grep shell$ /etc/passwd
grep -v ^$ /etc/chrony.conf # 过滤出非空行
grep -i shell$ /etc/passwd # 忽略大小写过滤出shell
grep -c ^$ /etc/chrony.conf # 统计空行数
过滤出/etc/chrony.conf文件中的有效配置(不包含空行和以#开头的注释)
grep -v ^$ /etc/chrony.conf | grep -v ^#
修改网络配置
配置文件修改
vim /etc/sysconfig/network-script/ens160
### 以下是文件内容样例 ###
TYPE=Ethernet # 类型:以太网
BOOTPROTO=none # IP地址配置类型:静态
NAME=ens160 # 网卡配置名称
DEVICE=ens160 # 设备名字
ONBOOT=yes # 是否开机自动联网
IPADDR=172.25.0.11 # IP地址
PREFIX=24 # 子网掩码
GATEWAY=172.25.0.254 # 网关
DNS1=172.25.254.254 # DNS服务器
激活网卡
nmcli connection up 'ens160'
命令修改
nmcli(network management command line interface)
nmcli connect modify 'ens160' ipv4.method manual ipv4.adresses 172.25.0.11/24 ipv4.gateway 172.25.0.254 ipv4.dns 172.25.254.254 connetcion.autoconnect yes
激活网卡
nmcli connection up 'ens160'
检查是否配置成功
IP和掩码
ifconfig
网关
route -n
DNS
cat /etc/resolv.conf
伪图形界面修改
nmtui
压缩与解压缩
tar包的常见格式
tar.gz–>gzip,gunzip(速度最快,压缩比例最小)
tar.bz2–>bzip2,bunzip2
tar.xz–>xz,unxz(速度最慢,压缩比例最大)
打包tar包
tar -格式选项cf /路径/tar包名 /路径/源文档
- 选项:
-c
# 创建tar包(crate)-f
# 指定压缩文档(file),必须放在所有选项最后-P
# 压缩保留源文档的绝对路径,解包时可以用同样的选项,解包到保留的目录中-v
# 可视化压缩(visitable),显示压缩的过程- 格式选项:
-z
# 用于.gz格式,记:zaiGuangZhou(在广州)-j
# 用于.bz2格式,记:小j BuxiZao(小鸡不洗澡)-J
# 用于.xz格式,记:大J XiZao(大鸡洗澡)
解包tar包
tar -xf /路径/tar包名 [-C 解包路径]
- 选项:
-x
# 解包-f
# 指定压缩文档(file),必须放在所有选项的最后-P
# 解包到打包时使用-P
选项保留的绝对路径,若不使用则默认解包到当前路径-C
# 指定解包路径
查看tar包
tar -tf /路径
- 选项:
-t
# 查看tar包-f
# 指定压缩文档(file),必须放在所有选项的最后
ssh:远程连接
ssh [选项] [用户名@]远程主机 # 不写用户默认以当前登录的用户名登录
- 选项:
-X
# 远程登录主机调用远程主机的图形工具(Windows环境默认无法调用)-p
# 指定端口号
scp:远程传输
scp [-r] /本地文件 用户名@远程主机:/目标路径 # 本地到远程
scp [-r] 用户名@远程主机:/远程文件 /本地路径 # 远程到本地
- 选项:
-r
# 递归传输
配置时间同步服务
确认软件包是否安装
rpm -q chrony
修改配置文件
vim /etc/chrony.conf
修改时间同步服务器
pool 【2.rhel.pool.ntp.org】 iburst—>pool 【classroom.example.com】 iburst
重启服务,使配置生效
systemctl restart chronyd
检验
chronyc sources -v
配置tuned性能调优
检查是否安装
rpm -q tuned
检查服务是否处于启动活跃状态
systemctl is-active tuned
查看tuned建议
tuned-adm recommend
根据推荐切换模式
tuned-adm profile virtual-guest
查看当前活跃配置
tuned-adm active
关闭调优
tuned-adm off
查看tuned状态
tuned-adm active
周期性计划任务
编辑周期性计划任务
crontab -e -u 用户名
分 时 日 月 周 命令的绝对路径
- 数字:匹配单位范围
- *:匹配范围内任意时间
- ,:分割多个不连续的时间点
- -:指定连续时间范围
- /n:代表频率
查看周期性计划任务
crontab -l -u 用户名
软连接与硬链接:为了安全,一般使用软链接
软连接
特点
- 源文件删除,软链接失效
- 修改软链接,源文件也会修改;源文件修改,软链接也修改
- 可以在与源文件不同的分区上建立软连接
-
创建
ln -s /源文档 /软链接名
硬链接
特点
- 源文件删除,硬链接不会失效
- 修改硬链接,源文件也会修改;源文件修改,硬链接也修改
- 硬链接和源文件必须放在同个分区中
创建
ln /源文档 /硬链接名
yum源装软件包
yum是一种自动解决依赖关系的工具
配置yum源
备份原有repo仓库文件
mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
mv /etc/yum.repos.d/{*.repo,bak} # 等效于上面那条
编写配置文件
vim /etc/yum.repos.d/yum.repo
### 以下是文件内容 ###
[app] # 标识符
name=this is app repo # 仓库名
baseurl=file:///dvd/AppStream # yum源路径
enabled=1 # 是否启用仓库
gpgcheck=0 # 是否启用GPG签名
[base] # 标识符
name=this is base repo # 仓库名
baseurl=file:///dvd/BaseOS # yum源路径
enabled=1 # 是否启用仓库
gpgcheck=0 # 是否启用GPG签名
检验yum源
清空缓存
yum clean all
列出仓库报告
yum repolist
装软件包验证
yum -y install httpd
卸载软件包
yum remove httpd
autofs:实现一个来源于网络共享的目录只有在使用的时候才挂载,闲置时自动卸载
需求:现在有来自classroom上面通过NFS共享的本地用户user1的家目录,user1用户的目录在172.25.0.254:/rhel8/user1,通过autofs在本地把user1的家目录挂载到/home/rhel8/user1
安装软件包
yum -y install autofs
修改主配置文件
vim /etc/auto.master
### 最后一行加上 ###
/home/rhel8 /etc/auto.rule
用于容纳挂载目录的父目录 规则文件路径
创建规则文件,并写入规则
vim /etc/auto.rule
### 以下是文件内容 ###
user1 -rw 172.15.0.254:/rhel8/user1
启动服务并设置开机自启
systemctl enabled autofs --now
vim的高级使用技巧
命令模式
移动光标
方向键、Home键和End键
行间跳转
gg或1G跳转至第1行
G跳转到最后1行
10G跳转到第10行
复制粘贴
yy复制1行
3yy复制3行
p粘贴到光标之前
P粘贴到光标之后
剪切
dd剪切1行
3dd剪切3行
d^剪切到行首
d$剪切到行尾
删除
x
或Delete
查找关键字
/word,n向下搜索,N向上搜索
撤销
u
撤销最近的操作
Ctrl
+r
撤销撤销操作
命令模式进插入模式
C删除光标之后的字符,并进入插入模式
i跳到光标所在字符前进入插入模式
a跳到光标所在字符前进入插入模式
s删除光标所在字符并进入插入模式
o跳到最后一行并进入插入模式
末行模式
保存/退出文件
- :w保存当前文件
- q!放弃编辑并退出
- wq或:x保存并退出
字符串替换
- :s/old/new将当前行第一个old替换为new
- s/old/new/g将当前行所有old替换为new
- n,m s/old/new将n-m行的第一个old替换为new
- n,m s/old/new/g将n-m行所有的old替换为new
- % s/old/new/g将全文所有的old替换为new
开关参数控制
- :set nu打开行号显示
- set nonu关闭行号显示
- set ai打开自动缩进
- set noai关闭自动缩进
破解密码
第一步:重启
重启,进入引导界面后选择默认内核,按下E
键
第二步:修改内核启动参数并进入救援模式
跳至第三行(Linux开头的那行)末尾,加入两个参数rd.break console=tty0,Ctrl
+X
执行启动
第三步:重新挂载根目录
mount -o remount,rw / /sysroot
第四步:切换到挂载的目录
chroot /sysroot
第五步:修改密码
echo 123 | passwd root --stdin
第六步:对SElinux重新打标签
touch /.autorelabel
第七步:退出挂载的目录
exit
第八步:退出救援模式
exit
第九步:较长时间的等待
因系统重新打标签需要时间,根据电脑配置不同,会比正常开机时间要长,是正常现象,稍等片刻即可
系统服务管理
systemctl 子命令 服务名
常用子命令:
restart重启服务
start启动服务
enable设置开机自启
disable设置开机不自启
status查看服务状态
systemctl enable --now 服务名
设置开机自启并立刻启动服务(仅RHEL8支持)
systemctl status 服务名
两种颜色
绿色:服务启动成功,正常运行
红色:服务启动失败,服务未能正常启动
systemd目标:运行级别
graphical.target多用户模式,图形界面
multi-user.target多用户模式,文本界面
rescue.target单用户模式
emergency.target紧急shell模式
临时切换systemd目标
systemctl isolate graphical.target
systemctl isolate multi-user.target
systemctl isolate rescue.target
systemctl isolate emergency.target
查看systemd目标
systemctl get-default
修改默认的systemd的目标
systemctl set-default graphical.target
硬盘分区
查看硬盘
lsblk
查看分区列表
fdisk -l 设备名
为新磁盘分区
fdisk 设备名
创建主分区
进入fdisk后
N
选择新建分区
Enter
确定
P
分为主分区
1
选择1号分区
Enter
选择起始扇区
+1G选择终止扇区,为1G大小
W
保存退出
格式化
mkfs.xfs 分区设备名
格式化为xfs文件系统
blkid 分区设备名
显示分区信息,含有UUID和文件系统等信息
挂载
新建挂载点
mkdir 挂载点目录
临时挂载
mount 设备名 挂载点
启动时自动挂载
vim /etc/fstab
设备名 挂载点 文件系统 参数 备份标记 检测顺序
参数一般只有defaults,备份标记一般是0,检测顺序一般是0
检查fstab文件是否正确
mount 挂载点
或mount 设备名
查看是否挂载成功
df -Th
列出磁盘空间情况和挂载点
卸载
umount 设备名
或umount 挂载点
设备命名规则
设备命名规则
sdb1:第二块SCSI或者SATA接口磁盘的第一个分区
s: SCSI或者SATA接口
d: disk磁盘
b: 第二块
1: 磁盘上面的第一个分区
交换分区(swap分区):虚拟内存
添加分区
参照前文的方法分区
格式化成swap分区
mkswap 设备名
将分区格式化为swap分区
检查是否格式化成功
blkid 设备名
临时启动交换分区
swapon 设备名
检查是否启动成功
swapon -s
停用交换分区
swapoff 设备名
设置开机自动启动swap分区
vim /etc/fstab
设备名 swap swap defaults 0 0
检查fstab是否配置正确
swapon -a
开启所有swap分区
swapon -s
确认所有swap分区开启
LVM分区
物理的P(physical)
卷V(volume)
组G(group)
逻辑的L(logical)
创建LVM卷
先创建物理卷,然后创建卷组,最后从卷组创建逻辑卷。
创建物理卷
pvcreate 设备名
创建卷组
vgcreate 卷组名 要加入卷组的物理卷1 要加入卷组的物理卷2 ……
创建逻辑卷
lvcreate -L 逻辑卷大小 -n 逻辑卷名 卷组名
lvcreate -l PE个数 -n逻辑卷名 卷组名
格式化
mkfs.xfs 逻辑卷
挂载
略
扩展逻辑卷
卷组有空余
直接扩展逻辑卷
lvextend -L +50M 逻辑卷名
将逻辑卷增加50M大小
lvextend -L 50M 逻辑卷名
将逻辑卷扩展到50M大小
lvextend -l PE个数 逻辑卷名
将逻辑卷大小扩展到指定PE个数的大小
lvextend -l +PE个数 逻辑卷名
将逻辑卷大小增加指定PE个数的大小
lvextend -l +100%FREE 逻辑卷名(全路径)
将卷组所有剩余PE扩展给逻辑卷
刷新文件系统
若不刷新文件系统,在df -Th
下看不到可用空间。
resize2fs 逻辑卷名
ext文件系统使用
xfs_growfs 挂载点
xfs文件系统使用
卷组没空余空间
先扩展卷组
将物理卷加入到卷组
vgextend 卷组名 物理卷
按照卷组有空余操作
设置卷组PE大小
PE大小规则
- 必须是2的次幂
- 新的PE能被逻辑卷整除,同时能被卷组剩余空间整除
修改现有卷组PE大小
vgchange -s PE大小 卷组名
创建卷组时指定PE大小
vgcreate -s PE大小 卷组名 物理卷
配置Stratis
安装软件包
yum -y install stratis-cli stratisd
设置开机自启服务并立刻启动
systemctl enable --now stratisd
创建存储池
stratis pool create 存储池名 设备名
查看已有存储池
stratis pool list
为已有的存储池添加块设备
stratis pool add-data 存储池名 块设备名
查看存储池内的块设备
stratis blockdev list 存储池名
基于存储池建立文件系统
stratis filesystem create 存储池名 文件系统名
查看文件系统
stratis filesystem list
列出现有文件系统名
查查看文件系统类型
blkid 文件系统名
挂载文件系统
创建挂载点并设置开机自动挂载
mkdir 挂载点
创建挂载点
vim /etc/fstab
UUID="blkid里查到的UUID,要用双引号引起来" 挂载点 文件系统类型 defaults,x-systemd.requires=stratisd.service 0 0
x-systemd.requires=stratisd.service是要求在这个服务启动之后再尝试挂载,否则可能会导致系统启动失败。
创建及使用快照
stratis filesystem snapshot 存储池 文件系统名 快照名
创建快照
stratis filesystem list
列出所有快照
用快照恢复文件
mount 快照名 挂载点
将快照挂载到一个挂载点,从里面拷贝文件,还原文件
创建VDO卷
配置并检查yum源是否可用
yum clean all
yum repolist
安装软件包
yum -y install vdo kmod-kvdo
创建VDO卷,指定大小50GB
vdo create -n vdo1 --device /dev/sdb --vdoLogicalSize 50G
查看所有的VDO
vdo list
查看VDO状态
vdo status -n vdo1 | grep Dedu # Deduplication: enabled 开启去重
vdo status -n vdo1 | grep Com # Compression: enabled 开启压缩
启动/停止VDO
vdo start -n vdo1
vdo stop -n vdo1
格式化
mkfs.xfs /dev/mapper/vdo1
vdostats /dev/mapper/vdo1
挂载
创建挂载点
mkdir /vdo-test
设置开机自动挂载
blkid /dev/mapper/vdo1
# 得到UUID为bf9b6c29-15a3-427b-b6ca-03b1a4c55662
vim /etc/fstab
# 以下是文件内容
UUID="bf9b6c29-15a3-427b-b6ca-03b1a4c55662" /vdo-test xfs defaults,x-systemd.requires=vdo.service 0 0
测试VDO卷
创建测试文件
dd if=/dev/urandom of=/mnt/test1 bs=1M count=500 # 生成一个500M的随机文件
测试
终端一:
watch -n 1 vdostats --human-readable
终端二:
cp /mnt/test1 /vdo-test/file1
cp /mnt/test1 /vdo-test/file2
cp /mnt/test1 /vdo-test/file3
防火墙
预设安全区
- public:仅允许访问本机的ssh,dhcp,cockpit这3个服务及ping本机
- trusted:允许任何访问
- block:阻塞任何访问请求,明确拒绝
- drop:丢弃任何来访的数据包,直接丢弃
访问拦截匹配规则
- 查看预设安全区中是否有包含关于来源IP地址的规则
- 匹配默认区域
查看防火墙服务是否激活
systemctl is-active firewalld.service
查看和防火墙的默认区域
firewall-cmd --get-default-zone
永久修改防火墙的默认区域
firewall-cmd --set-default-zone=trusted # 修改默认防火墙区域为trusted
为区域添加可访问的服务
firewall-cmd --permanent --zone=public --add-service=snmp # 永久为public区域添加snmp服务的访问权限
firewall-cmd --zone=public --list-all # 查看public区域的状态信息
firewall-cmd --reload # 重载防火墙策略
为区域添加IP或网段
firewall-cmd --permanent --zone=block --add-source=10.1.1.1 # 将10.1.1.1添加到block区域
firewall-cmd --permanent --zone=block --add-source=10.1.1.0/8 # 将10.1.1.0/8添加到block区域
端口转发(映射)
firewall-cmd --permanent --zone=trusted --add-forward-port=port=80:proto=tcp:toport=8080 # 将trusted区域访问TCP协议80端口的流量全部转发到8080端口
SELinux(Security-Enhanced Linux)
SELinux的三种模式
- enforcing 强制模式:禁止触发SELinux的操作
- permissive 宽松模式:允许触发SELinux的操作,但会记录在日志中
- disalbed 禁用模式:关闭SELinux
临时切换SELinux模式(重启后恢复配置文件中的模式)
setenforce 1 # 强制模式
setenforce 0 # 宽松模式
永久切换SELinux模式(修改配置文件,重启生效)
vim /etc/sysconfig/selinux
# 修改以下行
SELINUX=permissive
SELinux安全上下文
SELiux布尔值
在开启SELinux的服务器上架设SMB服务器时,由于SELinux的限制,会遇到客户端无法读写文件的问题,此时需要启用samba_export_all_rw这个sebool。
getsebool -a | grep samba # 查询所有的sebool,过滤出samba相关的sebool
setsebool -P samba_export_all_rw on # 设置samba_export_all_rw为启用
SELinux白名单限制
在开启SELinux的服务器上架设Web服务器(httpd),并非监听默认端口时,由于SELinux的限制,httpd服务会无法启动,此时需要添加这个端口到SELinux的白名单中。
semanage port -l | grep http # 查询所有的端口上下文限制,过滤出http相关的上下文
semanage port -a -t http_port_t -p tcp 8909 # 设置http_port_t的上下文添加TCP协议8909端口
SELinux文件安全上下文
在开启SELinux的服务器上架设Web服务器(httpd),使用非默认目录作为网页文件的存放目录时,由于SELinux的限制,主页目录无法读取,无法展示主页目录到浏览器,此时需要修改这个目录的SELinux上下文。
ls -Zd /var/www/html/ # 查看/var/www/html的安全上下文
system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
chcon -R --reference=/var/www/html /test # 参照/var/www/html的安全上下文递归修改/test的安全上下文
发表回复