RHCE 9 - RH124
2024-07-19 17:59:02 0 举报
AI智能生成
红帽系统管理一
作者其他创作
大纲/内容
1. 红帽企业Linux 入门
什么是Linux
为什么应了解Linux
Linux 是IT 专业人士应了解的关键技术
Linux 的优点是什么
Linux 是开源软件
可以彻底了解程序或系统的工作方式
Linux 提供命令行接口(CLI),不仅访问便捷,而且具有强大的脚本化功能
Linux 是一种模块化操作系统,设计为可以轻松替换或删除组件
什么是开源软件
开源软件是任何人都可以使用、研究、修改和共享其源代码的软件
开源许可证的类型
公共版许可证,旨在鼓励保持代码开源
宽松式许可证,旨在最大限度地提供代码可重用性
开源软件由谁开发
志愿者和学术团体
组织(供应商)
什么是Linux 发行版
发行版是一种可安装的操作系统,由Linux 内核以及提供支持的用户程序和库构建而成。
红帽企业Linux 生态系统
红帽企业Linux (RHEL) 是红帽的商业化生产级Linux 发行版。红帽通过一个多阶段流程开发开源软件并将其集成到RHEL 中
红帽参与支持各个开源项目
红帽赞助开源项目并将它们集成到一个社区驱动型发行版Fedora 中
红帽使CentOS Stream 软件成为稳定版本,确保其为长期支持和标准化做好准备,并将其集成到企业就绪型发行版本RHEL 中
Fedora
是一个开发和发布免费、完整、基于Linux 的操作系统的社区项目
Extra Packages for Enterprise Linux
Fedora 项目特别兴趣小组(SIG) 构建并维护一个由社区支持的软件包存储库
CentOS Stream
是RHEL 的上游项目
红帽企业Linux
红帽企业Linux(RHEL) 是红帽提供的、受商业支持的生产就绪型Linux 发行版。
RHEL 使用基于订阅的支持模式,不收取开源软件许可证费用。
红帽支持订阅提供产品支持、维护、更新、安全补丁,以及对客户门户知识库、应用程序和红帽产品可下载版本的访问
小测验:红帽企业 Linux 入门
总结
2. 访问命令行
访问命令行
Bash Shell 介绍
shell提示符
$ 字符
普通用户
# 字符
Root 超级用户
Shell 基础知识
shell命令组成
命令
选项
参数
登陆本地系统
物理控制台
键盘和显示器与计算机连接
虚拟控制台
Ctrl+Alt+F1~F6
登陆远程系统
OpenSSH
用户身份
ssh remoteuser@remotehost
公钥身份
ssh -i mylab.pem remoteuser@remotehost
远程系统注销
exit
Ctrl+D
小测验:访问命令行
使用桌面访问命令行
GNOME桌面环境
Linux系统图形用户界面
指导练习:使用桌面访问命令行
使用Bash Shell执行命令
基本命令语法
命令、选项(通常以 - 或 -- 开头)、参数
通过空格隔开词语
键入多个命令
分号 ; 作为命令分隔符
编写简单命令
date
显示当前的日期和事件
date
Sun Feb 27 08:32:42 PM EST 2022
超级用户或特权用户可使用date设置系统时钟
加号+ 参数
date +%R
20:33
date +%x
02/27/2022
passwd
无参数
更改当前用户密码
超级用户或特权用户可修改其他用户密码
更改指定用户密码
file
显示文件类型
文本文件可以被识别
查看文件内容
cat
创建单个或多个文件
查看文件内容
cat /etc/passwd
cat file1 file2
串联不同文件内容
文件内容重定向到终端或文件
less
分页
向上 UpArrow键
向下 DownArrow键
q
退出分页
head & tail
显示文件10行
-n
指定不同行数
wc
命令可计算文件中行、字和字符的数量
-l
行数
-w
字数
-c
字符数
Tab补全(命令 & 文件名作为参数)
按一次
唯一后快速补全
按两次
不唯一时显示字符开头所有
显示命令所有选项
多行命令
反斜杠字符 \
按Enter后在下一行继续输入
显示命令历史记录
history
感叹号字符!
!+number
指定编号匹配的命令
!+string
最近指定字符开头的命令
UpArrow
上一命令
DownArrow
下一命令
移动光标
LeftArrow
RightArrow
Esc+. 或Alt+.
插入上一命令的最后一个单词
编辑命令行
Ctrl+A
跳到命令行的开头
Ctrl+E
跳到命令行的末尾
Ctrl+U
将光标处到命令行开头的内容清除
Ctrl+K
将光标处到命令行末尾的内容清除
Ctrl+LeftArrow
跳到命令行中前一字的开头
Ctrl+RightArrow
跳到命令行中下一字的末尾
Ctrl+R
在历史记录列表中搜索某一模式的命令
小测验:使用 Bash Shell 执行命令
开放研究实验:访问命令行
总结
3. 从命令行管理文件
描述Linux 文件系统层次结构概念
文件系统层次结构-树
/
根目录
/boot
启动过程所需的文件
/dev
供系统用于访问硬件的特殊设备文件
/etc
特定于系统的配置文件
/home
供普通用户存储个人数据和配置文件的主目录
/root
管理超级用户root的主目录
/run
自上一次系统启动以来启动的进程的运行时数据
/tmp
供临时文件使用的全局可写空间。
10填内未曾访问、更改或修改的文件将自动删除
/var/tmp也是临时目录,30天内
/usr
安装的软件、共享的库和只读程序数据
./usr/bin 用户命令
./usr/sbin 系统管理命令
./usr/local 本地自定义软件
/var
特定于系统的可变数据应在系统启动之间保持永久性。动态变为文件可以在/var下找到
如:数据库、缓存目录、日志文件、打印机后台处理文档和网站内容
小测试:描述 Linux 文件系统层次结构概念
通过名称指定文件
绝对路径
从根 / 目录开始
第一个字符是正斜杠 / 的路径名
当前工作目录和相对路径
用户登陆后,默认该用户的主目录/工作目录
第一个字符不是正斜杠 / 的路径名
浏览文件系统的路径
pwd
显示当前工作目录的完整路径名
ls
列出指定目录的目录内容
未指定目录,则列出当前工作目录的内容
-l
长列表
-a
包含隐藏文件的所有文件
-R
递归方式,包含左右子目录的内容
cd
更改当前工作目录
无参数
切换到用户的主目录
-
更改到用户在进入当前目录之前所处的目录
..
父目录
.
当前目录
可为当前位置是来源或目录参数的命令指定当前目录
touch
将文件的时间戳更新为当前的日期和时间,而不进行其他修改
如不存在文件名会导致创建该文件
特殊目录
一个圆点 .
当前目录
两个圆点 ..
父目录
开头为句点 . 的文件表示隐藏文件
小测验:通过名称指定文件
使用命令行工具管理文件
mkdir
创建一个或多个目录或之目录
-p
创建缺少的父目录-请谨慎使用
cp
复制文件
默认不复制目录,而会忽略
-r
复制目录及其内容
mv
将文件从一个位置移动到另一个位置
重命名文件
-V
将文件移动到另一个目录
mv -V 文件 目录
rm
删除文件
默认不会删除目录
-r 或 --recursive
删除目录及其内容
使用相对路径删除文件或目录之前,最后先使用pwd验证当前工作目录
-i
以交互方式提示确认后再删除
-f
强制删除而不提示用户进行确认
rmdir
删除空目录
rm -r可删除非空目录
指导练习:实验命令行工具管理文件
制作文件间的链接
ls -l查看文件是否有多个硬链接
ln
创建一个指向现有文件的硬链接
相同的链接数、访问权限、用户和组所有权、时间戳,以及文件内容
至少需要两个参数
现有文件的路径
以及要创建的硬链接路径
ls -i
确定两个文件是否被硬链接 - 索引节点编号
硬链接的局限性
只能将硬链接用于常规文件
无法创建指向目录或特殊文件的硬链接
两个文件位于同一文件系统
df 命令累出位于不同文件系统上的目录
创建符合链接(软链接)
ln -s
创建软链接
可以链接不同文件系统上
可以指向目录或特殊文件,而不仅限于常规文件
ls -l查看文件长列表的第一个字符是 l 而不是 - 就表示是软链接
悬空符号链接
原始文件删除,符合链接指向缺失
cd
可以更改符号链接为当前工作目录
-P 选项使用实际目录为当前工作目录
指导练习:制作文件间的链接
使用Shell扩展匹配文件名
主要扩展
大括号 {}
可以生成多个字符串
逗号分隔
可以互相嵌套
可以使用双点语法 ..
例如:{m..p}为{m n o p}
波形符
扩展至用户主目录路径
开头为斜杠 / 意外的字符串,会将该斜杠之前的字符串解译为用户名
如果找不到匹配用户名,将使用实际波形符号加上该字符串
变量
将文本替换为shell变量中存储的值
VARIABLENAME=value
美元符号$开头使用变量
放在大括号中使用变量
${VARIABLENAME}
命令替换
将文本替换为命令的输出
$(command)
路径名
帮助按模式匹配选择一个或多个文件
路径名扩展和模式匹配
*
由零个或更多字符组成的任何字符串
?
任何一个字符
[abc...]
括起的类(位于两个方括号之间)中的任何一个字符
[!abc...]
不再括起的类中任何一个字符
[^abc...]
不再括起的类中任何一个字符
[[:alpha:]]
任何字母字符
[[:lower:]]
任何小写字符
[[:upper:]]
任何大写字符
[[:alnum:]]
任何字母字符或数字
[[:punct:]]
除空格和字母数字外的任何可打印字符
[[:digit:]]
从0到9的任何单个数字
[[:space:]]
任何单个空格字符,可能包括制表符、换行符、回车符、换页符或空格
防止参数被扩展
反斜杠 \
转义字符
单引号或双引号
较长字符串
单引号将阻止所有
双引号则阻止大部分
美元符号$
反斜杠 \
反引号 '
感叹号 !
小测验:使用 Shell 扩展匹配文件名
开放研究实验:从命令行管理文件
总结
4. 在红帽企业Linux中获取帮助
阅读手册页
Linux 手册页介绍
man
页面存储在/usr/share/man目录的子目录中
man page查看中在主题后面附上了章节编号(用括号括起)
例如passwd(1)
man topic
man passwd 默认显示passwd(1)
man 5 passwd 会显示passwd(5)
常见章节
1
用户命令
可执行命令和shell程序
2
系统调用
从用户空间调用的内核例程
3
库函数
由程序库提供
4
特殊文件
列如设备文件
5
文件格式
用于许多配置文件和结构
6
游戏和屏保
(过去的趣味程序章节
7
惯例、标准和其他
协议、文件系统
8
系统管理和特权命令
维护任务
9
Linux 内核 API
内部内核调用
浏览和搜索 Man Page
Spacebar
向前(向下)滚动一屏
PageDown
向前(向下)滚动一屏
PageUp
向后(向上)滚动一屏
DownArrow
向前(向下)滚动一行
UpArrow
向后(向上)滚动一行
D
向前(向下)滚动半屏
U
向后(向上)滚动半屏
/string
在 man page 中向前(向下)搜索string
N
在 man page 中重复之前的向前(向下)搜索
Shift+N
在 man page 中重复之前的向后(向上)搜索
G
转到 man page 的开头
Shift+G
转到 man page 的末尾
Q
退出 man,并返回到命令shell提示符
可以使用正则表达式搜索
regex(7) man 主题中找到相关正则表达式和语法
阅读 Man Page : 常见标题
NAME
主题名称。通常是命令或文件名。简短的描述
SYNOPSIS
命令语法的概要
DESCRIPTION
提供对主题的基本理解的描述
OPTIONS
命令执行选项的说明
EXAMPLES
有关如何使用命令、功能或文件的示例
FILES
与 man page 相关的文件和目录的列表
SEEALSO
相关的信息,通常是其他 man page 的主题
BUGS
软件中的已知错误
AUTHOR
有关参与撰写该主题的人员的信息
根据关键字搜索 man page
man -k
标题和描述中搜索
man -K(大写)
全文页面中搜索
Q 退出第一页,显示下一页
指导练习:阅读手册页
开放研究实验:在红帽企业 Linux 中获取帮助
总结
5. 创建、查看和编辑文本文件
将输出重定向到文件或程序
>file
重定向stdout以覆盖文件
>>file
重定向stdout以附加到文件
2>file
重定向stderr以覆盖文件
2>/dev/null
将stderr错误消息重定向到 /dev/null,从而丢弃他们
>file 2>&1
&>file
&>file
重定向stdout和 stderr 以覆盖同一个文件
>>file 2>&1
&>>file
&>>file
重定向stdout 和 stderr 以附加到同一文件
构建管道
管道是一个或多个命令的序列,用竖线字符 | 分隔
不能使用合并重定向操作符(&>和&>>)使用管道 |
管道、重定向和附加到文件
重定向与管道组合,管道的中间使用输出重定向到文件,不是下一个命令
使用tee 命令的管道示例
输出重定向到文件,并且将它传递到下一个命令
ls -l | tee /empsaved-output | less
管道末尾使用 tee ,则终端将显示管道中命令的输出,同时将其保存到文件
ls -t | head -n 10 | tee /emp/ten-last-changed-files
tee -a 选项
将内容追加到文件
小测验:将输出重定向到文件或程序
从Shell 提示符编辑文本文件
vim 入门
通过vim-minimal 软件包,具有核心供的vi 编辑器
vi filename
使用 vim-enhanced 软件包,完整功能
vim filename
vim 操作模式
命令模式
第一打开vim以命令模式启动,可用于导航、剪切和粘贴,以及其他文件修改
扩展命令模式
按 : 键启动扩展命令模式,可以执行的任何包括写入文件(进行保存),以及退出vim 编辑器等
编辑模式
按 i 键进入插入模式,其中输入的所有文本将为文件内容。
按 Esc 键返回到命令模式
按 Esc 键返回到命令模式
可视模式
按 v 键进入可视模式,可在其中选择多个字符进行文本操作。使用Shift+v 选择多行,使用 Ctrl+V 可选择文本块。
按 v 、Shift+V 或 Ctrl+V 键退出可视模式
按 v 、Shift+V 或 Ctrl+V 键退出可视模式
不确定所用模式
可以按几次Esc 来返回命令模式
最低程度的基本 vim 工作流
u
可撤销最近的编辑
x
可删除单个字符
:w
可写入(保存)文件,并保留在命令模式中以进行更多编辑
:wq
可写入(保存)文件并退出vim
:q!
可退出 vim,同时放弃上次写入以来进行的所有更改
重排现有文本
使用 y 和 p 命令字符执行拖拉和放置(复制和粘贴)
将光标定位到选择的第一个字符
然后进入可视模式
使用箭头键扩展可视选择
按 y 将所选内容拖拉到内存中
将光标定位到新位置上,然后按 p 将所选内容放置到光标处
vim 中的可视模式
可用于突出显示和操作不同行和列中的文本
字符模式 v
屏幕底部会出现VISUAL
行模式 Shift+v
屏幕底部会出现VISUAL LINE
块模式 Ctrl+v
屏幕底部会出现VISUAL BLOCK
vim 配置文件
/etc/vimrc
~/.vimrc
指导练习:从 Shell 提示符编辑文本文件
更改 Shell 环境
为变量分配值
VARIABLENAME=value
变量名称可以包含大写或小写字母、数字和下划线字符 _
set | less 分页查看所有 shell 变量
通常shell 变量全部大写字符。自定义变量,不妨使用小写字符组成的名称来防止命名冲突
使用变量扩展检索值
使用变量扩展,在变量名称前面加上美元符号 $
可以使用花括号 {}
COUNT=40
${COUNT}x,结果是40x
${COUNT}x,结果是40x
使用Shell 变量配置 Bash
一些shell 变量在Bash 启动时设置。可以修改它们来调整shell 的行为
例如,HISTTIMEFORMAT="%F %T" 定义历史记录中每个命令的时间戳格式
使用环境变量配置程序
如果 shell 变量不是环境变量,则只有 shell 可以使用他
如果 shell 变量时环境变量,则 shell 和从该 shell 运行的任何程序都可以使用该变量
将变量标记为使用 export
EDITOR=vim
export EDITOR
export EDITOR
export EDITOR=vim
HOME变量
设置为用户目录的文件名
LANG变量
设定的时区域设置编码
export LANG=fr_ER.UTF-8 使用法语 UTF-8 Unicode编码
PATH变量
包含一个含有程序的目录的冒号分隔列表
env
列出特定shell 的所有环境变量
设置默认文本编辑器
EDITOR环境变量指定要用于命令行程序的默认文本编辑器(默认 vi 或 vim)
export EDITOR=nano
自动设置变量
编辑Bash 启动脚本
交互式
用户在shell 中输入命令
登陆shell
/etc/profile 和 ~/.bash_profile 文件配置Bash 环境
/etc/profile 和 ~/.bash_profile 文件页分别提供/etc/profile 和 ~/.bashrc
非登陆shell
/etc/profile 和 ~/.bashrc 文件配置 Bash 环境
/etc/profile 和 ~/.bash_profile 文件使用于整个系统
~/.bash_profile 和 ~/.bashrc 文件则是特定用户
创建所有交互式 shell 使用的变量
编辑 ~/.bashrc 文件
用户登录后仅应用一次变量
可在~/.bash_profile 文件中定义
非交互式
后台运行且无需用户干预,例如脚本
调用BASH_ENV 变量定义的任何文件。默认情况不定义此变量
Bash 别名
alisas
alias hello='echo "Hello, this is a log string."'
hello
显示:Hello, this is a log string.
hello
显示:Hello, this is a log string.
取消设置和取消导出变量与别名
unset
取消设置和取消导出变量,unset file1
export -n
取消导出变量,不取消设置
unalias
取消设置别名
指导练习:更改 Shell 环境
开放研究实验:创建、查看和编辑文本文件
总结
6. 管理本地用户和组
描述用户和组的概念
用户
超级用户
root,UID为0
系统用户
服务进程使用,无法以交互方式登录
普通用户
用于处理日常工作账户
id
显示有关当前登录用户的信息
用户作为参数,可查看指定用户信息
ls -l
查看文件所有者
第三列显示用户名
ls -ld
查看目录的所有者
第三列显示用户名
ps
查看进程信息
-a 选项查看与某一终端相关的所有进程
-u 查看与进程关联的用户
第一列显示用户名
操作系统内部利用UID 来跟踪用户
/etc/passwd 文件存储有关本地用的信息
cat /etc/paswd
代码块的每个部分用冒分隔
user01:x:1000:1000:User One:/home/user01:/bin/bash
user01
此用户的用户名
x
用户的加密密码历来存储在这里,这现在是个占位符
1000
此用户账户的UID 编号
1000
此用户账户的主要组的GID 编号
User One
此用户的简短注释、描述或真实姓名
/home/user01
用户的主目录
/bin/bash
此用户的默认shell 程序
组
/ect/group
存储有关本地组的信息
cat /ect/group
冒号分隔
group01:x:10000:user01,user02,user03
group01
此组的名称
x
以前的组密码字段,现在是一个占位符
10000
此组的GID 编号
user01,user02,user03
属于此组成员的用户列表,作为一个补充组
主要组和补充组
每个用户有且只有一个主要组
创建普通用户时,会创建一个与用户同名的组 - 主要组
该用户时这个用户私有组的唯一成员
id
可以显示用户的组成员资格
小测验:描述用户和组概念
获取超级用户访问权限
sudo
授予其他用户超级用户访问权限
su
切换用户账户
普通用户账户运行 su 命令并将另一用户账户用作参数+提供账户的密码
root 用户身份运行su 无需输入用户密码
su 或 su -
切换到 root
su 将启动非登录 shell
使用原始用户的环境设置
su - 会启动登录 shell
会将 shell 环境设置为如果以该用户身份重新登陆一样
通过sudo 运行命令
su 、su - 和 sudo 区别
sudo 默认将所有执行的命令记录到 /var/log/secure 中
sudo配置不允许,则bash 会阻止该命令,并记录厂商,并且向 root 用户发送一封电子邮件
wheel组
所有成员都可以使用自己的密码通过sudo 以任何用户身份运行命令,包括 root 在内
在红帽企业Linux 7 和更高版本中
通过sudo 获取交互式 root shell
sudo -i
将切换到root 账户并运行该用的默认shell (通常为bash)及关联的交互式登陆脚本
sudo -s
没有交互式脚本的情况下运行shell
配置 sudo
/etc/sudoers
文件是sudo 命令的主要配置文件
visudo 命令进行编辑
会验证该文件,确保没有语法错误
wheel 组成员启用 sudo 访问权限
%wheel ALL=(ALL:ALL) ALL
%wheel 字符串是规则所应用到的用户或组。词语wheel 前的 % 符号指定一个组
ALL=(ALL:ALL)
指定在具有此文件的任何主机上(第一个 ALL)
wheel 组中的用户可以在系统上以任何其他用户(第二个 ALL)和任何其他组(第三个 ALL)运行命令
ALL
指定wheel 组中的用户可以运行任何命令
还包含/etc/sudoers.d 目录中所有文件的内容
启用或禁用sudo 访问权限
将文件复制到目录中或中目录中删除文件
举例
为user01 用户启用完整的 sudo 权限
/etc/sudoer.d/user01
user01 ALL=(ALL) ALL
为group01 组启用完整的 sudo 权限
/etc/sudoer.d/group01
%group01 ALL=(ALL) ALL
要使games 组中的用户能够以operator 用户身份运行 id 命令
/etc/sudoers.d/games 文件
%games ALL=(operator) /bin/id
允许用户通过使用NOPASSWD: ALL 命令在不输入密码的前提下以其他身份允许命令
ansible ALL=(ALL) NOPASSWD: ALL
指导练习:获取超级用户访问权限
管理本地用户账户
从命令创建用户
useradd username
尚未设置有效密码,不能登陆
useradd --help
将显示可用于覆盖默认设置的基本选项
/etc/login.defs 文件设置用户账户的一些默认选项
如有效UID 编号的范围
默认密码过期规则
此文件中的值仅影响新创建的用户账户
更改此文件对现有用户毫无影响
在Linux 9 中,useradd 命令为新用户分配第一个大于或等于1000的可用 UID,除非您通过 -u 选项进行明确指定
从命令行修改现有的用户
usermond --help
显示用于修改账户的基本选项
-a, --append
与 -G 选项以前使用将补充组添加到用户当前的组成员集合中,而不是将补充组集合替换为新的集合
-c, --comment COMMENT
将 COMMENT 文本添加到注释字段
-d, --home HOME_DIR
为用户账户指定一个主目录
-g, --gid GROUP
为用户账户指定主要组
-G, --groups GROUPS
为用户账户指定补充组的逗号分隔列表
-L, --lock
锁定用户账户
-m, --move-home
将用户的主目录移到新的位置。您必须将它与 -d 选项搭配使用
-s, --shell SHELL
为用户账户指定特定的登陆shell
-U, --unlock
解锁用户账户
从命令行删除用户
userdel username
从/etc/passwd 中删除username 用户的详细信息,但用户的主目录保持不变
创建用户分配已删除用户的UID,则新账户将拥有这些文件
userdel -r username
从/etc/passwd 中删除用户,同时删除用的主目录
从命令行设置密码
passwd username
可为username 用户设置初始密码,或更改其现有密码
UID 范围
UID 0
超级用户(root)账户UID
UID 1-200
静态分配给系统进程的系统账户UID
UID 201-999
分配给不拥有此系统上文件的系统进程的UID。需要非特权UID 的软件将从这个可用池中动态分配UID
UID 1000+
分配给普通非特权用户的UID 范围
指导练习:管理本地用户账户
管理本地组账户
从命令行创建组
groupadd
不带选项,下一个可用GID
-g
指定GID,创建组 groupadd -g 10000 group01
-r
创建系统组
从命令行修改现有的组
groupmod
-n
指定组的新名称
-g
指定新的GID
从命令行删除组
groupdel
从命令更改组成员资格
usermod
-g
更改用户的主要组
-aG
将用户添加到某一补充组
-a 选项可启用附加模式
不带-a 选项,命令会从当前未包含在-G 选项列表中的任何补充组删除该用户
比较主要组和补充组成员资格
主要组是在/etc/passwd文件中查看。一个用户,一次只能属于一个主要组
补充组是为用户配置的国外组,在/etc/group 文件中查看。可属于多个组
临时更改您的主要组
newgrp
只能从您所属的补充组中选择
注销重新登陆,恢复默认主要组
指导练习:管理本地组账户
管理用户密码
影子密码和密码策略
加密后的密码移至/etc/shadow
cat /etc/shadow
user03:$6$CSsXsd3rwghsdfarf:17933:0:99999:7:2:18113
user03:$6$CSsXsd3rwghsdfarf:17933:0:99999:7:2:18113
user03
用户账户的名称
$6$CSsXsd3rwghsdfarf
用户的加密密码
17933
上次更改密码时间距离纪元(UTC 1970-01-01)的天数
0
自上次更改密码以来到用户可再次更改密码之前必须经过的最短天数
99999
在密码过期之前不进行密码更改的最长天数,空字段表示密码永不过期
7
在用户密码过期前多少天警告用户
2
自密码过期之日起,在账户自动锁定之前能够无活动的天数
18113
密码到期之日距离纪元的天数。空字段表示密码永不过期
最后一个字段通常为空,预留给未来使用
加密密码的格式
由美元$ 字符分隔
$6$CScXcYG1L/4ZfHr/$2W6evvJahUfzfHpc9X.45Jc6H30E
6
RHEL 9默认算法
6 表示SHA-512 哈希
1 表示 MD5
5 则表示 SHA-256
CScXcYG1L/4ZfHr/
用于加密密码的 salt;最初是随机选择
2W6evvJahUfzfHpc9X.45Jc6H30E
用密码的加密后哈希;将salt 和未加密密码组合并加密,生成密码哈希
配置密码期限
chage
调整密码期限策略(change age)
change -m 0 -M 90 -W 7 -I 14 sysadmin05(用户)
-m
最短期限
-M
最长期限
-W
警告期
-I
不活动期
设置即日起30天到期
date +%F
使用date 获取当前日期
date -d "+30 days" +%F
使用date 获取即日起30天后的日期
chage -E $(date -d "+30 days" +%F) cloudadmin10
使用-E 选项更改cloudadmin10用户的到期日期
chage -l cloudadmin10 | grep "Account expires"
使用-l 选项来显示cloudamin10用户的密码期限策略
下次用户登录时,系统会提示该用户更改密码
change -d 0 cloudadmin10
在/etc/login.defs 文件中更改默认密码期限配置
PASS_MAX_DAYS
最长期限
PASS_MIN_DAYS
最短期限
PASS_WARN_AGE
默认警告期
影响更改后创建的用户
现有用户继续使用旧密码期限
限制访问
usermod
修改用户的账户到期日期
-L
选项锁定用户账户,并且该用户无法登录系统
usermod -L -e 2022-08-14 cloudadmin10
距离1970-01-01天数
YYYY-MM-DD 格式
-U
重新启用账户
非登录shell
不打算以交互方式登录系统的用户账户
/sbin/nologin
usermod -s /sbin/nologin newapp
指导练习:管理用户密码
开放研究实验:管理本地用户和组
总结
7. 控制对文件的访问
解释Linux 文件系统权限
Linux 文件系统权限
最具体的权限具有优先权
用户权限覆盖组的权限
r
读取,可以读取文件内容
可以列出目录的内容(文件名)
w
写入,可以更改文件内容
可以创建或删除目录中的任一文件
x
执行,可以作为命令执行文件
目录可以成为当前工作目录
查看文件和目录的权限及所有权
ls -l
显示有关权限和所有权
ls -d
限制有关目录本身(而非其内容)
长列表的第一个字符表示文件类型
-
常规文件
d
是目录
l
符号链接
c
字符设备文件
b
块设备文件
p
命令管道文件
s
本地套接字文件
接下来九个字符代表文件权限。三个字符一组
第一组是文件所有者的权限
第二组是文件的组所有者
最后一组则是所有其他(全局)用户
rwx读取、写入、执行,- 代表没有权限
第二列
链接数
所有者
组所有者
小测验:解释 Linux 文件系统权限
从命令行管理文件系统权限
chmod
更改文件和目录的权限。“更改模式”
通过符号法更改权限
chmod Who/What/Which file|directory
Who
用户的类。不提供用户类,则chmod 将使用all 组作为默认值
u
user
文件所有者
g
group
文件所属组的成员
o
other
即不是文件所有者也不是文件所属组成员的用户
a
all
所有前面三组
What
修改Which 的操作符
+
add
向文件添加权限
-
remove
从文件删除权限
=
set exactly
精确十二猴子所提供的文件权限
Which
模式,指定文件或目录的权限
r
read
文件的读取权限。目录的列出权限
w
write
文件或目录的写入权限
x
execute
文件的执行权限。允许进入目录,以及访问该目录中的文件和之目录
X
special execute
目录的执行权限,或者文件的执行权限(如果该文件具有至少一个执行粘滞位)
-R
递归方式对整个目录树中的文件设置权限
-X
对目录设置执行(搜索)权限
覆盖文件设置的任何执行权限
通过八进制法更改权限
chmod ### file|directory
每个#数字代表访问级别,从左到右为:用户、组和其他
0
没有权限
+4
读取
+2
写入
+1
执行
更改文件和目录的用户或组所有权
只有root 用户能够更改拥有文件的用户
chown student app.conf
将文件app.conf 的所有权授予student 用户
chown -R student Pictures
使用-R 选项递归更改整个目录树的所有权。
将Pictures目录及其中所有文件和子目录的所有权授予给student 用户
将Pictures目录及其中所有文件和子目录的所有权授予给student 用户
chown :admins Pictures
更改文件的组所有权,组名称前加冒号:
使用chgrp 只能更改组所有权,不需要加冒号:
chown visitor:guests Pictures
同时过更改所有者和组,使用owner:group 语法
指导练习:从命令行管理文件系统权限
管理默认权限和文件访问
特殊权限
u+s (suid)
以拥有文件的用户身份,而不是以运行文件的用户身份执行文件
目录:无影响
g+s (sgid)
以拥有文件的组身份执行文件
目录中创建的文件的组所有者与目录的组所有者相匹配
o+t (sticky)
文件:无影响
对目录具有写入访问权限的用户仅可以删除其所拥有的文件,而无法删除或强制保存到其他用户所拥有的文件
-rwsr-xr-x. 1 root root 35504 Jul 16 2010 /usr/bin/passwd
s
设置了setuid权限
此处通常是x 字符(所有者执行权限)
S
所有者不具有执行权限
-rwx--s--x. 1 root slocate 47128 Aug 12 17:17 /usr/bin/locat
s
设置了setgid权限
此处通常是x 字符(组执行权限)
S
组不具有执行权限
针对目录的粘滞位将文件删除设置特殊限制。
只有文件的所有者(及root 用户)才能删除该目录中的文件
drwxrwxrwt. 39 root root 4096 Feb 8 20:52 /tmp
t
设置了粘滞权限
此处通常是x 字符(其他人执行权限)
T
其他人不具有执行权限
符号
setuie=u+s; setuid=g+s; 粘滞=o+t
chmod g+s example
在example 目录添加setgid 位
chmod u-s example
删除example 目录setuid 位
八进制
在添加的第三个前序位;setuid=4; setgid=2; 粘滞=1
chmod 2770 example
对example 目录设置setgid 位
chmod 0770 example
对example 目录删除setgid 位
默认文件权限
创建常规文件
初始八进制权限为0666(-rw-rw-rw-)
创建目录
初始八进制权限为0777(drwxrwxrwx)
umask
进一步限制文件初始权限
可以清除有进程创建的新文件和目录的权限
如果在umask 中设置了一个位,则新文件中的对应的权限将被清除
umask 0002 可清除其他用的写入位
前导零表示特殊的用户和组权限未被清除
umask 0077 清除新创建文件的所有组和其他权限
不带参数
将显示shell 的umask 当前值
使用八进制参数,可以省略前导零
例如:umask 077 与 umask 0077 相同
用户的系统默认umask 值
在/etc/login.defs 和/etc/bashrc 文件中定义
用户可以在主目录的 .bash_profile 或 .bashrc 文件中覆盖系统默认值
umask 应用程序对权限的影响
umask 值设置为0
其他的文件权限将从读取该位读取和写入
其他的目录权限将读取和执行改为读取、写入和执行
umask 值设置为007
屏蔽其他的所有文件和目录的权限
umask 为027
可确保用户对新文件具有读写权限,组具有读写权限
组对新目录具有读取和执行权限
而其他对象则没有任何权限
更改默认权限
Linux 9中,/etc/login.defs 文件为用户设置默认的umask
默认值为0022
root 用户可以通过在/etc/profile.d/ 目录中添加 local-umask.sh shell启动脚本来更改交互式非登录shell 的默认umask
shell 的当前 umask 将一直适用,注销shell 并重新登陆,或者您可以使用umask 命令手动更改当前umask
指导练习:管理默认权限和文件访问
开放研究实验:控制对文件的访问
总结
8. 监控和管理Linux 进程
进程状态和生命周期
进程定义
进程是已启动的可执行程序的运行中实例
PPID
父进程
PID
进程ID
systemd
第一个系统进程
所有进程都是第一个系统进程的后代
描述进程状态
运行中 Running
R
TASK_RUNNING:进程正在CPU 上执行,或者正在等待运行。
处于运行中(或可运行)状态时,进程可能可以正在执行用户例程或内核例程(系统调用),或者已排队就绪
处于运行中(或可运行)状态时,进程可能可以正在执行用户例程或内核例程(系统调用),或者已排队就绪
睡眠 Sleeping
S
TASK_INTERRUPTIBLE:进程正在等待某一条件:硬件请求、系统资源访问或信号。
当事件或信号满足该条件时,该进程将返回到运行中
当事件或信号满足该条件时,该进程将返回到运行中
D
TASK_UNINTERRUPTIBLE:此进程也在睡眠,但与S 状态不同,不会响应信号。
仅在进程中断可能会导致意外设备状态的情况下使用。
仅在进程中断可能会导致意外设备状态的情况下使用。
K
TASK_KILLABLE:与不可中断的D 状态相同,但有所修改,允许等待中的任务响应要被中止(彻底退出)的信号。
实用程序通常将可终止的进程显示为D 状态。
实用程序通常将可终止的进程显示为D 状态。
I
TASK_REPORT_IDLE:D 状态的一个子集。在计算负载平均值时,内核不会统计这些进程。用于内核线程。
设置了TASK_UNITERRUPTIBLE 和TASK_NOLOAD 标志。类似于TASK_KILLABLE,也是D 状态的一个子集。
它接受致命信号。
设置了TASK_UNITERRUPTIBLE 和TASK_NOLOAD 标志。类似于TASK_KILLABLE,也是D 状态的一个子集。
它接受致命信号。
已停止
T
TASK_STOPPED:进程被停止(暂停),通常时通过用户或者其他进程发出的信号。
进程可以通过另一个信号返回到运行中状态,继续执行(恢复)。
进程可以通过另一个信号返回到运行中状态,继续执行(恢复)。
T
TASK_TRACED:正在被调试的进程也会临时停止,并且共享同一个T 状态标志
僵停
Z
EXIT_ZOMBIE:子进程在退出时向父进程发出信号。除进程身份(PID)之外的所有资源都已释放。
X
EXIT_DEAD:当父进程清理(获取)剩余的子进程结构时,进程现在已彻底释放。
此状态无法在进程列出实用程序中看到
此状态无法在进程列出实用程序中看到
进程状态的重要性
在对系统进程故障排除时,了解内核如何与进程通信以及进程如何互相通信非常重要
系统为每个新进程分配一个状态
top 命令的S 列或ps 的STAT 列显示每一个进程的状态
在单CPU 系统上,一次只能运行一个进程
您可以看到多个状态为R 的进程,并非所有进程都在连续运行,其中一些处于等待状态
列出进程
ps
用于列出当前进程的详细信息
用户识别符(UID),它确定进程的特权
唯一进程识别符(PID)
已用CPU 量和实际时间
分配的内存量
进程stdout 位置,称为控制终端
当前的进程状态
aux
显示包含无控制终端的进程在内的所有进程
lax
长列表提供更详细的信息,并且通过避免查询用户名可用加快显示
-ef
UNIX 语法,显示所有进程
不带选项
会选择具有与当前用户相同的有效用户ID (EUID) 并与运行命令所处同一终端关联的所有进程
僵停进程使用exiting 或defunct 标签列出
僵停进程使用exiting 或defunct 标签列出
--forest
以树形格式显示进程,从而查看父进程和子进程之间的关系
-O 或 --sort
对输出进行排序
默认输出按进程ID 编号排序
但内核重复使用了进程ID,输出中似乎使用了时间顺序
小测验:进程状态和生命周期
控制作业
描述作业和会话
借助作业控制Shell 功能,单个shell 实例可用运行和管理多个命令
一次只能有一个作业读取输入和键盘的信号,属于该作业的进程时控制终端前台进程
该控制终端的后台进程是与该终端相关联的任何其他作业
一个作业仅在属于其控制终端的一个会话中
ps 命令在TTY 列中显示控制终端的设备名称
某些进程有系统启动,这些进程不是作业的成员,并且无法转至前台。ps 命令在TTY 列显示一个问号?
在后台运行作业
&
任何命令或管道都可用在后台启动,在命令上附加一个& 符号即可
Bash shell 显示作业编号(特定于会话的唯一编号)和新建子进程的PID
[1] 5947
包含竖线(|)的命令发送到后台,将显示管道中最后一个命令的PID
jobs
显示shell 会话的作业列表
fg
将后台作业至于前台
使用(%jobNumber)格式将进程指定到前台
若要将前台进程发送到后台,请先在终端中按键盘生成的暂停请求(Ctrl+z)。该作业将被至于后台并暂停
ps j
显示与作业相关的信息。查找进程和会话信息
PID
是进程的唯一进程ID
PPID
是此进程的父进程(即启动(分叉)此进程的进程)的PID
PGID
是进程组首进程的PID,通常是作业管道中的第一个进程
SID
是会话首进程的PID,对于作业而言,通常是增长其控制终端上运行的交互shell
bg
bg命令及作业ID 来启动暂定的进程
bg %1
指导练习:控制作业
中止进程
使用信号控制进程
1
HUP
Hangup:报告终端控制进程的终止。也请求进程重新初始化(重新加载配置)而不终止
2
INT
Keyboard interupt:导致程序终止。可以被拦截或处理。通常按INTR(中断)键序列(Ctrl+c)发送
3
QUIT
Keyboard quit:与SIGINT相似;在终止时添加进程转储。通常按QUIT键序列(Ctrl+\)发送
9
KILL
Kill, unblockable:导致立即终止程序。无法被拦截、忽略或处理;总是致命的
15默认
TERM
Terminate:导致程序终止。和SIGKILL 不同,可以被拦截、忽略和处理。要求程序终止的“干净”方式;它允许程序完成基本操作和自我清理后在终止
18
CONT
Continue:发送至进程使其恢复(若已停止)。无法被拦截。即使被处理,也始终恢复进程。
19
STOP
Stop,unblockable:暂停进程。无法被拦截和处理
20
TSTP
Keyboard stop:和SIGSTOP不同,可以被拦截、忽略或处理。通常按暂停键序列(Ctrl+z)发送
通过显式请求发送信号
前台进程发送信号
暂停 Ctrl+z
终止 Ctrl+c
核心转储 Ctrl+\
后台进程发送信号
通过名称(-HUP 或 -SIGHUP)或 编号 (相对的 -l 选项)类指定信号
用户可以中止自己的进程
root特权才能终止由其他人拥有的进程
kill
控制特定进程
pkill
向一个或多个符号选择条件的进程发送信号
选择条件可以是命令名称、特定用户拥有的进程,或所有系统范围进程
-t
将进程与特定终端ID 匹配
-SIGKILL
终止所有进程,包含会话首进程 bash
pgrep
来确定要中止的PID 编号
-l
列出进程的名称和ID
-u
指定拥有进程的用户的ID
w
确定会话的控制终端
然后仅中止引用同一终端ID 的进程
-u
指定拥有进程的用户的ID
pstree
查看系统或单个用的进程数
-p
pstree -p usersname
向多个进程发送信号
killall
根据命令名称向多个进程发送信号
killall control
终止后台作业
kill 命令指定作业编号
jobs 查找要终止的进程的作业编号
kill 终止特定的作业
在作业编号上添加前缀百分号 %
kill -SIGTERM %1
以管理员身份注销用户
使用 w 命令列出用户登陆和当前运行的进程。记录TTY 和FROM 列
TTY
pts/N
说明这是一个与图形终端窗口或远程登录会话相关联的伪终端
ttyN
说明用户位于一个系统控制台、替代控制台或其他之间连接的终端设备上
JCPU
当前作业占用的CPU资源
PCPU
当前的前台进程CPU 占用情况
指导练习:中止进程
监控进程活动
描述负载平均值
内核会每五秒钟收集一次当前的负载数
通过汇总,得到1分钟、5分钟、15分钟内的指标移动平均值
负载平均值计算
CPU 上准备运行的进程
等待磁盘或网络 I/O 完成的进程数
解读负载平均值
uptime
显示当前负载平均值的一种方法
显示当前时间、计算机启动时长那个、运行的用户会话数以及当前的负载平均值
lscpu
确定系统上存在的CPU 数
负载平均值除以系统中的逻辑CPU 数
小于1 表示资源利用率适当,等待时间短
高于1 表示资源饱和,而且由一些处理延迟
实时进程监控
top
显示系统进程的动态视图
进程ID (PID)
进程所有者用户名(USER)
虚拟内存(VIRT)是进程正常使用的所有内存,包括常驻集合、共享库,以及任何映射或交换的内存页。(在ps 中标为VSZ)
常驻内存(RES)是进程所用的物理内存,包括任何驻留的共享对象。(在ps 中标为RSS)
进程状态(S)
-D
不可中断睡眠
-R
运作中或可运行
-S
睡眠中
-T
已停止或已跟踪
-Z
僵停
CPU 时间(TIME)是进程启动以来总的处理时间。可以切换为包含所有过去子进程的累计时间
进程的命令名称(COMMAND)
top 基本击键操作
? 或 h
交换式击键操作的帮助
l、t、m
切换到负载、线程和内存标题行
1
标题中切换显示单独CPU 信息或所有CPU 的汇总
s
更改(屏幕)刷新频率,以带小数的秒数表示(如 0.5、1、5)
b
切换反色突出显示Running 进程;默认为仅粗体
Shift+b
在显示中使用粗体,用于标题以及运行中的进程
Shift+h
切换线程;显示进程摘要或单独线程
u、Shift+u
过滤任何用户名称(有效、真实)
Shift+m
按照内存使用率,以降序方式对进程列表排序
Shift+p
按照处理使用率,以降序方式对进程列表排序
k
中止进程。若由提示,输入PID,再输入signal
r
调整进程的nice 值。输入PID,再输入nice_value
Shift+w
写入(保存)当前的显示配置,以便在下一次重新启动top 时使用
q
退出
f
通过启用或禁用字段的方式来管理列。也可以为top 设置排序字段
ps
静态
指导练习:监控进程活动
开放研究实验:监控和管理 Linux 进程
总结
9. 控制服务和守护进程
识别自动启动的系统进程
Systemd 守护进程
第一个启动进程(PID 1)
并行化功能(同时启动多个服务),它可提高系统的启动速度
服务单元
一个抽象概念,用于定义系统知道如果管理的对象
单元通过称为单元文件的配置文件表示
单元具有名称和单元类型
名称为单元提供唯一标识
通过单元类型,可以将单元与其他类似的单元类型分组到一起
systemd 守护进程使用单元来管理不同类型的对象
服务单元具有 .service 扩展名,代表系统服务
套接字单元具有 .socket 扩展名,代表systemd 应监控的进程间通信(IPC)套接字
路径单元具有 .path 扩展名,用于将服务的激活推迟到特定文件系统更改发生之后
使用 systemctl 管理单元
systemctl -t help
显示可用的单元类型
列出服务单元
systemctl
探索系统的当前状态
systemctl list-units --type=service
仅列出激活状态为active 的服务器单元
systemctl list-units --all
列出所有服务单元,不论激活状态如果
不显示已安装但未启用的服务
systemctl list-unit-files
查看所有已安装的单元文件的状态
STATE 字段的一些常见条目有enabled、disabled、static、masked
--state=LOAD、ACTIVE、SUB字段中的值进行筛选
--typer=service
将systemd 单元的类型限制为服务单元
UNIT
服务单元名称
LOAD
systemd 守护进程是否正确解析了单元的配置并将该单元加载到内存中
ACTIVE
单元的高级别激活状态。此信息表明单元是否已成功启动
SUB
单元的低级别激活状态。此信息指示有关该单元的更多详细信息。
DESCRIPTION
单元的简短描述
查看服务状态
systemctl status name.type
查看单元的状态
省略单元类型,则命令需要具有该命令的服务单元
status 选项输出中的一些字段
服务单元信息
Loaded
服务单元是否已加载到内存中
Active
服务单元是否正在运行;若为是,它已运行了多久
Docs
哪里可以找到有关该服务的更多信息
Main PID
服务的主进程ID,包括命令名称
Status
服务的更多信息
Process
相关进程的更多信息
CGroup
相关控制组的更多信息
服务状态
loaded
单元配置文件已被处理
active (running)
服务正在运行,并由持续的进程
active (exited)
服务成功完成了一次行配置
active (waiting)
服务正在运行中,但在等待事件
inactive
服务未在运行
enabled
服务在系统引导时启动
disabled
服务未设为在系统引导时启动
static
服务无法启用,但可以由某一启用的单元自动启动
验证服务的状态
systemctl is-active name.type
验证服务单元是否处于活动状态(正在运行)
返回状态active 或 inactive
systemctl is-enabled name.type
验证服务单元是否已启用为在系统引导期间自动启动
返回状态 enabled 或 disabled
systemctl is-failed name.type
验证单元是否在启动过程中失败
正常返回active。启动过程发生了错误返回failed
如果已被停止,返回 unknown 或 inactive
systemctl --failed --type=service
列出所有失败的单元
指导练习:识别自动启动的系统进程
控制系统服务
启动和停止服务
systemctl status
验证服务的状态
systemctl start
以 root 运行不使用服务类型,将查找 .service 文件
systemctl stop
停止正在运行的服务
重新启动和重新加载服务
systemctl restart
重新启动正在运行的服务时,该服务首先停止运行,然后重新启动
进程ID 改变
systemctl reload
无需重新启动即可加载其配置文件,称为服务重新加载
进程ID 不改变
systemctl reload-or-restart
不确定服务器是否具有重新加载配置文件
如果重新加载可用,就重新加载。否则,将重新启动服务
列出单元依赖项
systemctl list-dependencies UNIT
显示启动服务单元所需的依赖项的层次结构映射
--reverse
列出反向依赖项
屏蔽和取消屏蔽服务
systemctl mask
屏蔽服务
systemctl list-unit-files
查看服务的状态
systemctl unmask
取消屏蔽
使用服务在系统引导时启动或停止
systemctl enable
启动
systemctl disable
停止
Systemctl 命令摘要
systemctl status UNIT
查看单元状态的详细信息
systemctl stop UNIT
在运行中的系统上停止一项服务
systemctl start UNIT
在运行中的系统上启动一项服务
systemctl restart UNIT
在运行中的系统上重新启动一项服务
systemctl reload UNIT
重新加载运行中服务的配置文件
systemctl mask UNIT
禁用服务,使其无法手动启动或在系统引导时启动
systemctl unmask UNIT
使屏蔽的服务变为可用
systemctl enable UNIT
将服务配置为在系统引导时启动。使用 --now 选项也会启动该服务
systemctl disable UNIT
禁止服务在系统引导时启动。使用 --now 选项页会停止该服务
指导练习:控制系统服务
开放研究实验:控制服务和守护进程
总结
10. 配置和保护 SSH
使用 SSH 访问远程命令行
描述 Secure Shell
创建与远程系统安全连接
获取交互式 shell 会话
远程系统上运行会话,而无需运行交互式 shell
Secure Shell 示例
ssh hosta
使用与当前用户相同的用户名登陆hosta 远程服务器
exit
注销远程系统
ssh developer2@hosta
以developer2用户名登录hosta 远程服务器
识别远程用户
w
显示当前登录系统的用户列表
SSH 主机密钥
通过公钥加密
指导练习:访问远程命令行
配置基于 SSH 密钥的身份验证
基于SSH 密钥的身份验证
要准备账户,请生成与加密相关的密钥文件对
SSH 密钥生成
ssh-keygen
创建一个密钥对
私有保存在~/.ssh/id_rsa
公钥保存在~/.ssh/id_rsa.pub
ssh-keygen -f .ssh/key-with-pass
加密私有
-f
指定用于保存密钥的文件
ssh-agent 密码管理器
首次登录恢复中使用密语时进行缓存
共享公钥
ssh-copy-id
可将SSH 密钥对的公钥复制到远程系统上
ssh-copy-id -i .ssh/key-with-pass.pub user@remontehost
ssh -i .ssh/key-with-pass user@remotehost
使用对应的私钥测试远程访问
使用密码管理器进行非交互式身份验证
GNOME 图形桌面环境可以自动启动和配置 ssh-agent 密钥管理器
登录文本环境,必须针对每哥会话手动启动ssh-agent程序
eval $(ssh-agent)
ssh-add
手动将私钥密语加载到密码管理器
默认的~/.ssh/id_rsa 文件添加私钥,然后从~/.ssh/key-with-pass 文件添加
从使用ssh-agent 密钥管理器的会话注销时,将从内存中清除所有缓存的密码
SSH 连接基本故障排除
-v、-vv、-vvv选项提供桑详细程序级别
SSH 客户端配置
创建 ~/.ssh/config 文件来预配置SSH 连接
有了此文件,无需再每次连接主机时手动指定命令参数
也可以用于配置SSH 跳转主机
指导练习:配置基于 SSH 密钥 身份验证
自定义 OpenSSH 服务配置
配置OpenSSH 服务器
通过编辑/etc/ssh/sshd_config 文件配置该服务
禁用超级用户进行登录
PermitRootLogin yes
重新加载生效 systemctl reload sshd
PermitRootLogin without-password
禁用基于密码的身份验证,允许执行基于私钥的身份验证
禁止将基于密码的身份验证用于SSH
PasswordAuthentication yes改为no
指导练习:自定义 OpenSSH 服务配置
开放研究实验:配置和保护 SSH
总结
11. 分析和存储日志
描述系统日志架构
系统日志记录
操作系统内和其他进程为系统运行时发生的事件记录日志
可以使用文本实用程序(如less 和 taill )来检查这些日志
systemd-journald 和 rsyslog服务处理红帽企业Linux 9 中的syslog 消息
systemd-journald
服务时操作系统事件日志架构的核心
从许多来源收集事件小时
系统内核
启动过程早期阶段的输出
守护进程的标准输出和标准错误
系统日志事件
重启后不保留日志
rsyslog
服务从日志中读取systemd-journald 服务收到的syslog 消息
处理syslog 事件,将他们记录到日志文件中,或感觉自有的配置将它们转发给其他服务
写入到 /var/log
系统重启后不予保留
/var/log/
messages
大多数系统日志消息记录在此处。例外包括与身份验证、电子邮件处理和调度作业执行相关信息,以及纯粹与调试相关的消息
secure
与安全性和身份验证事件相关的syslog 消息
maillog
与邮件服务相关的syslog 消息
cron
与调度作业执行相关的syslog 消息
boot.log
与系统启动相关的非 syslog 控制台消息
小测验:描述系统日志架构
查看Syslog 文件
将事件记录到系统
Syslog 设备概述
0
kern
内核消息
1
user
用户级消息
2
mail
邮件系统消息
3
daemon
系统守护进程消息
4
auth
身份验证和安全消息
5
syslog
内部 syslog 消息
6
lpr
打印机消息
7
新闻
网络新闻消息
8
uucp
UUCP 协议消息
9
cron
时钟守护进程消息
10
authpriv
非系统授权消息
11
ftp
FTP 协议消息
16-23
local0 到 local7
自定义本地消息
Syslog 优先级概述
0
emerg
系统不可用
1
alert
必须立即采取措施
2
crit
临界情况
3
err
非严重错误状况
4
warning
警告情况
5
notice
正常但重要的事件
6
info
信息性事件
7
debug
调试级别消息
日志文件轮转
logrotate 命令会轮转日志文件,以防止他们在 /var/log 目录中占用太多空间
使用指示轮转日志的扩展名来对其重命名
轮转若干次之后(通常是四周),丢弃最旧的日志文件以释放磁盘空间
分析 Syslog 目录
日志消息在文件的开头显示最旧的消息,在文件的末尾显示最新的消息
Mar 20 20:11:48
记录日志条目的时间戳
localhost
发送日志消息的主机
sshd[1433]
发送日志消息的程序或进程名称和PID 编号
监控日志事件
tail -f /path/to/file
输出指定文件的最后10 行
手动发送 Syslog 消息
logger 命令可将消息发送到rsyslog 服务
指导练习:查看 Syslog 文件
查看系统日志条目
在系统日志中查找事件
journalctl
从日志中检索日志消息
root 身份对日志具有完全访问权限
普通用户可能会限制查看某些消息
优先级为notice 或warning 的消息显示为粗体文本
优先级为error 或以上的消息则显示为红色文本
journalctl -n
默认显示最后10 个日志条目
可以指定要显示的日志条目
journalctl -f
输出系统日志最后10 行
日志附加新的日志条目是继续输出
使用Ctrl+C 组合键退出
journalctl -p
显示指定优先级(按名称或编号)或以上的日志条目
按优先级升序方式处理
debug
info
notice
warning
err
crit
alert
emerg
journalctl -u
和单元名称来显示指定systemd 单元的消息
journalctl -u sshd.service
jorunalctl --since “YYY-MM-DDhh:mm:ss”--until “YYY-MM-DDhh:mm:ss”
可以接受yesterday、today、tomorrow
“-1 hour”
指定相对于当前某个事件以后的所有条目
journalctl -o verbose
除了日志的可见内容外,打开详细输入,还可以查看其他日志条目
_COMM 是命令名称
_EXE 是进程的可执行文件的路径
_PID 是进程的PID
_UID 是运行该进程的用户的UID
_SYSTEMD_UNIT 是启动该进程的systemd 单元
journalctl _SYSTEMD_UNIT=sshd.service _PID=2110
组合多个系统日志字段,以便在运行journalctl 命令时形成精细的搜索查询
指导练习:查看系统日志条目
保留系统日志
系统日志存储
默认情况下,Linux 9 将系统日志存储在/run/log目录中,并且系统会在重新启动后清除系统日志
可以在/etc/systemd/journald.conf 文件中更改 systemd-journald 服务的配置设置,时日志在系统重启后能够保留下来
persistent
将日志存储在/var/log/journal 目录中,这可在系统重启后持久保留
如果/var/log/journal 目录不存在,则systemd-journald 服务会创建它
volatile
将日志存储在易失性 /run/log/journal 目录中。
auto
如果/var/log/journal 目录存在,那么systemd-journald 服务会使用持久存储,否则使用易失性存储
none
不使用任何存储。系统丢弃所有日志,但您可以仍然可以转发日志
每个月触发日志轮转机制
系统不允许日志大小超过所处文件系统的10%,不允许造成文件系统的可用空间低于15%
在/etc/systemd/journald.conf 配置文件中修改运行时日志和持久日志的这些值
输出显示当前大小配额
journalctl | grep -E 'Runtime Journal|System Journal'
配置持久系统日志
创建目录
mkdir /var/log/journal
设置Storage 参数设置为persistent
以超级用户身份运行你选择的文本编辑器
以编辑/etc/systemd/journal.conf 文件
Storage=persistent
重启服务
systemctl restart systemd-journald
创建子目录,名称较长且包含十六进制字符的 .jouranl 扩展名
journalctl -b {1....}
第几次系统启动的条目
默认时当前这次系统启动的条目
由于系统日志在系统重启后保留
journalctl --list-boot
识别系统启动事件
指导练习:保留系统日志
维护准确的时间
管理本地时钟和时区
timedatectl
简要显示当前的时间相关系统设置
list-timezons
列出时区数据库
set-timezone
root用户
更改系统设置来更新当前的时区
set-time
更改系统的当前时间
"YYY-MM-DD hh:mm:ss",可用省略日期或时间
set-ntp
true
启用NTP同步
false
禁用NTP同步
配置和监控 chronyd 服务
/etc/chrony.conf
配置文件中声明server 和 peer 两种时间源类别
server 比本地NTP 服务器高一个级别
peer 则属于同一级别
例如:server classroom.example.com iburst
server 行的第一个参数时NTP服务器IP地址或DNS名称。
之后,可用列出适用于该服务器的一系列选项。建设使用 iburst
之后,可用列出适用于该服务器的一系列选项。建设使用 iburst
systemctl reatart chronyd
重新启动服务生效
chronyc sources -v
验证本地系统是否使用NTP服务器无缝同步系统时钟
指导练习:维护准确的时间
开放研究实验:分析和存储日志
总结
12. 管理网络
描述网络概念
TCP/IP 网络模型
应用
传输
互联网
链路
描述网络接口名称
en
以太网接口
wl
WLAN 接口
ww
WWAN 接口
其余部分
oN
板载设备,其唯一索引为N,由服务器的固件提供。例如eno1
sN
PCI 热插拔槽N 中的设备。例如ens3
pMsN
插槽N 中总线 M上的设备。例如wlp4s0
IPv4 网络
IPv4 地址
32位数字,使用点号分隔
分网络前缀和主机编号
IPv4 子网和子网掩码
网络前缀
两位都必须为 1,结果才会是 1
其他组合结果都是 0
主机号
任一位是 1 都可使结果为 1
只有两个 0 才会产生 0
IPv4 路由
如果多个条目对目标地址有效,则使用前缀较长的条目
如果目的地网络不匹配具体的条目,则数据包将使用 0.0.0.0/0 默认条目进行路由
IPv6 网络
IPv6 地址
128位数字,以分号分隔
2001:0db8:0000:0010:0000:0000:0000:001
为了便于书写,不需要书写分号分隔的组中的前导零
2001:db8:0:10:0:0:0:1
一组或多组连续零可以通过正好一个双冒号 ::字符块来合并
2001:db8:0:10::1
IPv6 子网
::1/128
本地主机
等效于127.0.0.1/8 地址的IPv6,在回环接口上设置
::
未指定的地址
等效于 0.0.0.0 的IPv6。对于网络服务,这可能表示其正在侦听所有已配置的IP地址
::/0
默认路由(IPv6 互联网)
等效于 0.0.0.0/0地址的IPv6.路由表中的默认路由于此网络匹配;此网络的路由器是在没有更好路由情况下发送所有流量的位置
2000::/3
全局单播地址
”普通“的IPv6 地址目前由互联网编号分配机构(IANA)从该空间进行分配。地址包括2000::/16 到 3fff::/16 范围的所有网络
fd00::/8
唯一本地地址(RFC 4193)
IPv6 没有RFC 1918 专用地址空间的直接等效对象,尽管此网络范围非常接近。站点可以使用这些网络在组织中自助分配可路由的专用IP 地址空间。
站点必须随机从该空间中选择一个 /48,但是它可以正常将分配空间划分为 /64网络
站点必须随机从该空间中选择一个 /48,但是它可以正常将分配空间划分为 /64网络
fe80::/10
本地链路地址
每个IPv6 接口自动配置一个本地链路单播地址,该地址仅在 fe80::/64 网络中的本地链路有效。
但是,整个 fe80::/10 范围保留给本地链路以后使用。后续部分将更为详细地探讨此主题
但是,整个 fe80::/10 范围保留给本地链路以后使用。后续部分将更为详细地探讨此主题
ff00::/8
多播
等效于 224.0.0.0/4 地址的IPv6。多播用于同时传输到多个主机,并在IPv6 中特别重要,因为其没有广播地址
主机名和IP 地址
/etc/host
创建静态条目
从DNS查找
小测验:描述网络概念
验证网络配置
收集网络接口信息
ip link
将列出系统上可用的所有网络接口
显示IP 地址
子主题
ip 查看设备和地址信息
活动接口为UP
link/ether 字符串指定设备的硬件(MAC)地址
inet 字符串显示 IPv4 地址、其网络前缀长度和作用域
inet6 字符串显示IPv6 地址、其网络前缀长度和作用域。此地址属于全局作用域,通常使用此地址
inet6 字符串显示接口具有链路作用域的IPv6 地址,并且只能用于本地以太网链接的通信
显示性能统计信息
ip -s link show ens3
显示关于网络性能的统计信息。每个网络接口的计数器可用识别网络问题的存在。计数器记录的统计信息包括首(RX)和传出(TX)的数据包数、数据包错误数,以及丢弃的数据包数
验证主机之间的连接
ping -c3
测试连接,直到按下Ctrl+c 组合已指定了现在发送数据包数量的选项
ping6
ping 命令的IPv6 版本
路由器问题故障排除
描述路由表
ip route
显示路由信息
ip -6 route
显示IPv6 路由表
追踪流量路由
traceroute 或 tracepath
端口和服务故障排除
/etc/services 文件中列出了标准端口的常用名称
ss -ta
显示套接字统计信息
取代了net-tools 软件包中所包含的较旧工具netstat
ss 和 netstat
-n
显示接口和端口的编号,而不显示名称
-t
显示TCP 套接字
-u
显示UDP 套接字
-l
仅显示侦听中的套接字
-a
显示所有(侦听中和已建立的)套接字
-p
显示使用套接字的进程
-A inet
对于 inet 地址系列,显示活动的连接(但不显示侦听套接字)。
也就是说,忽略本地 UNIX 域套接字。对于 ss 命令,同时显示IPv4 和 IPv6 连接。
对于 netstat 命令,仅显示IPv4 连接。(netstat -A inet6 或 netstat -46)
也就是说,忽略本地 UNIX 域套接字。对于 ss 命令,同时显示IPv4 和 IPv6 连接。
对于 netstat 命令,仅显示IPv4 连接。(netstat -A inet6 或 netstat -46)
指导练习:验证网络配置
从命令行配置网络
描述 NetworkManager 服务
监视和管理系统的网络设置
单个设备可以有多个连接配置并在它们之间切换
自 Linux 8 弃用ifcfg 格式配置文件和/etc/sysconfig/network-scripts/ 目录
NetworkManager 将网络配置集存储在/etc/NetworkManager/system-connections/目录中
查看网络信息
nmcli
实用程序可用于从命令行创建和编辑连接文件
nmcli device status
显示所有网络设备的状态
缩写 nmcli dev dis
nmcli connection show
显示所有连接列表
--active
仅列出活动的连接
缩写 nmcli con show
添加网络连接
nmcli connection add
添加网络连接
添加的网络连接的数据作为带有 .nmconnection 后缀的文件存储在/etc/NetworkManager/system-connections/ 目录中
示例 nmcli con add con-name eno2 \
type ethernet ifname eno2
type ethernet ifname eno2
添加eno2 网络接口的ethernet类型的eno2 连接
nmcli con add con-name eno3 type ethernet ifname eno3 \
ipv4.method manual ipv4.addresses 192.168.0.5/24 ipv4.gateway 192.158.0.254
ipv4.method manual ipv4.addresses 192.168.0.5/24 ipv4.gateway 192.158.0.254
具有静态IPv4创建eno3 连接
连接名存在,命令会失败
管理网络连接
nmcli connection up
将其绑定到的网络接口上激活网络连接
需要连接名称,不是设备名称
nmcli device disconnect
断开网络设备的连接,并将连接关闭。
更新网络连接设置
NetworkManager两种类型
静态连接,存储在/etc/NetworkManager/system-connections/*.nmconnection 配置文件中
动态连接,从DHCP请求,不会持久存储
nmcli connection modify
更新连接设置
nmcli con mod static-ens3 ipv4.addresses 192.0.2.2/24 ipv4.gatweay 192.0.2.254 connection.autoconnect yes
更新static-ens3 连接
connection.autoconnect
自动启动或禁用连接
nmcli con mod static-ens3 +ipv4.dns 2.2.2.2
可以有多个值
开头添加加号+ 或 减号 -
示例将2.2.2.2 DNS 添加到static-ens3 连接
可以通过编辑/etc/NetworkManager/system-connections/ 中的连接配置文件来修改网络配置集
nmcli con reload
加载所有连接配置集
mcli con reload eno2
加载eno2连接
删除网络连接
nmcli connection delete
从系统删除连接
nmcli con del static-ens3
删除statice-ens3
可修改NetworkManager 设置的权限
root 用户可以实用nmcli 命令来更改网络配置
nmcli general permissions
查看您当前权限
有用的NetworkManager 命令
nmcli dev status
显示所有网络接口的NetworkManager 状态
nmcli con show
列出所有连接
nmcli con show name
列出 name 连接的当前设置
nmcli con add con-name name
添加和命名一个新的连接配置集
nmcli con mod name
修改 name 连接
nmcli con reload
手动编辑文件后,重新加载配置文件
nmcli con up name
激活 name 连接
nmcli dev dis dev
断开接口,这也会停用当前的连接
nmcli con del name
删除指定的连接及其配置文件
指导练习:从命令行配置网络
编辑网络配置文件
连接配置文件
自Linux 8 起,网络配置存储在/etc/NetworkManager/system-connections/ 目录中
此新配置位置实用密钥文件格式,不是ifcfg 格式
密钥格式
NetworkManager 使用INI 样式的密钥格式来存储网络连接配置集
NetworkManager 设置和密钥文件格式文件的比较
ipv4..method manual
[ipv4]
method=manual
method=manual
以静态方式配置IPv4 地址
ipv4.method auto
[ipv4]
method=auto
method=auto
从DHCPv4 服务器中查找配置设置。在获得来自DHCPv4 的信息之前,它不会调出任何静态地址
ivp4.addresses
192.0.2.1/24
192.0.2.1/24
[ipv4]
address1=192.0.2.1/24
address1=192.0.2.1/24
设置静态IPv4 地址和网络前缀。对于多个连接地址,address2 键定义第二个地址,address3 键定义第三个地址
ipv4.gateway
192.0.2.254
192.0.2.254
[ipv4]
gateway=192.0.2.254
gateway=192.0.2.254
设置默认网关
ipv4.dns 8.8.8.8
[ipv4]
dns=8.8.8.8
dns=8.8.8.8
修改/etc/resolv.conf 以使用此名称服务器
ipv4.dns-search
example.com
example.com
[ipv4]
dns-search=example.com
dns-search=example.com
修改/etc/resole.conf,以在search 指令中使用这个域
ipv4.ignore-auto-dns true
[ipv4]
ignore-auto-dns=true
ignore-auto-dns=true
忽略来自DHCP 服务器的DNS 服务器信息
ipv6..method manual
[ipv6]
method=manual
method=manual
以静态方式配置IPv6 地址
ipv6.method auto
[ipv6]
method=auto
method=auto
使用路由器播发中的SLAAC 来配置网络设置
ipv6.method dhcp
[ipv6]
method=dhcp
method=dhcp
使用DHCPv6 (而不使用SLAAC)来配置网络设置
ivp6.addresses
2001:bd8::a/64
2001:bd8::a/64
[ipv6]
address1=2001:bd8::a/64
address1=2001:bd8::a/64
设置静态IPv6 地址和网络前缀。对于多个连接地址,address2 键定义第二个地址,address3 键定义第三个地址
ipv6.gateway
2001:bd8::1
2001:bd8::1
[ipv6]
gateway=2001:bd8::1
gateway=2001:bd8::1
设置默认网关
ipv6.dns
fde2:6494:1e09:2::d
fde2:6494:1e09:2::d
[ipv6]
dns=fde2:6494:1e09:2::d
dns=fde2:6494:1e09:2::d
修改/etc/resolv.conf 以使用此名称服务器。与IPv4相同
ipv6.dns-search
example.com
example.com
[ipv6]
dns-search=example.com
dns-search=example.com
修改/etc/resole.conf,以在search 指令中使用这个域
ipv6.ignore-auto-dns true
[ipv6]
ignore-auto-dns=true
ignore-auto-dns=true
忽略来自DHCP 服务器的DNS 服务器信息
connection.autoconnect yes
[connection]
autoconnect=true
autoconnect=true
在系统启动时自动激活此连接
connection.id ens3
[connection]
id=Main eth0
id=Main eth0
此连接的名称
connection.interface-name ens3
[connection]
interface-name=ens3
interface-name=ens3
连接与具有此名称的网络接口绑定
802-3-Ethernet.mac-address
[802-3-ethernet]
mac-address=
mac-address=
连接与具有此MAC 地址的网络接口绑定
修改网络配置
/etc/NetworkManager/system-connections/ 目录存储用户创建和编辑的持久配置集
/run/NetworkManager/system-connections/ 目录存储临时配置集,在您重新启动系统时自动删除
/usr/lib/NetworkManager/system-connections/ 目录存储预部署的不可变配置集。
关键文件格式的IPv4 配置信息
静态
[ipv4]
address1=172.25.0.10/24
gateway=172.25.0.254
dns=172.25.254.254
address1=172.25.0.10/24
gateway=172.25.0.254
dns=172.25.254.254
动态
method=auto
任一
[connection]
interface-name=ens3
id=Main eth0
autoconnect=true
uuid=f3e8(...)ad3e
type=ethernet
interface-name=ens3
id=Main eth0
autoconnect=true
uuid=f3e8(...)ad3e
type=ethernet
修改配置文件后,运行nmcli con reload 命令加载配置更改
如果autoconnect=false,手动激活连接
nmcli con up "static-ens3"
指导练习:编辑网盘配置文件
配置主机名和名称解析
更新系统主机名
hostname
显示或临时修改系统的完全限定主机名
/etc/hostname
指定静态主机名
使用hostnamectl 修改此文件
配置名称解析
根解析器可将主机名称转换为IP 地址,或反之。它将根据/etc/nsswitch.conf 文件的配置来确定查找位置
默认,首先使用/etc/hosts 文件来尝试解释查询
getent host shostname
使用/etc/hosts 文件测试主机名解析
未找到,根解析器会使用DNS 名称服务器查询主机名
/etc/resolv.conf 文件控制如何执行这一查询
search
可使用短主机名尝试搜索的域名列表。
search 或 domain 应在同一文件中设置;
如两者都设置,则仅最后一个条目生效。
search 或 domain 应在同一文件中设置;
如两者都设置,则仅最后一个条目生效。
nameserver
要查询的名称服务器的IP 地址。
测试DNS 名称解析
host HOSTNAME
测试DNS 服务器连接
dig HOSTNAME
测试DNS 服务器连接
getent hosts HOSTNAME
测试/etc/hosts 文件
指导练习:配置主机名和名称解析
开放研究实验:管理网络
总结
13. 归档和传输文件
管理压缩的tar 存档
从命令创建存档
tar 实用程序时用于创建、管理和提取存档的常用命令
tar
操作之一
-c 或 --create
创建存档文件
-t 或 --list
列出存档的内容
-x 或 --extract
提取存档
选项
-v 或 --verbose
显示在tar 操作期间存档或提取的文件
-f 或 --file
在此选项后面加上要创建或打开的存档文件名
-p 或 --presserve-permissions
提取时保留原始文件权限
--xattrs
启用扩展属性支持,并存储扩展的文件属性
--selinux
启用SELinux 上下文支持,并存储SELinux 文件上下文
选择算法
-a 或 --auto-compress
使用存档的后缀来确定要使用的算法
-z 或 --gzip
使用gzip 压缩算法,这会生成 .tar.gz 后缀
-j 或 --bzip2
使用bzip2 压缩算法,这会生成 .tar.bz2 后缀
-J 或 --xz
使用xz 压缩算法,这会生成 .tar.xz 后缀
创建存档
tar -cf mybackup.tar myapp1.log myapp2.log myapp3.log
创建mybackup.tar 存储,其包含当前目录myapp1-3.log 文件
列出归档内容
tart -tf /root/etc.tar
提取存档内容
提取的到空目录,以免覆盖现有的文件
列出/root/etc.tar 存档的内容,然后将其文件提取到/root/etcbackup 目录
mkdir /root/etcbackup
cd /root/etcbackup
tar -tf /root/etc.tar
tar -xf /root/etc.tar
umask修改提取的每个文件的权限
-p 可保留原始权限
超级用户默认启用 --preserve-permissions
创建压缩存档
压缩方式
gzip
压缩是传统的、最快的方法,可以跨平台广泛使用
bzip2
压缩可创建较小的存档,但使用不如gzip 广泛
xz
压缩是更新的技术,提供的压缩率在可用方法中最好
tar -czf /root/etcbackup.tar.gz /etc
使用gzip,创建/etc 目录存档/root/etcbackup.tar.gz 存档
tar -cjf /root/logbackup.tar.bz2 /var/log
使用bzip2
tar -cJf /root/sshconfig.tar.xz /etc/ssh
使用xz
提取压缩存档的内容
tar -xzf /root/etcbackup.tar.xz
自动确定压缩方式
tar -tf /root/logbackup.tar
列出压缩的内容
gzip、bzip2、xz也作为独立命令实施
用于在步创建归档的前提下压缩单个文件
gzip、xz 提供-l 选项
查看压缩的单个文件或归档文件的未压缩大小
解压缩或提取前,验证是否有足够的可用空间
指导练习:管理压缩的 tar 存档
在系统之间安全地传输文件
[user@]host:/path
user@ 部分是可选,如果缺失此部分,sftp命令将使用您当前的本地用户名
运行sftp 命令时,终端会提供SFTP>提示符
sftp remoteuser@remotehost
exit 退出sftp 会话
交互式sftp 会话接受各种命令
sftp 会话中使用help 命令,列出可用的sftp 命令
在sftp 会话中,在本地主机上运行命令。对于大多数可用的命令,前添加l 字符
上传到远程主机,put 命令后跟一个本地文件。要以递归方式复制整个目录树,可使用sftp 命令 -r 选项
从远程主机下载,get /etc/yum.conf
获取远程文件,而不打开交互式会话。无法上传到远程主机
sftp remoteuser@remotehost:/home/remoteuser/remotefile
指导练习:在系统直接安全地传输文件
在系统之间安全地同步文件
rsync 命令是系统之间安全地复制文件的另一种方式
仅同步已更改的文件部分来将复制的数据量最小化
如果两台服务器间的两个文件或目录相似,rsync 命令将仅复制文件系统间的差异部分
rsync -n
可进行空运行,以确保重要的文件不会被覆盖或删除
rsync -v 或 --verbose
可提供更详细的输出
对于故障排除和查看实时进度非常有用
rsync -a 或 --archive
将启用“存档模式”
此选项可实现递归复制并开启很多有用的选项,以保留文件的大部分特征。
-r 、 --recursive
以递归方式同步整个目录
-l 、 --links
同步符号链接
-p、 --perms
保留权限
-t、 --times
保留时间戳
-g、 --group
保留组所有权
-o、 --owner
保留文件的所有者
-D、 --devices
保留设备文件
存储模式不会保留硬链接
rsync -H
保留硬链接
[user@]host:/path
指定远程位置
远程位置可以是来源或目标系统,但必须有一台是本地计算机
要保留文件所有权,必须是目标系统上的root 用户
如果目录为远程位置,则以root 用户身份进行验证
如果目标为本地位置,则必须以root 用户身份运行rsync
指导练习:在系统之间安全地同步文件
开放研究实验:归档和传输文件
总结
14. 安装和更新软件包
注册系统以活动红帽支持
通过红帽订阅管理器订阅系统
使用GNOME 应用注册系统
Activities -> Red Hat Subscription Manager
在Type to search 自动键入subscription
再单击Red Hat Subscription Manager
在系统提示时,输入适当的密码进行身份验证
在Subscriptions 窗口中,单击Register 以打开Register System 对话框
使用RHEL Web 控制台订阅系统
使用命令行订阅系统
subscription-manager
以root 用户身份,使用红帽客户门户的凭据注册系统
subscription-manager register --username <yourusername>
查看您的红帽账户可用的订阅
subscription-manager list --available
自动附加订阅
subscription-manager attach --auto
从可用订阅列表的特定池中附加订阅
subscription-manager attach --pool=poolID
查看已用的订阅
subscription-manager list --consumed
取消注册系统
subscription-manager unregister
激活密钥
预配置的订阅管理文件,可用于红帽卫星服务器和通过红帽客户门户进行的订阅管理。
subscription-manager 命令与激活密钥搭配使用,可简化预定义订阅的注册和分配
授权证书
数字证书可在本地系统上存储当前的授权信息。
已注册的系统将授权证书存储在/etc/pki 目录下
/etc/pki/product
证书表示已安装的红帽产品
/etc/pki/consumer
证书标识要注册的红帽账户
/etc/pki/entitlement
证书指明该系统附加有哪些订阅
rct
检查证书
subscription-manager
检查系统上附加的订阅
小测验:注册系统以获取红帽支持
解析和调查 RPM 软件包
软件包和 RPM
RPM 软件包文件名由四个元素组成(再加上 .rpm 后缀)
name-version-release.architecture
Coreutils-8.32-31.el9.x86_64.rpm
NMAE 是描述其内容的一个或多个词语(coreutils)
VERSION 是原始软件的版本号(8.32)
RELEASE 是基于该版本的软件包的发行版号,由软件打包商设置,后者不一定是原始软件开发商(31.el9)
ARCH 是软件包编译为在其上运行的处理器架构
通过RPM 软件包更新软件
检查RPM 软件包
rpm 实用程序,可检索软件包文件和已安装软件包的内容的相关信息
检索关于已安装的软件包的一般信息
rpm -qa
列出所有已安装的软包
rpm -qf FILENAME
确定提供FILENAME 的软件包
rpm -qf /etc/yum.repos.d
获取关于特定软件包的信息
rpm -q
列出当前已安装的软件包版本
rpm -q dnf
rpm -qi
获取软件包的详细信息
rpm -ql
列出软件包安装的文件
rpm -ql dnf
rpm -qc
仅列出软件包安装的配置文件
rpm -qc openssh-clients
rpm -qd
仅列出软件包安装的文档文件
rpm -qd openssh-clients
rpm -q --scripts
列出在安装或删除软件包之前或之后运行的shell 脚本
rpm -q --scripts openssh-server
rpm -q --changelog
列出软件包更改日志信息
rpm -q --changelog audit
查看本地软包文件
rpm -qlp
列出本地软包安装的文件
ls -l podman-4.0.0-6.el9.x86_64.rpm
rpm -qlp podman-4.0.0-6.el9.x86_64.rpm
安装RPM 软件包
使用rpm 命令来安装已下载到本地目录的RPM 软件包
rpm -ivh podman-4.0.0-6.el9.x86_64.rpm
提取RPM 软件包
可以使用rpm2cpio 实用程序从RPM 软件包文件中提取文件,而不安装此软件包
rpm2cpio 实用程序将RPM 软件包转换为cpio 归档。将RPM 软件包转换为cpio 归档后,可以使用cpio 命令提取文件列表
使用cpio 命令和 -i 选项从标准输入中提取文件。使用 -d 选项从当前工作目录按需创建子目录。使用 -v 选项提供详细输出
rpm2cpio httpd-2.4.51-7.el9_0.x86_64.rpm | cpio -idv
通过指定文件的路径来提取各个文件
rpm2cpio httpd-2.4.51-7.el9_0.x86_64.rpm | cpio -id "*/etc/httpd/conf/httpd.conf"
使用rpm2cpio 和 cpio -t 命令,列出RPM 软件包中的文件。使用cpio 命令的 -v 选项提供详细输出
rpm2cpio httpd-2.4.51-7.el9_0.x86_64.rpm | cpio -tv
指导练习:解释和调查 RPM 软件包
使用DNF 安装和更新软件包
使用DNF 管理软件包
DNF 取代了 YUM(Linux 9)
rpm 命令可用于安装软件包,但不可以与软件包存储库一起使用,也不能自动解决多个源的依赖关系
使用来自红帽和第三方的多个软件存储库
使用DNF 查找软件
dnf help
显示用法信息
dnf list
显示已安装和可用的软件包
dnf list 'http*'
dnf search KEYWORD
仅列出按照名称和摘要字段中找到的关键字找到的软件包
若要搜索名称、摘要和描述字段中包含“web server”的软件包,可用使用search all
dnf search all 'web server'
dnf info PACKAGENAME
返回与软件包相关的详细信息,包括按照所需的磁盘空间
dnf info httpd
dnf provides PATHNAME
显示与指定路径名匹配的软件包(路径名通常包含通配符)
dnf provides /var/www/html
使用DNF 按照和删除软件
dnf install PACKAGENAME
获取并按照软件包,包括所有依赖项
dnf install httpd
dnf update PACKAGNAME
获取并安装指定软件包的较新版本,包括所有依赖项
dnf update kernel 命令可按照新内核
dnf list kernel
可列出所有已安装和可用的内核
查看当前运行的内核
uname
-r 选项仅查看内核版本和发行版本
-a 选项则显示内核发行版和其他信息
dnf remove PACKAGENAME
可删除安装的软件包,包括所有受支持的软件包
dnf remove httpd
使用DNF 安装和删除软件组
也具有组的概念,即针对特定目的而一起安装的相关软件集合
Linux 9中,dnf 命令可用安装两种软件包组
常规组是软件包的集合
环境组是常规组的集合
mandatory
安装该组时必须予以安装
default
安装该组时通常会安装
optional
安装该组时不予安装,除非特别要求
dnf group list
可显示已安装和可用的组的名称
dnf group list hidden
列出隐藏组
dnf group info
显示与组相关的信息
dnf group install
安装一个组,同时安装其必选和默认的软件包,以及它们依赖的软件包
dnf group install "RPM Development Tools"
查看事务历史记录
所有安装和删除事务的日志都记录在/var/log/dnf.rpm.log 中
tail -5 /var/log/dnf.rpm.log
dnf history
显示安装和删除事务的摘要
dnf history undo
可以撤销事务
DNF 命令摘要
按名称列出已安装和可用的软件包
dnf list [NAME-PATTERN]
列出已安装和可用的组
dnf group list
按关键字搜索软件包
dnf search KEYWORD
显示软件包的详细信息
dnf info PACKAGENAME
安装软件包
dnf install PACKAGENAME
安装软件包组
dnf group install GROUPNAME
更新所有软件包
dnf update
删除软件包
dnf remove PACKAGENAME
显示事务历史记录
dnf history
通过DNF 管理软件包模块流
借助模块化,单个存储库可以承载应用软件包及其依赖项的多个版本
BaseOS 和应用流介绍
Linux 9 通过两个主要的软件存储库分发内容
BaseOS
应用流(AppStream)
BaseOS 存储库以RPM 软件包形式为红帽企业Linux 提供核心操作系统内容。BaseOS 组件的生命周期与之前红帽企业Linux 发行版中的内容相同
应用流存储库提供具有不同生命周期的内容,作为模块和传统软件包
Linux 9 不随附模块,必须收到指定默认模块流,可以使用/etc/dnf/modules.defaults.d 目录中的配置文件来定义默认模块流
模块流
具有一个或多个模块流,其包含不同版本的内容。
模块配置集
每个模块可以有一个或多个配置集
通过DNF 管理模块
dnf module 处理模块化内容
dnf module list
列出可用的模块,以及模块名称、流、配置集和摘要
dnf module list modul-name
列出特定模块的模块流并检索其状态
dnf module info module-name
显示模块详细信息
dnf module provides package
显示哪个模块提供特定的软件包
指导练习:使用 DNF 安装和更新软件包
启用DNF 软件存储库
启用红帽软件存储库
dnf repolist all
可列出所有可用的存储库及其状态
dnf config-manager
启用或禁用存储库
dnf config-manager --enable rhel-9-server-debug-rpms
添加第三方存储库
在/etc/yum.repos.d/ 目录中创建 .repo 文件
向 /etc/dnf/dnf.conf 文件添加 [repository] 部分
红帽建议使用 .repo 文件,并将 dnf.conf 文件保留给其他存储库配置
dnf 命令默认搜索这两个位置,但以 .repo 文件优先
添加DNF 存储库
dnf config-manager
向计算机添加存储库
dnf config-manager \
--add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/"
--add-repo="https://dl.fedoraproject.org/pub/epel/9/Everything/x86_64/"
使用现有存储库的URL 来创建 .repo 文件
在/etc/yum.repos.d/ 目录中高可用查看对应的 .repo 文件
cd /etc/yum.repos.d
cat \
rpm 使用GPG 密钥签署软件包,并导入公钥以验证软件包的完整性和真实性。
dnf 使用存储库配置文件提供GPG 公钥位置,并导入密钥以验证软件包
密钥存储在远程存储库站点上的不同位置。管理员应将密钥下载到本地文件,而不是让dnf 命令从外部来源检索该密钥
.repo 文件使用 gpgkey 参数来引用本地密钥
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
本地存储库的RPM 配置软件包
一些存储库将配置文件和GPG 公钥作为RPM 软件包的一部分来提供,以简化它们的安装
可用使用 rpm --import 命令导入GPG 公钥。
dnf install 命令可用下载并安装这些RPM 软件包
导入RPM-GPG-KEY-EPEL-9 (EPEL) GPG 公钥并安装 EHEL9 Extra Packages for Enterprise Linux (EPEL) 存储库 RPM
rpm --import \
http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9
http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9
dnf install \
https://dl.fedoraproject.org/pub/epel/epel-relesae-latest-9.noarch.rpm
https://dl.fedoraproject.org/pub/epel/epel-relesae-latest-9.noarch.rpm
.repo 文件通常在一个文件中列出多个存储库引用。每个存储库引用的开头为包含在方括号里的单一词语名称
cat /etc/yum.repos.d/epel.repo
要定义存储库,但不默认搜索它,请插入 enabled=0 参数
dnf config-manager 命令可用持久启用和禁用存储库
dnf 命令的 --enablerepo=PATTERN 和 --disablerepo=PATTERN 选项时临时的,仅覆盖命令运行期间
指导练习:启用 DNF 软件存储库
开放研究实验:安装和更新软件包
总结
15. 访问 Linux 文件系统
识别文件系统和设备
存储管理概念
红帽启用 Linux (RHEL) 使用扩展文件系统(Extents File System, XFS) 作为默认的本地文件系统
RHEL 支持使用扩展文件系统(ext4) 文件系统来管理本地文件
自 RHEL 9 起,支持将 exFAT 文件系统用于可移动介质
在企业服务器集群中,共享磁盘使用全局文件系统 2 (GFS2) 文件系统管理并发多节点访问
文件系统和挂载点
通过将文件系统挂载到空目录来访问文件系统的内容。该目录被称为挂载点
挂载后,使用 ls 命令列出该目录的内容。许多文件系统系统启动时自动挂载
挂载点的概念与 Microsoft Windows 驱动器盘符稍有不同,后者的每个文件系统都时在一个独立的实体。挂载点允许在单个树形结构中使用多个文件系统设备。这类似于 Microsoft Windows 中的NTFS 挂载文件夹
文件系统、存储和块设备
块设置时提供存储设备低级别访问权限的文件。必须对块设备进行可选分区,并创建文件系统,然后才能挂载该设备
/dev 目录存储 RHEL 自动为所有设备创建的块设备文件。
在 RHEL 9 中,检测到的第一个SATA、SAS、SCSI 或 USB 硬盘驱动器被称为 /dev/sda 设备,第二个被称为 /dev/sdb 设备,以此类推
块设备命名
SATA/SAS/USB 附加存储(SCSI 驱动器)
/dev/sda、/dev/sdb、/dev/sdc....
virtio-blk 半虚拟化存储(VM)
/dev/vda、/dev/vdb、/dev/vdc...
virtio-scsi 半虚拟化存储(VM)
/dev/sda、/dev/sdb、/dev/sdc....
NVMe 附加存储(SSD)
/dev/nvme0、/dev/nvme1...
SD/MMC/eMMC 存储 (SD 卡)
/dev/mmcblk0、/dev/mmcblk1...
磁盘分区
通常不会将整个存储设备创建成一个文件系统。若要创建分区,请将存储设备划分为较小的区块
借助分区,可用划分硬盘:不同的部分可用通过不同的文件系统进行格式或用于其他用途。
分区本身就时块设备
在第一SATA 附加存储中,第一个分区时/dev/sda1 磁盘。同一存储的第二分区时 /dev/sda2 磁盘。第三SATA 附加存储设备上的第三分区时 /dev/sdc3 磁盘,以此类推
NVMe 附加 SSD 设备命名分区的方式于SATA 附加设备不同
对于NVMe 存储设置,名称的nvmeX部分指代设备,nY 部分指代命名空间,而pZ 部分则指代分区
第一磁盘上第一命名空间的第一分区是/dev/nvme0n1p1 分区。第二磁盘上第一命名空间的第三分区是 /dev/nvme1n1p3 分区,以此类推
SD 或 MMC 卡有时具有与SATA 设备类似的命名系统(/dev/sdN),但并非总是如此。在某些情况下,SD 或 MMC 卡可能具有诸如 /dev/mmcblk0p1 之类名称,其中名称的 mmcblkX 部分指代存储设备,名称pX 部分则指代该设备上的分区编号
host 计算机上/dev/ada1 设备文件的扩展列表显示了b 文件类型,其代表块设备
ls -l /dev/sda
brw-rw----. 1 root disk 8, 1 Feb 22 08:00 /dev/sda1
逻辑卷
整理磁盘和分区的另一种方式是利用逻辑卷管理(LVM)
借助 LVM,可以将多个块设备聚合到一个卷组中
卷组中的磁盘空间分隔成若干逻辑卷,它们的功能等同于物理磁盘上的分区
LVM 系统在创建是为卷组和逻辑卷分配名称。LVM 在/dev 目录中创建一个名称与组名匹配的目录,然后再该新目录中创建一个与逻辑卷同名的符号链接。之后,可以挂载该逻辑卷文件。
检测文件系统
使用 df 命令可以显示本地和远程文件系统设备的概览,其中包含总磁盘空间、已用磁盘空间、可用磁盘空间,以及占整个磁盘空间的百分比
分区显示在 / 和 /boot 目录中挂载了两个物理文件系统,这两个目录通常存在于虚拟机上
tmpfs 和 devtmpfs 设备时系统内存中的文件系统。重启后所有文件都会消失
df -h 或 -H
可改善输出大小的可读性
-h 报告单位是 KiB、MiB、GiB
-H 报告单位是KB、MB、GB
如需有关某一特定目录树空间的详细信息,可用使用du 命令
-h 和 -H 将输出可读格式
以递归方式显示当前目录树的所有文件的大小
小测验:识别文件系统和设备
挂载和卸载文件系统
手动挂载文件系统
要访问可移动存储设备的文件系统,必须挂载该存储设备
通过 mount 命令,root 用户可以手动故障文件系统
mount 命令的第一个参数指定文件挂载的文件系统
第二个参数指定在文件系统层次结构中用作挂载点的目录
mount 命令,挂载文件系统方式
使用/dev 目录中的设备文件名
使用UUID ,即设备的通用唯一标识符
不会自动挂载
识别块设备
热插拔存储设备每次都可以会插接到系统上的不同的端口
使用lsblk 命令可列出指定块设备或所有可用设备的详细信息
使用分区名称挂载文件系统
mount /dev/vda4 /mnt/data
在挂载文件系统之前,挂载带你目录必须已经存在。/mnt 目录存在并用做临时挂载点
如果用作挂载点的目录不为空,则文件系统挂载到那里后,现有文件将被隐藏且不可访问。卸载后重新挂载
在系统上添加或删除设备时,设备检测顺序和存储设备命名可能会发生变化。建议一致使用不变的设备标识符来挂载文件系统
使用分区UUID 挂载文件系统
lsblk -fp
列出设备的完整路径、其UUID 和挂载点,以及分区的文件系统类型
如果尚未挂载文件系统,挂载点将为空
mount UUID="efd314d0-b56e-45db-bbb3-3f32ae98f652" /mnt/data
通过文件系统的UUID 挂载文件系统
自动挂载可移动存储设备
使用图形桌面环境时,系统会在检测到可移动存储介质时自动挂载该介质
可移动存储设备挂载到 /run/media/USERNAME/LABEL 位置
USERNAME 是登录图形环境的用户的名称
LABEL 是标识符,通常是存储介质上的标签
要安全地分离可移动设备,请先手动卸载设备上的所有文件系统
卸载文件系统
系统关机和重新启动过程会自动卸载所有文件系统
所有文件系统数据将清空到存储设备,以确保文件系统数据的完整性
umount
使用挂载点作为参数,以卸载文件系统
umount /mnt/data
如果挂载的文件系统在使用中,则无法卸载。
lsof
可以列出所有打开的文件,以及访问该文件系统的进程
此列表可以帮助识别哪些进程正在阻止文件系统被成功卸载
指导练习:挂载和卸载文件系统
查找系统中的文件
搜索文件
locate
搜索预生产索引中的文件名或文件路径,并即时返回结果
find
通过解析整个文件系统层次结构来实时搜索文件
通过名称查找文件
locate 命令根据文件的名称或路径来搜索文件
此命令速度较快,因为它是从mlocate 数据库中查找这些信息
数据库不会实时更新,需要频繁更新才能获得准确结果
locate 数据库会每日自动更新
root 用户可以通过发出 updatedb 命令来强制即刻更新
locate 命令现在非特权用户的结果
locate -i
执行不区分大小写的搜索
locate -n
可限制返回的搜索结果数
locate -n 5 passwd
实时搜索文件
find 命令通过在文件系统层次结构中执行实时搜索来查找文件
此命令速度比locate 命令慢,但更准确
还可以根据文件名以外的条件搜索文件,例如文件的权限、文件、大小或修改时间
find 命令使用执行搜到的用户账户查看文件系统中的文件
运行find 命令的用户必须具有要查看其内容的目录的读取和执行权限
find 命令的第一个参数是要搜索的目录。如果省略目录参数,它会从当前目录中开始搜索,并在任何子目录中查找匹配项
find -name FILENAME
返回与 FILENAME 完全匹配的文件的路径
find / -name sshd_config
可使用通配符搜索文件名,并返回部分匹配的所有结果。使用通配符时,请务必将要查找的文件名用引号括起,以防止终端对通配符进行错误解读。
find / -name '*.txt'
find /etc -name '*pass*'
find -iname
对文件名执行区分大小写的搜索
find / -iname '*messages*'
根据所有权或权限搜索文件
find -user 和 -group
按用户和组名称进行搜索,或按用户 ID 和组 ID 进行搜索
find -user develpoer
搜索用户用户权限
find -group developer
搜索组拥有的文件
find -uid 1000
搜索1000 用户 ID 拥有的文件
find -gid 1000
搜索1000 组ID 拥有的文件
find / -user root -group mail
搜索文件所有者和组所有者不同的文件
示例列出了root 用户拥有并具有mail 组的文件
find -perm
可查找具有特定权限集的文件
八进制值使用4、2、1定义读取、写入、执行权限
权限前面带有 / 或 - 符号,以控制搜索结果
八进制权限前面带有 / 符号将匹配权限集中至少为用户、组或其他人设置了至少一个权限的文件
具有r--r--r-- 权限的文件与 /222 权限不匹配,但与rw-r--r-- 权限匹配
权限前面带有 - 符号便是权限的所有三个部分都必须匹配。对于上以示例,具有rw-rw-rw 权限的文件将符号条件
find /home -perm 764
八进制方法表示权限
find /home -perm u=rwx,g=rw,o=r
使用符号方法
find /home -perm 764 -ls
-ls 选项提供了文件的信息,包括权限
要搜索的文件需要用户至少具有写入和执行权限,组至少具有写入权限,其他至少具有读取权限
find /home -perm -324
find /home -perm -u=wx,g=w,o=r
要搜索的文件需要用户具有读取权限,或者至少具有读取权限,或者其他至少具有写入权限
find /home -perm /442
find /home -perm /u=r,g=r,o=w
与 / 和 - 符号搭配使用时,0 值可用作通配符,因为它表示任何权限
搜索其他人至少具有读取权限的任何文件
find -perm -004
find -perm -o=r
搜索其他具有写入权限的写入权限的所有文件
find -perm -002
find -perm -o=w
根据大小查找文件
find -size
后面加上数字值和单位,可以查找指定大小匹配的文件
对于千字节,请使用k 单位,k 始终为小写
对于兆字节,请使用M 单位,M 始终为大写
对于千兆字节,请使用G 单位,G 始终为大写
使用加号 + 和减号 - 字符分别包含大于和小于给定大小的文件
find -size 10M
大小正好为10M 的文件
find -size +10G
大小超过10G 的文件
find -size -10k
大小不到1k 的文件
根据修改时间搜索文件
find -mmin
加上以分钟表示的时间,将搜索在 n 分钟前更改过的内容的所有文件
文件的时间戳向下取整,支持 +n 到 -n 范围内的小数值
find / -mmin 120
在120分钟前更改过内容的所有文件
find / -mmin +200
搜索在 200 分钟前更改过内容的所有文件
find / -mmin -150
过去150 分钟内更改或的文件
根据文件类型所属文件
find -type
将搜索范围限制为给定的文件类型
常规文件,使用 f
目录,使用 d
软链接,使用 l
块设备,使用 b
find /etc -type d
搜索目录中所有目录
find / -type l
搜索目录中的所有软链接
find /dev -type b
搜索目录中的所有块设备
find -links
加上数字将查找具有特定硬链接数的所有文件
前面带有 + 修饰符将查找硬链接数超过所给数目的文件
前面是 - 修饰符,则搜索将限制为硬链接数小于所给数目的所有文件
find / -type f -links +1
硬链接数超过一个的所有常规文件
指导练习:查找系统中的文件
开放研究实验:访问 Linux 文件系统
总结
16. 分析服务器和获取支持
分析和管理远程服务器
描述Web 控制台
是适用于红帽企业Linux 的基于 Web 型管理界面,专为管理和监控你的服务器而打造
可以使用Web 控制台监控系统日志并查看系统性能图表
启用 Web 控制台
自Linux 7 起,除了最小化安装外,所有安装变体中默认安装Web 控制台
dnf install cockpit
安装Web 控制台
systemctl enable --now cockpit.socket
启用并启动 cockpit.socket服务,它会运行一个Web 服务器
firewall-cmd --add-service=cockpit --permanent
将cockpit 服务添加到firewalld ,以在防火墙中开启端口9090
firewall-cmd --reload
登录Web 控制台
在Web 浏览器中打开 https://servername:9090
可以使用系统上任何本地账户的用户和密码登录 Web 控制台
在 Web 控制台中更改密码
使用Web 控制台进行故障排除
可以实时监控基本系统统计信息,检查系统日志,并快速切换到Web 控制台中的终端会话
实时监控系统统计信息
Overview 按钮来查看系统的相关信息
如硬件类型、操作系统和主机名登
View details and history
查看CPU 活动、内存用量、磁盘 I/O 和网络利用率等当前系统性能的详细信息
检查和过滤Syslog 事件
Logs
可以访问系统日志分析工具
从终端会话运行命令
Terminal 按钮
可以在Web 控制台界面内访问全功能终端会话
创建诊断报告
诊断报告中汇聚了来自红帽企业Linux 系统的配置详细信息、系统信息和诊断信息
以特殊用户身份登录Web 控制台。Diagnostic reportsa 按钮,以打开用于创建这些包括的页面。点击create report 按钮以生成新的诊断报告
使用Web 控制台管理系统服务
以特权用户身份使用Web 控制台,可以停止、启动、启用和重新启动系统服务
还可以配置网络接口,配置防火墙,以及管理用户账户
系统电源选项
Overview
控制运行中的系统服务
Services
Targets
Sockets
配置网络接口和防火墙
Networking
管理用户账户
Accounts
指导练习:分析和管理远程服务器
创建诊断报告
红帽客户门户上的支持资源
门户 https://access.redhat.com
访问官方的产品文档、解决方案和常见文件解答
提交和管理支持案例
管理软件订阅和授权
获取软件下载、更新和评估
访问红帽产品安全公告目录
访问红帽资源的集成搜索引擎
访问白皮书、信息表和多媒体演示
参与社区讨论
红帽客户门户导览
登录红帽客户门户后,单击Tour the Customer Portal按钮
顶部导航栏
Subscriptions
管理注册的系统、订阅和授权
Downloads
访问你的产品下载并请求对无授权产品的评估
Support Cases
管理您的账户、您的组织管理员的任何账户、您的配置集和电子邮件通知选项
红帽客户门户菜单导航
Products & Services
Tools
Security
Community
联系红帽客户支持
收集报告的相关信息
定义问题。具体地陈述问题及其症状
收集背景信息。
受影响的产品和版本是什么
准备好提供相关的诊断信息
此信息可能包括sos report 命令的输出
对于内核问题,此信息可能包含系统的kdump 崩溃转储,或者崩溃系统的监视器上所显示内核回溯的数字照片
确定严重级别
紧急 1
高 2
中 3
低 4
sos 报告实用程序
使用Web 控制台生成 sos 报告
Diagnostic Reports,然后点击 Create report
单击 Download report,再单击Save File 以保存诊断报告
使用命令行生成 sos 报告
dnf install sos
使用sos 软件包来安装 sos 报告实用程序
sos report
生成报告,需要root 特权
sos report --utility
上一命令中提供了任何支持案例ID,报告会之间附加到之前创建的支持案例
可以使用此选项将报告发送给技术支持
ls -l /var/tmp
验证sos report 命令是否在上一位置创建了存档文件
sos clean
可模糊处理报告中的个人信息
将 sos 报告发送给红帽技术支持
通过使用 sos report 命令 --upload 选项来发送 sos 报告
将 sos 报告随同支持案例一起发送到红帽客户门户
加入红帽开发人员计划
红帽开发人员计划托管于 https://developers.redhat.com
指导练习:创建诊断报告
通过红帽智能分析检测和解决问题
红帽智能分析介绍
一款预测分析工具
SaaS 形式提供红帽智能分析
使用红帽智能分析,在客户端系统安装一个代理,收集元数据
红帽自能分析架构描述
安装红帽智能分析客户端
智能分析工具已作为订阅的一部分随附于 Linux 9 中
早期版本需要安装 insights-client 软件包
自 Linux 7.5 起,insights-client 软件包取代了redhat-access-insights
insights-client
刷新客户端的元数据
将RHEL 系统注册到红帽智能分析
subscription-manager register --auto-attach
使用红帽订阅管理服务,以交互方式注册系统
dnf install insights-client
安装软件包
RHEL 8 及更高版本的系统会默认安装
insights-client --register
将系统注册到智能分析服务并上传初始系统元数据
在红帽智能分析(https://console.redhat.com/insights)上,确保您已登录,并在Web UI 的 Inventory 部分下可以看到系统
红帽智能分析控制台导航
红帽智能分析提供一系列服务,可以通过 https://console.redhat.com/insights 网站上访问这些服务
使用顾问服务检查配置问题
Advisor -> Recommendations
使用漏洞服务进行安全性评估
Vulnerability -> CVEs
使用合规性服务分析合规性
使用补丁服务更新软件包
Patch -> Systems
使用偏移服务对系统进行比较
Drift -> Comparison
使用策略服务触发警报
Policies
清单、修复 Playbook 和订阅监控
小测验:通过红帽智能分析检查和解决问题
总结
17. 总复习
总复习
复习 红帽系统管理一
第 1 章 红帽企业 Linux 入门
描述和定义开源、Linux、Linux发行版和红帽企业 Linux
定义和解释 Linux 用途、开源、Linux 发行版和红帽企业Linux
第 2 章 访问命令行
登录Linux 系统并从shell 运行简单的命令
登录Linux 系统并使用shell 运行简单的命令
使用GNOME 桌面环境登录Linux 系统,并在终端程序中从shell 提示符运行命令
从shell 提示符运行命令时,使用Bash 快捷键来节省时间
第 3 章 从命令行管理文件
从 Bash shell 中,复制、移动、创建、删除和组织文件
描述Linux 如何组织文件,以及文件系统层次结构中各种目录的用途
指定文件的绝对位置和相对于当前工作目录的位置,确定并更改工作目录,以及列出目录的内容
创建、复制、移动和删除文件及目录
使用硬链接和符号(或“软”)链接,使多个文件引用同一文件
通过使用Bash shell 的模式匹配功能,高效地运行影响很多文件的命令
第 4 章 在红帽企业Linux 中获取帮助
通过利用本地帮助系统来解决问题
在本地Linux 系统手册页中查找信息
第 5 章 创建、查看和编辑文本文件
通过命令行输出或在编辑器中创建、查看和编辑文本文件
通过shell 重定向将标准输出或标准错误保存到文件中,并利用管道处理多个命令行程序的输出
使用vim 编辑器从命令行创建和编辑文本文件
设置shell 变量以运行命令,并编辑Bash 启动脚本以设置shell 和环境变量,从而修改shell 以及从shell 运行的程序的行为
第 6 章 管理本地用户和组
创建、管理和删除本地用户和组,以及管理本地密码策略
描述Linux 系统上用户和组的用途
切换到超级用户账户来管理 Linux 系统,并使用sudo 命令授予其他用超级用户访问权限
创建、修改和删除本地用户账户
创建、修改和删除本地账户
为用户设置密码管理策略,并手动锁定和解锁用户账户
第 7 章 控制对文件的访问
设置文件的Linux 文件系统权限,并接受不同权限设置的安全效果
列出文件和目录的文件系统权限,并解释这些权限对用户和组访问权限的影响
利用命令行工具更改文件的权限和所有权
控制用户创建的文件的默认权限,解决特殊权限的影响,并使用特殊权限和默认权限来设置在特定目录中创建的我呢见的组所有者
第 8 章 监控和管理 Linux 进程
评估和控制在红帽企业 Linux 系统上运行的进程
确定系统上运行的程序的状态、资源使用情况和所有权,以进行控制
使用Bash 作业控制来管理从同一终端会话启动的多个进程
使用命令来中止进程和与进程通信,定义守护进程的特征,以及停止用户会话和进程
定义负载平均值并确定资源密集型服务器进程
第 9 章 控制服务和守护进程
使用systemd 服务来控制和监控网络服务与系统守护进程
列出有systemd 服务和套接字单元启动的系统守护进程和网络服务
使用systemctl 控制系统守护进程和网络服务
第 10 章 配置和保护 SSH
使用 OpenSSH 配置远程系统上的安全命令行服务
使用ssh 命令登录远程系统并允许命令
配置用户账户以使用基于密钥的身份验证,从而无需密码就能安全第登录远程系统
禁止直接以root 身份登录,并为OpenSSH 服务禁用基于密码的身份验证
第 11 章 分析和存储日志
查找和准确解读系统事件日志,以满足故障排除之需
描述红帽企业Linux 用于记录事件的基本日志架构
解读相关syslog 文件中的事件,以排除故障或查看系统状态
查找和解读系统日志中的条目,以排除故障或查看系统状态
配置系统日志,以在服务器系统重启时保留事件记录
利用网络时间协议(NTP)维护准确的时间同步,并且配置时区以确保系统日志和日志记录的事件标有正确的时间戳
第 12 章 管理网络
配置红帽企业Linux 服务器上的网络接口和设置
描述服务器关于网络寻址和路由的基本概念
使用命令行实用程序,测试并检查当前的网络配置
使用nmcli 命令管理网络设置和设备
通过编辑配置文件修改网络配置
配置服务器的静态主机名及其名称解析,并测试其结果
第 13 章 归档和传输文件
将文件归档,并从一个系统复制文件到另一系统
使用tar 将文件和目录归档到压缩文件中,以及提取现有tar 存档的内容
通过SSH,与远程系统安全地来回传输文件
高效、安全地将本地文件或目录内容与远程服务器副本同步
第 14 章 安装和更新软件包
从红帽和DNF 软件包存储库下载、安装、更新和管理软件包
将系统注册到你的红帽账户,并使用红帽订阅管理为其分配软件更新和支持服务的权力
说明如何以RPM 软件包形式提供软件,并调查 DNF 和 RPM 安装的系统软件包
使用dnf 命令查找、安装和更新软件
启用和禁用红帽或第三方DNF 存储库
第 15 章 访问Linux 文件系统
访问、检查和使用附加至 Linux 服务器的存储上的现有文件系统
识别文件系统层次结构中的目录,以及存储该目录的设备
通过在文件系统层次结构中添加和删除文件系统,访问文件系统的内容
通过 find 和 locate 命令搜索已挂载文件系统的文件
第 16 章 分析服务器和获取支持
在基于Web 的管理界面中调查和解决问题,并从红帽获取支持以帮助解决问题
激活Web 控制台管理界面,以远程管理和监控红帽企业Linux 服务器性能
描述和使用红帽客户门户上的资源,并在红帽文档和知识库中查找信息
使用Red Hat Insights,分析服务器问题,修复或解决问题,以及确认解决方案是否奏效
开放研究实验:从命令行管理文件
开放研究实验:管理用户和组、权限以及进程
开放研究实验:配置和管理服务器
开放研究实验:管理网络
开放研究实验:挂载文件系统和查找文件
收藏
0 条评论
下一页