RHCSA认证-Linux(RHel9)-Linux入门
文章目录
- 概要
- 一、创建、查看和编辑⽂本
- 1.1 输出重定向
- 1.2 vim编辑器
- 1.3 shell 变量
- 1.5 获取帮助
- 二、管理本地用户和组
- 2.1 描述用户
- 2.2 切换用户和赋权
- 2.3 用户管理
- 2.4 用户组管理
- 2.5 密码策略
- 三、控制文件访问
- 3.1 列出文件和文件权限
- 3.2 更改文件权限和拥有者
- 3.3 控制默认权限
- 3.4 使用命令行工具管理文件
- 3.5 制作文件间的链接
- 3 .6 环境变量
- 3.7 附
- 四、监控和管理程序
- 4.1 查看进程
- 4.2 作业控制
- 4.3 终止进程
- 4.4 监控活动进程
- 4.5 列出系统守护进程
- 4.6 控制系统守护进程
- 五、OpenSSH 服务
- 5.1 远程服务
- 5.2 免密登录
- 5.3 禁止root 直接登录
- 六、分析和存储日志
- 6.1 日志体系机构
- 6.2 查看系统日志
- 6.3 保留系统日志
- 6.3 保持准确的时间
- 七、RHEL 网络管理
- 7.1 测试和解释网络配置
- 7.2 管理网络设置和设备
- 7.3 配置文件修改网络配置
- 八 归档与系统间复制文件
- 8.1 查看大小
- 8.2 打包
- 8.3 压缩
- 8.4 复制
- 九 安装与升级软件包
- 9.1 rpm
- 9.2 dnf
- 十 Linux 文件系统
- 134一、提高命令行生产效率
- 134二、Linux 计划任务
- 2.1、例:定时同步任务
- 134 三、系统调优
- 3.1 tuned简介
- 3.2 tuned使用
- 134 四、管理SELinux
- 4.1 SeLinux 工作模式
- 4.2 调整Selinux的Contexts
- 134 五、 管理基本存储
- 5.1 分区
- 5.2 格式化 挂载
- 134 六、 逻辑卷管理
- 6.1 lv ,vg,pv简介
- 6.2创建,扩展逻辑卷
- 134 七、 访问NFS网络
- 7.1 NFS 简介
- 7.2 NFS安装配置
- 7.3 自动挂载网络
- 134 九、管理网络安全
- 9.1 firewall-cmd命令
- 9.2 管理SeLinux端口标签
- 134 十一、运行容器
- 11.1 容器技术介绍
- 11.2 容器管理工作
- 11.3 容器镜像
- 11.4 配置容器注册表
概要
红帽认证考试全上机实操,一天考完,上午的RHCSA认证是三小时,对应的是RH124和RH134的课程内容,而下午的RHCE认证是四小时,对应的是RH294课程内容。考试后的成绩正常会在72小时内公布,满分均为300,达到210分合格,会连同成绩和电子证书发送到考试邮箱中。
红帽认证架构师(Red Hat Certified Architect,RHCA)属于Linux系统的最高级别认证,是公认的Linux操作系统顶级认证,考生需要在获得RHCSA与RHCE认证后再完成5门课程的考试才能获得RHCA认证,因此难度最大,备考时间最长,费用也最高(考试费约在1.8万元~2.1万元人民币)。该认证考察的是考生对红帽卫星服务、红帽系统集群、红帽虚拟化、系统性能调优以及红帽云系统的安装搭建与维护能力。
RHCSA
1.1、红帽系统管理阶段一:(RH124) RH124主要学习系统管理的基础知识,例如安装系统、用户管理、网络管理、远程管理以及软件管理等等
1.2、红帽系统管理阶段二:RH134 RH134主要学习编写Shell自动化脚本、磁盘管理、计划任务、系统安全维护等等
RHCE
1.3、红帽系统管理阶段三:Linux 自动化(RH294) RH294主要学习ansible自动化管理工具的使用方法。专为需要自动执行置备、配置、应用部署和编排的 Linux®
系统管理员和开发人员设计。了解如何在管理工作站上安装和配置 Ansible®;使托管主机做好自动化的准备;编写 Ansible Playbook 以自动执行任务;运行 playbook 以确保服务器正确部署和配置
2、RHCA 诊断和故障排除专家考试:RH342
以考促学,红帽认证学习,Linux全面系统学习最好的方式,没有之一
一、创建、查看和编辑⽂本
1.1 输出重定向
标准输⼊、标准输出和标准错误
/dev/null 回收站
echo hell0 >test.txt 2>>erro.txt #正确输入test,错误输入erro
Echo hell0 >test.txt 2>&1 # 错误输入和1一样
Echo hell0 &>test.txt # 错误输入合并
echo heollo > /dev/pts/3 # 输入到另一终端
cat -n ClassPrep.txt | head -n 9 |tail -n 2 # 取8,9行
ls --help | tee bak.txt | less # 管道
1.2 vim编辑器
:w /tmp/filenew # 另存为
:%s/a/t/g # 全局(g)把a替换(s)t
:set sw=2 #修改缩进行
V#进入visual模式
G#选中到行尾部或方向箭头选择
>#向右缩进
.#重复上一次操作
#1.Ctrl+v 2.下箭头到(需移动的内容) 3.Shift+i 首行移动 4.Esc (其他行移动)
#或 1.v 2.下箭头 3.Shift+>(整体移动) 4..(重复执行)u(撤回上次)
1.3 shell 变量
Shell是一个命令行解释器,它接受应用程序/应用命令,调用操作系统内核。
Shell是一个功能强大的编程语言,易编写,易调试,灵活性强。
在Linux系统中,用户可以通过查看/etc/shells 文件来了解可用的Shell解释器,
并根据个人喜好或特定用途进行选择。
此外,用户还可以通过命令echo $SHELL来查看当前使用的Shell解释器。
sh 与bash的关系通过ll /bin/ |grep bash 注意bin/
history 查看历史命令,
~/.bash_history 文件保存历史命令。
logout 后才将当前的history保存到~/.bash_history中。
history -w 将缓存中的命令保存到~/.bash_history文件中。
/etc/profile HISTSIZE=1000 配置保存的条数。可通过echo $HISTSIZE
环境变量 env #全局 set #临时
临时和永久:
# 临时:当前会话当中,在shell中直接定义
GREETING="Hello, World!" #注意,等号两边不能有空格
$GREETING
SET | less /GREETING # 查询set
# 永久:定义在文件当中
# sh文件
vim run.sh
#! /bin/bash #脚本以#!/bin/bash开头,指定解释器。
echo "hello world"
echo "$HOSTNAME"
针对用户和全局
用户:~/.bashrc
全局:/etc/bashrc /etc/profile.d/
脚本以#!/bin/bash开头,指定解释器。
临时加入路径,PATH=$PATH
针对用户
针对全局
1.5 获取帮助
(1)man手册
man man
使用man命令时,如果不加数字参数,它会首先搜索第一节的内容。例如,执行man ls将会显示第一节中关于ls命令的手册,而不会显示其他章节中同名但不同功能的命令或函数的信息。如果需要查看特定章节的手册,可以在man命令后加上相应的章节数字和斜杠,如man 5 passwd来查看/etc/passwd文件格式的说明。
此外,man命令提供了多个选项来帮助用户更好地搜索和浏览手册页,如-k用于搜索包含指定关键字的手册页,-a用于显示所有章节的匹配项,而-f则类似于whatis命令,显示给定关键字的简短描述信息。
(2)RPM包文档
# 查询
dnf search manual
#安装
dnf -y install httpd-manual.noarch
# 查询
rpm -ql httpd-manual-2.4.51-7.el9_0.noarch
......
cat /etc/httpd/conf.d/manual.conf
# This configuration file allows the manual to be accessed at
# http://localhost/manual/
Alias /manual /usr/share/httpd/manual
<Directory "/usr/share/httpd/manual">
Options Indexes
AllowOverride None
Require all granted
RedirectMatch 301 ^/manual/(?:da|de|en|es|fr|ja|ko|pt-br|ru|tr|zh-cn)(/.*)$ "/manual$1"
</Directory>
......
# 测试
curl http://localhost/manual/
# 服务启动
systemctl status httpd.service
systemctl enable --now httpd.service
# 防火墙
firewall-cmd --list-all
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
防火墙设置后 localhost改为servera
(3)官方文档
二、管理本地用户和组
2.1 描述用户
id 0 超级用户, 1000及以上普通用户,0-1000 程序用户
2.2 切换用户和赋权
'-' = '-l' = '-login'
切换用户最好带上'-',
环境变量也一起带上
visudo
......
#用户
100 root ALL=(ALL) ALL
#组
109 %student ALL=(ALL) NOPASSWD: ALL #student组 所有主机所有用户,免密所有权限
......
[student@servera ~]$ sudo -i
[root@servera ~]# tail /var/log/messages
2.3 用户管理
[root@servera lih] useradd -u 1007 -g 1000 -c mi
-d /home/mtest -s /sbin/nologin haha
# 新增用户
cat /etc/passwd
......
haha:x:1007:1000:mi:/home/mtest:/sbin/nologin
......
usermod -l mm haha -u 1008 -g 1001 -d /home/mtest2
#修改用户名等。
#发现修改用户目录/home/test2后 没用增加目录,当递归-r 删用户时没用删掉。
......
mm:x:1008:1001:mi:/home/mtest2:/sbin/nologin
......
userdel -r haha # 递归删用户
# 删除用户及其主目录:如果想要删除用户的同时
#一并删除该用户的家#目录,可以使用-r选项,即
userdel -r username。
#这会删除用户的家目录以及其中的文件。
# linux账号密码分开保存
# window (sam同一文件)
ls /etc/passwd /etc/shadow
2.4 用户组管理
usermod -G gdm test1 # -G 附加组 将用户添加到了额外的组内,#修改/etc/group成员
usermod -aG gdm test1 # 两个以上
gpasswd -a test1 gdm # 添加test1在附件组中 和上面一样
gpasswd -d test1 gdm # 删test1从附件组中
usermod -g gdm test2 # -g 主要组 修改/etc/passwd 中group组
2.5 密码策略
在Linux系统中,man命令是用于显示系统手册页(Manual pages)的工具,它提供了详细的命令、函数和配置文件的信息。手册页被分为不同的节(sections),每个节覆盖不同类型的主题。具体来说:
第1节:用户命令,即普通的可执行程序或shell命令。
第2节:系统调用,也就是内核提供的函数。
第3节:库调用,指的是程序库中的函数。
第4节:特殊文件,通常位于 /dev 目录下的设备文件。
第5节:文件格式和约定,包括系统使用的文件和文件系统的格式。 当您使用man 5加上某个命令或关键字时,比如man 5
passwd,您将会查看到与/etc/passwd文件相关的信息,这属于第5节的内容范畴。通过这种方式,您可以获取关于特定命令或主题的详细信息,了解其用法、选项以及相关约定。
> useradd tom
> cat /etc/shadow|tail -1
#无密码
......
tom:!!:19892:0:99999:7:::
......
>echo mima|passwd tom --stdin
......
Changing password for user tom. passwd: all
authentication tokens updated successfully.
......
> cat /etc/shadow |tail -1
#有密码
......
tom:$6$QuhJwvmGp18yRhwQ$.rT.:19892:0:99999:7:::
......
> passwd -d tom
......
Removing password for user tom.passwd: Success
......
>cat /etc/shadow |tail -1
# 空密码
......
tom::19892:0:99999:7:::
......
tom:!!:19892:0:99999:7:::
在/etc/shadow文件中,每个用户都有一个对应的记录行,这些字段包括登录名、加密口令、最后一次修改时间、最小时间间隔、最大时间间隔、警告时间、不活动时间以及失效时间。最小时间间隔:这个字段决定了两次密码修改之间所需的最小天数。例如,如果设置为7,用户不能在修改密码后的一周内再次修改密码。这可以防止用户通过频繁更改密码来尝试攻击系统或绕过某些安全限制。
最大时间间隔:该字段表示密码保持有效的最大天数。如果设置为90,用户必须在90天内更换密码,否则账户会被锁定或密码自动失效。这促使用户定期更新密码,减少密码被盗用的风险。
chage -d 0 -m 2 -M 90 -W 10 tom
cat /etc/shadow |tail -1
#修改密码策略 修改时间0,修改最小时间间隔2天,最大90天,警告在失效前10天。
......
tom::0:2:90:10:::
......
vim /etc/login.defs #密码配置默认值
......
131 PASS_MAX_DAYS 99999
132 PASS_MIN_DAYS 0
133 PASS_WARN_AGE 7
......
三、控制文件访问
上节讲用户分配不同的隶属组,
本节讲文件对不同用户,组分配权限
3.1 列出文件和文件权限
[root@servera lih]ls -ld /tmp/lih/ #-d文件夹
drwxr-xr-x. 3 root root 4096 Jun 17 22:29 /tmp/lih/
[root@servera lih]ls -l /tmp/lih # 文件
total 12
-rw-r--r--. 2 root root 164 Jun 16 22:47 add.txt
3.2 更改文件权限和拥有者
suid 拥有所有者权限,
suid= 执行命令 使用该命令所属用户的身份执行 u+s 4
sgid =该目录中新建文件,继承文件夹所属组 g+s 2
stick =root和拥有者可以删除和修改 o+t 1
sgid 统一组权限.
/tmp文件夹下的权限
3.3 控制默认权限
当umask设置为0001时,新建文件的权限是666,而不是665,是因为系统默认不允许文件拥有执行权限,如果需要为文件添加执行权限,可以使用chmod命令手动设置
3.4 使用命令行工具管理文件
mv cp 默认会覆盖原有文件,rm默认删除文件,建议使用safe-rm
3.5 制作文件间的链接
创建硬链接 ln /path/to/source /path/to/dest
创建软链接 ln s /path/to/source /path/to/dest
硬连接和软连接是Linux系统中用于文件共享和管理的两种不同的链接方式。具体区别分析如下:
硬连接(HardLink):硬连接允许一个文件拥有多个有效路径名,它们都指向同一个索引节点(inode),并且共享相同的数据块。这意味着所有的硬链接实际上是同一个文件的不同命名。删除一个硬链接并不影响其他硬链接,只有当最后一个硬链接被删除时,文件系统才会释放该文件的数据块。
软连接(Symbolic Link):软连接又称为符号连接,类似于Windows系统中的快捷方式。软链接实际上包含另一文件的位置信息,它通过路径指向另一个文件。软链接可以跨文件系统,而且不同文件系统上的两个文件可以创建软链接。如果原始文件移动了位置或者被删除,软链接将会失效。
综上所述,硬连接是通过多个路径名指向同一文件,而软连接则通过一个特殊的文件来存储另一个文件的路径信息。硬连接更加紧密地与原文件关联,而软连接则提供了更多的灵活性,但也依赖于原始文件的存在。软连接可以跨网络,硬链接同一个索引点inode,用于其他用户可读。
3 .6 环境变量
环境变量
临时和永久:
# 临时:当前会话当中,在shell中直接定义
GREETING="Hello, World!" #注意,等号两边不能有空格
$GREETING
SET | less /GREETING # 查询set
# sh文件
vim run.sh
#! /bin/bash
echo "hello world"
echo "$HOSTNAME"
# 永久:定义在文件当中
针对用户和全局
用户:~/.bashrc
全局:/etc/bashrc /etc/profile.d/
临时文件,run.sh
针对用户
针对全局
[root@servera ~]# echo the time is $(date +%A)
grep na /etc/resolv.conf| grep 250 > list
3.7 附
which、whereis、locate和find都是Linux操作系统中用于查找文件或命令位置的实用工具。
which:线性搜索PATH中的目录,返回第一个匹配的可执行文件路径。简单快速,但只能找到可执行文件
whereis:利用数据库文件进行搜索,速度相对较快,但可能无法实时反映最新文件变动。但不能搜索普通文件,也可能不是最新的文件信息。
locate:不搜索文件系统,而是搜索一个数据库/var/lib/locatedb,因此速度非常快,但不能找到最近修改或新创建的文件。
find:直接在文件系统中搜索,可以提供最精确的结果,但效率较低,资源消耗大。
[root@servera ~]grep -r -E '(^|\s)30d($|\s)' /home/user/documents # 默认是在当前路径递归查找
# 内容30d 前后为空格
#/usr/lib/tmpfiles.d/
#/usr/lib/tmpfiles.d/tmp.conf:q /var/tmp 1777 root root 30d
[root@servera ~]locate tmp |grep tmp.conf
#/usr/lib/tmpfiles.d/systemd-tmp.conf
#/usr/lib/tmpfiles.d/tmp.conf
[root@servera ~]whereis vim
#vim: /usr/bin/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
[root@servera ~]which vim
#/usr/bin/vim
[root@servera ~]find / -name vim
#/usr/share/vim
#/usr/bin/vim
[root@servera ~] apropos grep swap # Linux某个命令忘记了,只记得其中几个字母怎么查
#查看内容
cat /etc/ssh/ssh_config |grep -v '^#'|grep -v '^$'
#-v 取相反 ^匹配以某个字符串开头 $匹配以某个字符串结尾
#查找服务
systemctl list-units -t service |grep ssh # - 简写
systemctl list-unit-files -t service |grep ssh
#/etc中查找220 错误除外 根目录下内容会很多
grep -r 220 /etc 2>/dev/null
# 模糊查找服务
systemctl list-units |grep tmp
dnf provieds systemd-tmpfiles-clean.timer
# 模糊查找安装包
dnf list |grep dhcp
#已安装的配置文件
rpm -qa |grep http
rpm -qc httpd-2.4.51-7.el9_0.x86_64
# /etc/httpd/conf/httpd.conf
# 查询是statics,非安装包
systemctl status systemd-tmpfiles-clean.timer
# 查询服务是哪个包安装的两种方式
1.find /usr/bin -name r* # 模糊查找命令
which crond #/usr/sbin/crond
rpm -qf /usr/sbin/crond # 文件的对应的包
2.dnf provides crond
四、监控和管理程序
4.1 查看进程
4.2 作业控制
4.3 终止进程
4.4 监控活动进程
[root@servera ~]# ps efo uid,nice,time,cmd #显示当前用户进程,O列出显示内容
4.5 列出系统守护进程
ps aux | head -2
systemctl list-units --type=service | head # --全拼
systemctl list-units -t service |grep ssh # - 简写
systemctl list-unit-files -t service |grep ssh
dnf search ssh
rpm -ql openssh-server.x86_64 | grep ssh
4.6 控制系统守护进程
systemctl status atd.service # 查询状态
systemctl stop atd.service # 停止状态
systemctl disable atd.service # 开机自启动关
systemctl enable --now atd.service #开机自启动,--now 立即启动
systemctl mask atd #禁用守护进程启动
systemctl stop atd #但并没有停止,可停止
systemctl start atd #但启动不了
systemctl enable atd #自启动设置不了
systemctl unmask atd # 取消禁用
systemctl enable --now atd # 开启启动和自启动
五、OpenSSH 服务
5.1 远程服务
ssh serverb
ssh root@servera cat /tmp/lih
5.2 免密登录
客户端 私钥位置 : ~/.ssh/id_rsa
服务端 公钥位置
#AuthorizedKeysFile 是一个配置选项,
#用于指定 SSH 服务器上存储授权密钥的文件路径。
#这个文件通常包含允许用户通过 SSH 登录的公钥。
vim /etc/ssh/sshd_config # 查看密钥文件路径
······
47 AuthorizedKeysFile .ssh/authorized_keys
······
cat ~/.ssh/authorized_keys # 查看密钥
基于密钥认证的配置
ssh-keygen # 生产密钥
ssh-copy-id centos5 # 不写默认为root用户
复制到centos5 中
发现不同用户还需再复制?
5.3 禁止root 直接登录
查询到ssh配置文件
vim /etc/ssh/sshd_config
......
#PermitRootLogin yes
PermitRootLogin no # 禁止root远程登录
PasswordAuthentication no # 禁止密码登录
......
systemctl restart sshd
六、分析和存储日志
6.1 日志体系机构
systemctl status rsyslog.service
ls /var/log
systemctl status systemd-journald
ls /run/log/journal
6.2 查看系统日志
vim /etc/rsyslog.conf
......
46 *.info;mail.none;authpriv.none;cron.none
/var/log/messages
50 authpriv.notice /var/log/test/no
51 authpriv.info /var/log/test/in
......
systemctl restart rsyslog.service
logger -p authpriv.notice haha
logger -p authpriv.info haha
logger haha
6.3 保留系统日志
journalctl -S yesterday -u sshd -n
#昨天(S)sshd(服务)最后5行(n)时间也可以用--since表示
journalctl --since '2024-06-18 00:00:00' --until now \
-u sshd -n
journalctl -f #跟随
systemctl list-units |grep jour* # 查具体服务
systemctl status systemd-journald.service #查配置
man 5 journald.conf #查具体配置
vim /etc/systemd/journald.conf #根据文档配置
......
17 [Journal]
18 Storage=persistent
19 #Compress=yes
......
reboot
#查看/var/log/journal/则生效了
ls /run/log/journal/ /var/log/journal/
6.3 保持准确的时间
timedatectl set-timezone Asia/Shanghai
s’ynchronize 同步去掉syn
yum search ntp
dnf provides chronyd
rpm -qc chrony.x86_64
vim /etc/sysconfig/chronyd
七、RHEL 网络管理
7.1 测试和解释网络配置
ip a
ip route #网关
ss -antup #服务all number tcp udp p
“lo”通常代表回环接口(loopback interface),而“eth0”则指代系统中的第一个以太网接口。
“lo”接口是一个虚拟的网络接口,它的主要作用是让操作系统能够与自己通信。通常情况下,它的IPv4地址被设置为127.0.0.1,子网掩码为255.0.0.0。这个地址也被称为本地主机地址,用于在本机内部进行网络通信测试或者系统服务之间的通信。由于“lo”是一个虚拟的接口,所以它不像物理网卡那样有实体的硬件地址(MAC地址)。
相对地,“eth0”表示的是第一个以太网接口,也就是第一个连接到网络的物理或虚拟网卡。每个以太网接口都对应一个硬件网卡(一个MAC地址),其工作由相应的驱动程序控制。如果系统中存在多个以太网接口(如eth1、eth2等),这可能意味着除了物理网卡之外,还有无线网卡或多个虚拟网卡存在。
7.2 管理网络设置和设备
systemctl status NetworkManager
nmcli connection show
nmtui # 图形画配置
nmcli con up name #重新生效
7.3 配置文件修改网络配置
域名解析
cat /etc/hosts #本地解析
cat /etc/resolv.conf #域名解析配置
host servera#主机解析
nslookup servera# 域名解析
# 以上是NetworkManager启动时生效
/etc/NetworkManager/system-connections/
grep -r '220$' /etc 2>/dev/null #查找220内容结尾的文件
find / -name *resolv.conf
cat /run/NetworkManager/resolv.conf
八 归档与系统间复制文件
du和df命令都被用于获得文件系统大小的信息:
df用于报告文件系统的总块数及剩余块数,df命令反映的实际情况包含了用户数据(文件及目录)和Meta Data du -s
/用于报告文件系统使用的块数,du -s命令返回的值反映了分配给文件及目录的磁盘块数
8.1 查看大小
#显示的是文件或目录实际使用的磁盘空间,
#并以人类可读的格式展示每个项目的大小 -h
df -h /boot
#显示的是文件系统的总空间、已使用空间和剩余空间,
#同样以人类可读的格式展示 -h
du -sh /boot
8.2 打包
tar -cf boot.rar /boot/
#c创建create f文件
tar -xf boot.rar -C /tmp
#x提取extract f文件 -C change directory
tar -tf boot.tar
#t查看list
tar --help |grep gzip
tar -czf boot.rar.gz /boot/ #以gzip格式压缩
8.3 压缩
bzip2 和 gzip ,xz用于文件压缩的命令行工具,它们在Unix和类Unix系统中非常常用。工具的命名来源于它们所使用的压缩算法:BZIP2 和GZIP,LZMA2
grep:当需要快速搜索且模式相对简单时,grep 是一个很好的选择。它也适用于那些不支持扩展正则表达式的环境。
egrep:当搜索需要复杂模式匹配时,egrep 更加适用。它可以处理更复杂的逻辑,如多选一(|)和分组(())等
man tar |egrep 'bzip2|gzip|xz' #查看压缩格式
tar -cJf boot.rar.xz /boot
tar -cJf boot.rar.xz /boot
#或file查看文件类型
tar -xf #reh7后解压 -x自动识别格式
8.4 复制
scp(Secure Copy)、sftp(SSH File Transfer Protocol)和rsync(Remote Synchronization)都是用于Linux系统中文件传输的命令
scp和sftp更适合一次性的文件传输任务,而rsync则更适合定期的文件同步和备份
# 命令位置
[root@lh ~]# which sftp
/usr/bin/sftp
[root@lh ~]# which scp
/usr/bin/scp
[root@lh ~]# which rsync
/usr/bin/rsync
# 哪个软件包安装
[root@lh ~]# rpm -qf /usr/bin/sftp
openssh-clients-7.4p1-21.el7.x86_64
[root@lh ~]# rpm -qf /usr/bin/scp
openssh-clients-7.4p1-21.el7.x86_64
[root@lh ~]# rpm -qf /usr/bin/rsync
rsync-3.1.2-10.el7.x86_64
[root@lh ~]# rpm -qc openssh-server
/etc/pam.d/sshd
/etc/ssh/sshd_config
/etc/sysconfig/sshd
[root@lh ~]# grep sftp /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server
#则ssh 启动的情况下就可以使用sftp
案例
scp:
scp /test.txt root@172.16.70.71:/home/newtest.txt
#用户需要将本地文件/test.txt上传到这台服务器的/home目录下,并更名为newtest.txt
sftp:
#可以首先使用sftp命令连接到服务器,
#然后使用类似mkdir, cd, put, get等指令进行操作
rsync:
rsync -avz /data user@target_server:/data
#此命令将源服务器上的/data目录内容同步到目标服务器上的同名
#目录,-avz选项表示以归档模式进行并压缩数据传输,提高效率。
九 安装与升级软件包
9.1 rpm
rpm命令主要用于管理RPM(Red Hat Package
Manager)软件包,这些软件包包含了用于Linux系统的各种应用程序和组件。rpm命令可以处理软件的安装、升级、查询、验证和删除等任务
9.2 dnf
YUM(Yellowdog Updater Modified)和DNF(Dandified
YUM)是两种在Linux系统中广泛使用的软件包管理器。这两种工具都基于RPM(Red Hat Package Manager),旨在简化软件包的安装和更新过程,同时自动解决依赖问题。DNF是YUM的一个分支,意在替代YUM成为Fedora系统的默认软件包管理器。DNF提供了改进的性能和更强大的功能,如支持模块化内容、更佳的依赖解决机制
每个.repo文件定义了一个或多个软件仓库的配置,其中主要部分包括baseurl、enabled、gpgcheck和priority等参数。
如果priority参数未被设置,YUM默认将依照/etc/yum.repos.d/目录下的文件的排列次序来决定优先级。首先被列出的文件将被优先使用 cat /etc/yum.repos.d/*
dnf clean all # 清除缓存
dnf repolist 'chro*' #
dnf search http # 查找
yum provides http
dnf history
访问阿里云官网获取Red Hat镜像地址
用文本编辑器/etc/yum.repos.d/redhat.repo
[rhel9-baseos]
name=Aliyun RHEL 9 BaseOS
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0
enabled=1
[rhel9-appstream]
name=Aliyun RHEL 9 AppStream
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/
gpgcheck=0
enabled=1
十 Linux 文件系统
[root@lh ~]blkid # UUID和type
[root@lh ~]lsblk -f #type
[root@lh ~]df -hT #type
man find |grep find.*exec # 查看案例
134一、提高命令行生产效率
for lih in {1..9};do echo "lih$lih";done
# 反撇(Esc'键下)输出命令内容
for user in `cat /etc/passwd | cut -d : -f 1 |head `; do echo $user;done;
if [ $? -eq 0 ];then echo ok;else echo not ok;fi
134二、Linux 计划任务
crontab -e 所编辑的文件通常位于/var/spool/cron/目录下
# /etc/crontab
# 分 时 天 月 周
# 每小时
0 * * * * command 表示每小时的第0分钟执行 command
# 每天
0 0 * * * command 表示每天的0点0分执行 command
#连续执行
*/5,则表示从该时间的每个第 n 个单位开始执行。
#具体时间执行
如 1,3,5,1-5
crontab -e -u uername 给别人安排 仅超级用户
2.1、例:定时同步任务
每分钟把servera /etc 同步到serverb /mnt。步骤如:
1.在servera上生成ssh 并把密钥给serverb
2.rsync 同步任务
3.crontab 定时任务
1.
servera:
ssh-keygen
ssh-copy-id root@serverb
serverb:
vim /etc/ssh/sshd_config
...
PermitRootLogin yes
...
2.
#同步
rsync -a /etc/* root@serverb:/mnt/ #man rsync 例子-avz
#查看
ssh root@serverb ls /mnt |wc -l
3.
crontab -e
*/1 * * * * rsync -a /etc/* root@serverb:/mnt/
4.# 在servera 中写入文件观察
touch file{1..9}
#serverb 观察
ls /mnt |wc -l
# 删
crontab -r
134 三、系统调优
3.1 tuned简介
对于普通用户来说,优化Linux应用环境可能是相当具有挑战性的。它涵盖了各种领域,并且有许多参数需要考虑,比如CPU、存储、缓存策略和内存管理。尽管Linux有默认设置可以处理大多数情况和场景,但是对于高性能、高并发和高可用性系统等特殊场景,需要进行调整。本文讨论的特性是tuned,它是Linux系统中常用的一种调优服务
调优方式:
静态调整:内核参数针对整体性能预期而设置的,不会随实际负载变化而调整,但配 置简单
动态调整:tuned 守护进程会监控和收集系统各个组件的数据,并依据数据提供的信 息动态调整系统设置,达到动态优化系统的目的.
Tuned服务可以自动调整系统设置以优化性能和功耗.
3.2 tuned使用
yum install -y tuned # 安装软件包
systemctl start tuned # 启动tuned服务
systemctl stop tuned # 停止tuned服务
systemctl enable --now tuned # 设置开机自启动
systemctl enable tuned # 自启动/禁止自启动
tuned-adm recommaend # 查询推荐
tuned-adm profile throughput-performance # 开启高性能
tuned-adm active # 显示当前性能模式
tuned-adm off # 关闭
tuned服务的相关配置目录:
/usr/lib/tuned/ # 原生的性能模式
/etc/tuned # DIY的性能模式
├── active_profile # 当前的性能模式
├── bootcmdline
└── tuned-main.conf
# -20,20
nice -n -20 sleep 10000 & #直接以特定优先级安排任务
134 四、管理SELinux
4.1 SeLinux 工作模式
[root@lh ~] setenforce 0
[root@lh ~] getenforce
Permissive
[root@lh ~] setenforce 1
[root@lh ~] getenforce
Enforcing
安全标签 -Z
当一个主体Subject(如一个程序)尝试访问一个目标Object(如一个文件),SELinux安全服务器SELinux Security
Server(在内核中)从策略数据库Policy Database中运行一个检查。基于当前的模式mode,如果 SELinux
安全服务器授予权限,该主体就能够访问该目标。如果SELinux安全服务器拒绝了权限,就会在/var/log/messages中记录一条拒绝信息
# 审计日志
sealert -a /var/log/audit/audit.log
4.2 调整Selinux的Contexts
sealert -a /var/log/audit/audit.log
semanage fcontxt -a -t xxx_t 'foldel(/.*)'
restorecon -RvF /Folde
134 五、 管理基本存储
5.1 分区
MBR(Master Boot Record)和GPT(GUID Partition
Table)是两种不同的磁盘分区表格式,它们在设计、功能、支持的磁盘容量和分区数量等方面存在显著区别
在Linux系统中,fdisk和gdisk是两种常用的磁盘分区工具,它们在管理硬盘分区方面扮演着重要的角色。以下是具体介绍:
fdisk:传统的Linux磁盘分区工具,主要用于MBR分区,操作简便,适合大多数旧版系统和小型磁盘。
gdisk:作为fdisk的升级版,主要使用GPT分区类型,适用于现代操作系统和大容量磁盘,支持更多先进的特性如分区命名和错误检测。
parted是一个功能强大的磁盘分区工具,支持MBR和GPT分区表,适用于大硬盘和需要非交互式操作的场景。
fdisk /dev/vdb
partprobe /dev/vdb #生效
lsblk #查看
gdisk /dev/vdb
parted /dev/vdd mkpart primary ext3 1G 2G # 非交互
parted /dev/vdc rm 1 # 删(分区方案未删)
# 一个硬盘有且只应有一个分区方案
wipefs -a /dev/vdb # 擦去硬盘所有分区以及其分区方案
fdisk交互界面中,输入 d 选择删除分区的操作
#wipefs命令更注重于数据的安全清除,而fdisk的删除分区操作则侧重于分区表的管理
5.2 格式化 挂载
# 创建文件系统。格式化,给分区一个文件系统,
mkfs.xfs /dev/vdb1
#挂载(一次性挂载,重启丢失)
mount /dev/vdb1 /mnt
#查看
mount -a
df -h
手工挂载会消失,写入/etc/fstab 永久生效
cat /etc/fstabb
# 查看UUid
blkid
# 配置挂载
vim /etc/fstab
...
dev/vdb1 /mnt xfs defalts 0 0
...
/etc/fstab
mount -a # 先验证,在挂载
/etc/fstab文件是Linux系统中用于定义磁盘分区挂载方式和属性的配置文件。它控制着系统在启动时如何挂载文件系统,同时对于管理磁盘空间和文件系统非常关键。以下是具体介绍:
字段:这一列指定了要挂载的文件系统设备的名称或是该设备的UUID、卷标等。例如,/dev/sda1表示第一个SATA硬盘的第一个分区,而UUID=5dc08a62-3472-471b-9ef5-0a91e5e2c126则使用通用唯一标识符来标识设备。使用UUID或卷标可以避免因为添加或移除硬盘导致设备名改变的问题。
字段:挂载点是文件系统在文件系统中的挂载位置。例如,/home表示将文件系统挂载到/home目录下。挂载点必须是已经存在的目录,且通常需要有适当的读写权限以允许所有用户或特定用户访问。
字段:这一列指明了分区上的文件系统类型,如ext4、vfat、ntfs等。正确指定文件系统类型对于操作系统正确管理和使用该分区至关重要。
字段:此列提供了与挂载文件系统相关的各种选项,选项之间用逗号分隔。例如,defaults选项包含了一组常用选项,如rw(可读写)、exec(允许执行二进制文件)、nouser(只有root可以挂载)等。根据需要,还可以指定如noauto(不自动挂载)、user(允许任何用户挂载)等选项。
字段:这一列已较少使用,其设计初衷是用来决定是否让备份工具dump备份这个文件系统。一般设置为0表示不使用dump备份,设置为1表示使用。但在现代系统中,dump工具已很少使用。
字段:这一列决定了系统在启动时执行文件系统检查(fsck)的顺序。0表示不检查,1表示首先检查根文件系统,其他数字表示在根文件系统之后按照数字顺序进行检查。具有相同数字的文件系统会同时进行文件系统检查。
交换分区是硬盘上的一部分空间,用作虚拟内存扩展,旨在提高系统稳定性和处理能力
mkswap /dev/vdb1
swapon /dev/vdb1 #激活swap分区,free 查看
......
UUID=XXX swap swap defaults 0 0
......
134 六、 逻辑卷管理
6.1 lv ,vg,pv简介
逻辑卷和分区在存储管理中扮演着重要的角色。逻辑卷提供了高度的灵活性和动态管理能力,适用于需要频繁调整存储空间的场景;而分区则提供了简单明了的存储隔离和优化方法,适用于需要固定存储分配的场景。根据具体需求选择合适的存储管理方式,将有助于提高系统的效率和稳定性。
6.2创建,扩展逻辑卷
pvcreate /dev/vdb #创建pv
vgcreate lhvg /dev/vdc /dev/vdb #创建vg
vgremove -f lhvg #-f强制删
......
#Physical volume "/dev/vdb" successfully created 自动创建
#Volume group "lhvg" successfully created
......
lvcreate -n lihlv -L +1G lhvg #创建lv
#查看
pvs #或pvdisplay
vgs #或vgdisplay
lvs #或lvdisplay
lsblk #或blkid看uuid,xfs格式 或df -h
lvdisplay #看lv格式路径
mkfs.xfs /dev/lhvg/lihlv #格式化lv
mount /dev/lhvg/lihlv /mnt #临时挂载
# 增加空间
lvextend /dev/lhvg/lihlv -L +6G # 增加lv
vgextend lhvg /dev/vdd # 增加vg
lvextend /dev/lhvg/lihlv -L +4G
xfs_growfs /mnt/
#xfs_growfs扩展已挂载的XFS文件系统的大小
lvextend /dev/lhvg/lihlv -L +4G -r
#或-r 一步扩容
# 移动空间
pvmove /dev/vdb #自动随机到其他vd
134 七、 访问NFS网络
7.1 NFS 简介
NFS(Network File System)是一种网络文件系统,它允许在网络上的不同机器和操作系统之间共享文件。NFS可以在多种操作系统之间共享文件,包括Linux、UNIX和Windows
这种技术是由SunMicrosystems公司开发的,并且已经成为UNIX和类UNIX操作系统中广泛使用的文件共享解决方案。以下是 基本概念 定义:NFS通过TCP/IP网络实现文件的远程访问和共享,使得用户能够像操作本地文件一样操作网络上的文件。
工作原理:NFS基于客户端/服务器CS架构,其中NFS服务器导出(共享)文件系统,客户端则挂载这些共享并作为本地文件系统使用。
挂载点由dev换为网络设备
7.2 NFS安装配置
dnf install nfs-utils
mkdir nfsfolder
chmod 777 /opt/lih/nfsfolder/ -R
vim /etc/exports
......
#用于控制NFS客户端对共享目录的访问权限
#* 表示适用于所有客户端。
#sync 表示同步写入操作,确保数据一致性。
#ro 表示只读访问权限
/opt/lih/nfsfolder *(sync,ro)
......
# 查询服务
systemctl list-unit-files |grep nf
# 启动服务
systemctl enable nfs-server.service --now
# 测试配置文件是否正确
#-r 表示重新挂载/etc/exports中的设置 -v 表示在重新挂载时显示详细的共享目录信息
exportfs -rav
#本地测试共享
showmount -e localhost
showmount -e 172.25.250.11
7.3 自动挂载网络
134 九、管理网络安全
9.1 firewall-cmd命令
#本机已经启用的监听端口:
ss -ant
ss -tunlp
#查看防火墙的状态4
systemctl status firewalld
firewall-cmd --state
#显示
firewall-cmd --list-all
#增加服务
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port=8080/tcp --zone=public /
firewall-cmd --reload #重新载入配置
#查看防火墙开放的端口信息
firewall-cmd --list-ports
firewall-cmd --list-all
9.2 管理SeLinux端口标签
SeLinux做一个监督工作,允许或者拒绝服务使用特定端口
#添加
vim /etc/httpd/conf/httpd.conf
.....
47 Listen 801
......
#添加se审查,否则重启http报错
# 帮助手册查询增加
man semanage port |grep \#
semanage port -a -t http_port_t -p tcp 801
#查询
semanage port -l | grep http
semanage port -l |grep -E '(^|\s)80($|,)'
#重启服务,发现无法启动
#关闭selinux后可以,可以查看se日志
setenforce 0 #关闭
sealert -a /var/log/audit/audit.log #日志
semanage port -a -t PORT_TYPE -p tcp 801 #根据日志内容修改
134 十一、运行容器
11.1 容器技术介绍
11.2 容器管理工作
docker 和podman的区别
11.3 容器镜像
dnf install container-tools
11.4 配置容器注册表
附部分题:
# 查找文件
*$ find / -user jacques -exec cp -a {} /root/findfiles \;
# 查找字符串
*$ grep ng /usr/share/xml/iso-codes/iso_639_3.xml
#配置系统调优
*$ tuned-adm recommend
*$ tuned-adm profile virtual-guest
设置 root 密码
Send key, Ctrl+Alt+Del
组合键Ctrl-E,光标跳到行尾添加,空格rd.break空格console=tty0
#ctrl+x后会自动进入救援模式,提示输入密码:
Give root password for maintenance
(or press Control-D to continue): 直接回车
sh-5.1# mount | grep sysroot
*sh-5.1# mount -o remount,rw /sysroot
sh-5.1# mount | grep sysroot
*sh-5.1# chroot /sysroot
*sh-5.1# echo flectrag | passwd --stdin root
*sh-5.1# touch /.autorelabel
sh-5.1# sync