常用技能
配置网络
- 配置IP地址
使用IP命令为接口配置地址,interface-name为网卡名称。
ip addr [ add | del ] address dev interface-name
- 配置静态地址
# 配置静态IP地址
ip address add 192.168.0.10/24 dev enp3s0
# 查看配置结果,在root权限使用如下命令
ip addr show dev enp3s0
# 结果如下
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:aa:ad:4a brd ff:ff:ff:ff:ff:ff
inet 192.168.202.248/16 brd 192.168.255.255 scope global dynamic noprefixroute enp3s0
valid_lft 9547sec preferred_lft 9547sec
inet 192.168.0.10/24 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 fe80::32e8:cc22:9db2:f4d4/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 配置静态路由
静态路由,可使用 ip route add
命令在路由表中添加,使用 ip route del
命令删除。常用的 ip route
命令格式如下:
ip route [ add | del | change | append | replace ] destination-address
- 在主机地址中添加一个静态路由,在 root 权限下,使用以下命令格式:
ip route add 192.168.2.1 via 10.0.0.1 [dev interface-name]
- 在网络中添加一个静态路由,在root权限下运行以下命令格式:
ip route add 192.168.2.0/24 via 10.0.0.1 [dev interface-name]
- 通过ifcfg文件配置网络
通过在root权限下修改ifcfg文件实现,在/etc/sysconfig/network-scripts/目录中生成名为ifcfg-enp4s0的文件中,修改参数配置,示例如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.0.10
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp4s0static
UUID=xx
DEVICE=enp4s0
ONBOOT=yes
管理RPM包
RPM的全名是Red Hat Package Manager,本意是Red Hat 软件包管理。在openEuler、Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。
RPM以数据库记录的方式将需要的软件安装到Linux主机的一套管理程序,特点是将要安装的软件先编译并打包,通过包装好的软件中默认的数据库记录,记录这个软件在安装的时候需要的依赖属性模块,在用户的Linux主机安装时,RPM会先根据软件里的记录数据,查询Linux主机的依赖属性软件是否满足:
- 若满足则予以安装。
- 若不满足则不安装。
安装时将该软件的信息全部写入RPM的数据库中以便后续查询、验证与卸载。
- rpm包默认安装路径
通常情况下,RPM采用系统默认的安装路径(默认安装路径可以通过命令查询,后续章节中将会详细介绍),所有安装文件都会按照类别分散到如下表格所示的目录中。
表 1 RPM安装路径及其含义
安装路径 | 含义 |
---|---|
/etc/ | 配置文件安装目录。 |
/usr/bin/ | 可执行命令安装目录。 |
/usr/lib/ | 程序所使用的函数库保存位置。 |
/usr/share/doc | 基本软件使用手册保存位置。 |
/usr/share/man/ | 帮助文件保存位置。 |
注意: RPM包支持手动指定安装路径,但此方式不推荐使用。通过手动指定安装路径后,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需手动配置才能被系统识别)。
- rpm命令选项
操作1. 软件包RPM签名检查
Linux机器安装RPM包之前,需要检查PGP签名,确保签名的完整性和来源无问题后,使用RPM命令中的以下选项来验证有效性。
rpm --checksig nano-2.3.1-10.el7.x86_64.rpm
操作2. 安装RPM包
Linux系统中安装RPM包时,请在rpm命令中使用 -i 选项。
rpm -ivh nano-2.3.1-10.el7.x86_64.rpm
- -i : 安装软件包
- -v: 详细信息
- -h: 套件安装时列出标记
操作3. 查询已安装的RPM包
查询Linux系统中已经安装的RPM包(dnf),可以在rpm命令中使用 -q 选项。
rpm -q dnf
- -q: 查询操作
如果系统未安装给定的包,会出现以下错误信息。
# rpm -q dnf
package dnf is not installed
操作4. 查询所有已安装的RPM包
查询Linux系统中安装的所有RPM包,请在rpm命令中使用 -qa 选项。
# rpm -qa
dracut-config-rescue-055-7.oe2203sp2.x86_64
parted-3.5-1.oe2203sp2.x86_64
irqbalance-1.8.0-9.oe2203sp2.x86_64
......
注意:一般在使用 -qa 选项时,会配合管道符 “|” 一起使用,提升查找的准确率。
操作5. 查看已安装的RPM包详细信息
在rpm命令中使用 -qi 选项来验证系统中安装的RPM包的详细信息。
# rpm -qi python3
Name : python3
Version : 3.9.9
Release : 24.oe2203sp2
Architecture: x86_64
Install Date: Wed 30 Mar 2022 08:30:23 AM UTC
Group : Unspecified
Size : 35916839
License : Python
Signature : RSA/SHA1, Wed 30 Mar 2022 03:29:30 AM UTC, Key ID d557065eb25e7f66
Source RPM : python3-3.9.9-24.oe2203sp2.x86_64.rpm
Build Date : Tue 15 Mar 2022 12:00:00 AM UTC
Build Host : obs-worker1639015616-x86-0001
Packager : http://openeuler.org
Vendor : http://openeuler.org
URL : https://www.python.org/
Summary : Interpreter of the Python3 programming language
Description :
Python combines remarkable power with very clear syntax. It has modules,
classes, exceptions, very high level dynamic data types, and dynamic
typing. There are interfaces to many system calls and libraries, as well
as to various windowing systems. New built-in modules are easily written
in C or C++ (or other languages, depending on the chosen implementation).
Python is also usable as an extension language for applications written
in other languages that need easy-to-use scripting or automation interfaces.
This package Provides python version 3.
操作6. 查看未安装的RPM包所有文件
查看未安装的RPM包的文件列表,可以在rpm命令中使用 -qlp 选项。
# rpm -qlp pkgship-2.2.0-10.oe2203sp2.noarch.rpm
/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-pkgship-2.2.0-10.oe2203sp2.noarch
/etc/ima/digest_lists/0-metadata_list-compact-pkgship-2.2.0-10.oe2203sp2.noarch
/etc/pkgship/auto_install_pkgship_requires.sh
/etc/pkgship/conf.yaml
/etc/pkgship/package.ini
......
操作7. 查看未安装的RPM包依赖项
查看未安装的RPM包编译的依赖包列表,可以在rpm命令中使用 -qRp 选项。
# rpm -qRp pkgship-2.2.0-10.oe2203sp2.noarch.rpm
/bin/bash
/bin/sh
/usr/bin/python3
config(pkgship) = 2.2.0-10.oe2203sp2
python3
python3-Flask-Limiter
......
操作8. 验证所有已安装的RPM包
验证已安装的RPM包时,将包中安装的文件信息与rpm数据库中存储的包元数据中获取的文件的信息进行比较,可以通过在rpm命令中使用 -Va 选项。
# rpm -Va
S.5....T. c /root/.bashrc
.......T. c /etc/yum.repos.d/openEuler.repo
S.5....T. c /etc/issue
S.5....T. c /etc/issue.net
S.5....T. c /etc/csh.login
S.5....T. c /etc/profile
.M....G.. g /var/log/lastlog
.M....... c /boot/grub2/grubenv
......
rpm -Va命令相关输出字段及其含义:
字段 | 含义 |
---|---|
S | 文件长度发生变化。 |
M | 文件的访问权限或文件类型发生变化。 |
5 | MD5校验和发生变化。 |
D | 设备节点的属性发生变化。 |
L | 文件的符号链接发生变化。 |
U | 文件/子目录/ 设备节点的owner发生变化。 |
G | 文件/子目录/ 设备节点的group发生变化。 |
T | 文件最后一次的修改时间发生变化。 |
操作9. 查看特定文件的RPM包
在Linux上找到一个提供特定二进制文件的RPM包,可以在rpm命令中使用 -qf 选项。
# rpm -qf /usr/share/doc/pkgship
pkgship-2.2.0-10.oe2203sp2.noarch.rpm
操作10. 查看已安装RPM包中的文件
查看特定RPM包的安装文件列表,可以在rpm命令中使用 -ql 选项。
# rpm -ql dnf
/etc/bash_completion.d/dnf
/etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-dnf-4.14.0-14.oe2203sp2.noarch
/etc/ima/digest_lists/0-metadata_list-compact-dnf-dnf-4.14.0-14.oe2203sp2.noarch
/usr/bin/dnf
/usr/lib/systemd/system/dnf-makecache.service
/usr/lib/systemd/system/dnf-makecache.timer
/usr/share/doc/dnf
/usr/share/doc/dnf/AUTHORS
/usr/share/doc/dnf/README.rst
/usr/share/licenses/dnf
/usr/share/licenses/dnf/COPYING
/usr/share/licenses/dnf/PACKAGE-LICENSING
/var/cache/dnf
操作11. 查看最近安装的RPM包
Linux是一个多用户操作系统,在使用过程中,其他用户可能已经安装了部分软件包。如需在系统中找到最近安装的包,可以在rpm命令中使用 -qa --last 选项。
# rpm -qa --last
ntp-4.2.8p15-11.oe2203sp2.x86_64
ntpstat-0.6-4.oe2203sp2.noarch
ntp-help-4.2.8p15-11.oe2203sp2.noarch
操作12. 只查看已安装RPM包的文档
可以从Linux Man页面获得任何命令的帮助(/usr/share/doc/Package_Name-Version_Number/docs* 文档存放路径),查看安装的RPM包相关联的文档列表,请在rpm命令中使用 -qdf 选项,并输入二进制文件路径。
# rpm -qdf /usr/bin/grep
/usr/share/doc/grep/NEWS
/usr/share/doc/grep/README
/usr/share/doc/grep/THANKS
/usr/share/doc/grep/TODO
/usr/share/info/grep.info.gz
/usr/share/man/man1/egrep.1.gz
/usr/share/man/man1/fgrep.1.gz
/usr/share/man/man1/grep.1.gz
操作13. 升级已安装的RPM包
通过使用 -Uvh 选项和rpm命令,可以轻松地将已经安装的rpm包升级到最新版本。
# rpm -Uvh pkgship-2.2.0-10.oe2203sp2.noarch.rpm
Preparing... ################################# [100%]
注意:升级安装的RPM包时,会删除旧RPM包,安装新RPM包。
操作14. 移除已安装的RPM包
删除安装在系统上的rpm包,请在rpm命令中使用 -ev 或 -e 选项。
rpm -ev pkgship
操作15. 重建损坏的RPM数据库
在尝试使用yum update命令更新系统时,可能会收到一条错误消息(RPM数据库已损坏),如果收到该信息,请在RPM命令中使用 --rebuilddb 选项。
rm /var/lib/rpm/__db*
rpm --rebuilddb
操作16. 检查特定包的漏洞是否已修复
可以通过在rpm命令中使用 --changelog 选项并输入相应的CVE来实现。
rpm -q --changelog python-2.6.6 | grep -i "CVE-2019-9636"
操作17. 导入RPM GPG密钥
默认情况下,当向Linux系统添加新的存储库时,GPG密钥将自动导入。同时,也可在RPM命令中添加**--import** 手动导入RPM GPG密钥,用于从存储库下载时检查包的完整性。
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-OpenEuler-24.03-LTS
- dnf命令
dnf命令及其相关概述
命令 | 概述 |
---|---|
repolist | 显示已配置的软件repo源。 |
install | Linux上安装单个或多个软件包。 |
upgrade | 升级Linux上的一个或多个软件包。 |
list | 列出一个或一组软件包。 |
info | 显示关于软件包或软件包组的详细信息。 |
updateinfo | 显示关于包的公告信息。 |
search | 在软件包详细信息中搜索指定字符串。 |
check-update | 检查是否有软件包升级。 |
remove | 从系统中移除一个或多个软件包。 |
reinstall | 重装一个包。 |
downgrade | 降级软件包。 |
autoremove | 删除所有原先因为依赖关系安装的不需要的软件包。 |
distro-sync | 同步已经安装的软件包到最新可用版本。 |
makecache | 创建元数据缓存。 |
repository-package | 对指定仓库中的所有软件包运行命令。 |
provides | 查找提供指定内容的软件包。 |
group | 显示或使用组信息。 |
history | 显示或使用事务历史。 |
clean | 删除已缓存的数据。 |
操作1. 已配置的软件repo
显示已配置的软件仓库,默认添加 --enabled 选项(显示启用的仓库)。
# dnf repolist --enabled
repo id repo name
EPOL EPOL
OS OS
debuginfo debuginfo
everything everything
pkgship_elasticsearch Elasticsearch repositor
source source
update update
- --all: 显示所有的软件仓库
- --disabled: 显示被禁用的软件仓库
- --enabled: 显示已经启用的仓库(默认)
操作2. 安装单个或多个软件包
通过install 命令可以安装RPM包。
# dnf install 软件包
安装软件包的过程中可能会存在冲突的包或无法安装的包,可以在命令中增加 --allowerasing 来替换冲突的软件包或 --skip-broken 来跳过无法安装的软件包。
# dnf install 软件包 [软件包 ...] --allowerasing --skip-broken
当使用dnf安装软件包时,通过添加 --installroot 设置软件包安装的根目录。
# dnf install 软件包 --installroot 软件包安装的根目录
需要临时指定特定的repo源安装时,可以添加 --setopt=reposdir= 选项来指定repo源的加载目录。
# dnf install 软件包 --setopt=reposdir=repo源的加载目录
在安装选项时,不需要交互式确认时,可以通过添加 -y 或**--assumeyes** 使需要安装的软件包全部自动应答为是。
# dnf install 软件包 -y
指定特定的repo源安装rpm包时,可以通过指定 --repo 或 --enablerepo 选项。为了达到相同的效果,也可以通过使用 --disablerepo 选项来禁用匹配的repo源,此处推荐您使用--repo选项来安装RPM包。
# dnf install 软件包 --repo=repo源
操作3. 重新安装软件包
系统上的软件包需要执行重新安装操作时,可以执行 reinstall 命令。
# dnf reinstall 软件包
操作4. 升级一个或多个软件包
- 通过upgrade或 update升级Linux上的一个或多个软件包。
# dnf upgrade 软件包 [软件包 ...]
# dnf update 软件包 [软件包 ...]
操作5. 软件包降级
当软件包版本过高发生兼容性问题时,可以采用降级的方式解决。
# dnf downgrade 软件包
操作6. 列出一个或一组软件包
罗列系统中已安装的软件包和配置的repo仓中存在的软件包列表,可以使用 list
命令。
# dnf list
可以通过添加选项过滤显示的包列表
- --all: 显示所有的软件包(默认)
- --available: 只显示可用的软件包
- --installed: 只显示已安装的软件包
- --extras: 只显示额外的软件包
- --updates: 只显示需要被升级的软件包
- --upgrades: 只显示需要被升级的软件包
- --autoremove: 只显示需要被删除的软件包
- --recent: 限制最近被改变的软件包
操作7. 查看软件包详细信息
查看软件包的详细信息时,可以使用info
命令。
# dnf info 软件包
操作8. 搜索软件包
如需在系统中安装软件包,但不确定软件包全称时,可使用search
命令查找匹配的包。
# dnf search 软件包
操作9. 卸载一个或多个软件包
删除已过期或重复的软件包时,可使用remove
命令移除一个软件包。
# dnf remove 软件包
- --duplicates: 删除已安装(重复)的软件包
- --oldinstallonly: 移除过期的“仅安装”软件包
操作10. 自动删除因为依赖关系安装的软件包
删除因为依赖关系安装的不需要的软件包时,可使用autoremove
命令。
# dnf autoremove 软件包
配置SSH
- SSH服务介绍
SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性保障的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,并防止DNS欺骗和IP欺骗。OpenSSH是SSH协议的免费开源实现。
- 配置SSH服务
# 打开并修改/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
# 重新启动SSH服务
systemctl restart sshd
# 检查SSH服务状态
systemctl status sshd
- SSH服务配置文件主要选项
# 指定SSH协议版本(Specify SSH Protocol Version)
Protocol 2
# 允许的用户(Allowed Users)
AllowUsers xxx
# 被拒绝的用户(Denied Users)
DenyUser root
# 配置会话超时(Configure Session Timeout)
ClientAliveInterval 120
# 禁用SSH根登录(Disable SSH Root Login)
PermitRootLogin no
# 配置或更改SSH端口号(Configure or Change SSH Port Number)
Port 1234
# 禁用SSH密码身份验证 (Disable SSH Password Authentication)
PasswordAuthentication no