长期支持版本

    社区创新版本

      常用技能

      配置网络

      1. 配置IP地址

      使用IP命令为接口配置地址,interface-name为网卡名称。

      ip addr [ add | del ] address dev interface-name
      
      1. 配置静态地址
      # 配置静态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
      
      1. 配置静态路由

      静态路由,可使用 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]
      
      1. 通过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的数据库中以便后续查询、验证与卸载。

      zh-cn_other_0000001337581224

      1. rpm包默认安装路径

      通常情况下,RPM采用系统默认的安装路径(默认安装路径可以通过命令查询,后续章节中将会详细介绍),所有安装文件都会按照类别分散到如下表格所示的目录中。

      表 1 RPM安装路径及其含义

      安装路径含义
      /etc/配置文件安装目录。
      /usr/bin/可执行命令安装目录。
      /usr/lib/程序所使用的函数库保存位置。
      /usr/share/doc基本软件使用手册保存位置。
      /usr/share/man/帮助文件保存位置。

      注意: RPM包支持手动指定安装路径,但此方式不推荐使用。通过手动指定安装路径后,所有的安装文件会集中安装到指定位置,且系统中用来查询安装路径的命令也无法使用(需手动配置才能被系统识别)。

      1. 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-4.oe2203.x86_64
      parted-3.4-3.oe2203.x86_64
      irqbalance-1.8.0-7.oe2203.x86_64
      ......
      

      注意:一般在使用 -qa 选项时,会配合管道符 “|” 一起使用,提升查找的准确率。

      操作5. 查看已安装的RPM包详细信息

      在rpm命令中使用 -qi 选项来验证系统中安装的RPM包的详细信息。

      # rpm -qi python3
      Name        : python3
      Version     : 3.9.9
      Release     : 7.oe2203
      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-7.oe2203.src.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-3.0.0-1.oe2203.noarch.rpm
      /etc/ima/digest_lists.tlv/0-metadata_list-compact_tlv-pkgship-3.0.0-1.oe2203.noarch
      /etc/ima/digest_lists/0-metadata_list-compact-pkgship-3.0.0-1.oe2203.noarch
      /etc/pkgship/auto_install_pkgship_requires.sh
      /etc/pkgship/conf.yaml
      /etc/pkgship/package.ini
      ......
      

      操作7. 查看未安装的RPM包依赖项

      查看未安装的RPM包编译的依赖包列表,可以在rpm命令中使用 -qRp 选项。

      # rpm -qRp pkgship-3.0.0-1.oe2203.noarch.rpm
      /bin/bash
      /bin/sh
      /usr/bin/python3
      config(pkgship) = 3.0.0-1.oe2203
      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件的访问权限或文件类型发生变化。
      5MD5校验和发生变化。
      D设备节点的属性发生变化。
      L文件的符号链接发生变化。
      U文件/子目录/ 设备节点的owner发生变化。
      G文件/子目录/ 设备节点的group发生变化。
      T文件最后一次的修改时间是发生变化。

      操作9. 查看特定文件的RPM包

      在Linux上找到一个提供特定二进制文件的RPM包,可以在rpm命令中使用 -qf 选项。

      # rpm -qf /usr/share/doc/pkgship
      pkgship-3.0.0-1.oe2203.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.10.0-3.oe2203.noarch
      /etc/ima/digest_lists/0-metadata_list-compact-dnf-4.10.0-3.oe2203.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-5.oe2203.x86_64
      ntpstat-0.6-3.oe2203.noarch
      ntp-help-4.2.8p15-5.oe3303.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-3.0.0-1.oe2203.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-22.03-LTS
      
      1. dnf命令

      dnf命令及其相关概述

      命令概述
      repolist显示已配置的软件repo源。
      installLinux上安装单个或多个软件包。
      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. 升级一个或多个软件包

      • 通过upgradeupdate升级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

      1. SSH服务介绍

      SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网络服务提供安全性保障的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输的数据进行加密,并防止DNS欺骗和IP欺骗。OpenSSH是SSH协议的免费开源实现。

      1. 配置SSH服务
      # 打开并修改/etc/ssh/sshd_config文件
      vi /etc/ssh/sshd_config
      
      # 重新启动SSH服务
      systemctl restart sshd
      
      # 检查SSH服务状态
      systemctl status sshd
      
      1. 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
      

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

      ● 错别字或拼写错误;标点符号使用错误;

      ● 链接错误、空单元格、格式错误;

      ● 英文中包含中文字符;

      ● 界面和描述不一致,但不影响操作;

      ● 表述不通顺,但不影响理解;

      ● 版本号不匹配:如软件包名称、界面版本号;

      易用性

      ● 关键步骤错误或缺失,无法指导用户完成任务;

      ● 缺少必要的前提条件、注意事项等;

      ● 图形、表格、文字等晦涩难懂;

      ● 逻辑不清晰,该分类、分项、分步骤的没有给出;

      正确性

      ● 技术原理、功能、规格等描述和软件不一致,存在错误;

      ● 原理图、架构图等存在错误;

      ● 命令、命令参数等错误;

      ● 代码片段错误;

      ● 命令无法完成对应功能;

      ● 界面错误,无法指导操作;

      风险提示

      ● 对重要数据或系统存在风险的操作,缺少安全提示;

      内容合规

      ● 违反法律法规,涉及政治、领土主权等敏感词;

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份