手把手帶你玩轉 openEuler | openEuler 的使用

語言: CN / TW / HK

本文章分為四部分,教你怎麼使用 openEuler,學完之後你可以瞭解到 openEuler 的基本配置、軟體包的使用、基本語法以及服務搭建:

  • 第 1 部分:openEuler 基本配置(網路配置、檢視系統資訊、管理使用者和使用者組)
  • 第 2 部分:openEuler 的軟體包管理(使用 DNF 管理軟體包)
  • 第 3 部分:systemd 基本用法(管理服務)
  • 第 4 部分:服務搭建(搭建服務)

文件指導

openEuler 官網文件:管理員指南

相關文件說明可以檢視 管理員指南[1]

1. openEuler 基本配置

1.1 openEuler 基本配置之網路配置

本部分教會大家怎麼去配置 openEuler 的靜態 ip。如果您想了解更多的網路配置,請參考 openEuler 的網路配置文件[2])。

這裡我們使用第三方的終端軟體 ssh 登入之後進行操作,這樣的話終端軟體的優化是比較好的,使用起來比較方便。

由於 openEuler 預設的 ip 是 DHCP 動態分配的,這個 ip 可能會變,有些需求需要 ip 是固定的,這裡就需要我們將動態 ip 改成靜態 ip 了,配置方法如下:

  • 獲取 ip:ip a

  • 通過終端軟體 ssh 登入機器操作:ssh root@ip 配置靜態 ip:修改 /etc/sysconfig/network-scripts/ifcfg-ens33配置如下:

設定好靜態 ip 後,現在還沒發生效,需要重啟一下網路服務,命令列:

systemctl restart NetworkManager

1.2 openEuler 基本配置之使用者管理

在 Linux 中,每個普通使用者都有一個賬戶,包括使用者名稱、密碼和主目錄等資訊。除此之外,還有一些系統本身建立的特殊使用者,它們具有特殊的意義,其中最重要的是管理員賬戶,預設使用者名稱是 root。同時 Linux 也提供了使用者組,使每一個使用者至少屬於一個組,從而便於許可權管理。

使用者和使用者組管理是系統安全管理的重要組成部分,下面介紹 openEuler 提供的使用者管理和組管理命令,以及為普通使用者分配特權的方法。

1.2.1 管理使用者

常用的 管理使用者 的命令如下:

  • useradd name:增加使用者—在 root 許可權下,通過 useradd 命令可以為系統新增新使用者資訊
  • passwd name:修改使用者密碼—使用 passwd 命令修改使用者的密碼,沒有設定密碼的新賬號不能登入系統。修改使用者密碼時需要滿足密碼複雜度要求,密碼的複雜度的要求如下:
    • 口令長度至少 8 個字元。
    • 口令至少包含大寫字母、小寫字母、數字和特殊字元中的任意 3 種。
    • 口令不能和賬號一樣。
    • 口令不能使用字典詞彙。
  • userdel name:刪除使用者—在 root 許可權下,使用 userdel 命令可刪除現有使用者。如果想同時刪除該使用者的主目錄以及其中所有內容,要使用-r 引數遞迴刪除
  • id name:使用 id 命令檢視新建的使用者資訊
  • usermod -s newshell_path username:修改使用者 shell 設定—使用者也可以使用 usermod 命令修改 shell 資訊,在 root 許可權下執行如下命令,其中 _new_shell_path 為目標 shell 路徑,username 為要修改使用者的使用者名稱
  • usermod -d newhome_directory username:修改主目錄—修改主目錄,可以在 root 許可權下執行如下命令,其中 _new_home_directory 為已建立的目標主目錄的路徑,username 為要修改使用者的使用者名稱
  • usermod -u UID username:修改使用者 ID—修改使用者 ID,在 root 許可權下執行如下命令,其中 UID 代表目標使用者 ID,username 代表使用者名稱
  • usermod -e MM/DD/YY username:修改賬戶有效期—如果使用了影子口令,則可以在 root 許可權下,執行如下命令來修改一個賬號的有效期,其中 MM 代表月份,DD 代表某天,YY 代表年份,username 代表使用者名稱

使用者資訊檔案

下面介紹與使用者賬號資訊有關的檔案:

  • /etc/passwd:使用者賬號資訊檔案。
  • /etc/shadow:使用者賬號資訊加密檔案。
  • /etc/group:組資訊檔案。
  • /etc/default/useradd:定義預設設定檔案。
  • /etc/login.defs:系統廣義設定檔案。
  • /etc/skel:預設的初始配置檔案目錄。

1.2.2 管理使用者組

常用的 管理使用者組 的命令如下:

  • groupadd name:增加使用者組—在 root 許可權下,通過 groupadd 命令可以為系統新增新使用者組資訊,其中 options 為相關引數, groupname 為使用者組名稱
  • groupmod -g GID groupname:修改使用者組 ID—修改使用者組 ID,在 root 許可權下執行如下命令,其中 GID 代表目標使用者組 ID, groupname 代表使用者組
  • groupmod -n newgroupname oldgroupname:修改使用者組名稱—修改使用者組名,在 root 許可權下執行如下命令,其中 newgroupname 代表新使用者組名, oldgroupname 代表已經存在的待修改的使用者組名
  • groupdel groupname:刪除使用者組—在 root 許可權下,使用 groupdel 命令可刪除使用者組。groupdel 不能直接刪除使用者的主組,如果需要強制刪除使用者主組,請使用 groupdel -fgroupname 命令
  • gpasswd -a username groupname:將使用者加入使用者組—將使用者 username 加入使用者組groupname
  • gpasswd -d username groupname:從使用者組中移除使用者—將使用者 username從 groupname使用者組中移除
  • newgrp newgroupname:切換使用者組—一個使用者同時屬於多個使用者組時,則在使用者登入後,使用 newgrp 命令可以切換到其他使用者組,以便具有其他使用者組的許可權

使用者組資訊檔案

下面介紹與使用者組賬號資訊有關的檔案:

  • /etc/gshadow:使用者組資訊加密檔案。
  • /etc/group:組資訊檔案。
  • /etc/login.defs:系統廣義設定檔案。

sudo:允許普通使用者執行管理員賬戶才能執行的命令

sudo ls /root

如果該使用者在 root 下沒有許可權,需要在 root 下給該使用者新增許可權

vi /etc/sudoers  visudoUser  host=(run as user) command

1.3 openEuler 基礎配置之系統資訊

 

系統資訊檢視 官方文件[3]

想要了解系統的其他資訊,比如系統資訊、CPU、記憶體、磁碟、系統資源實時資訊、版本資訊,這裡有幾個常用的命令列提供給大家:

  • 檢視系統資訊:cat /etc/os-release
  • 檢視 CPU 資訊:lscpu(Lx cache 非單個 cup 值)
  • 檢視記憶體資訊:free
  • 檢視磁碟資訊:fdisk -l
  • 檢視系統資源實時資訊:top
  • 檢視版本資訊:cat /etc/openEuler-latest

系統語言及鍵盤 官方文件[4]

大家可以通過 localectl 修改系統的語言環境,對應的引數設定儲存在/etc/locale.conf 檔案中。這些引數會在系統啟動過程中被 systemd 的守護程序讀取。

也可以通過 localectl 修改系統的鍵盤設定,對應的引數設定儲存在/etc/locale.conf 檔案中。這些引數,會在系統啟動的早期被 systemd 的守護程序讀取。

給大家提供一些系統語言和鍵盤的命令列:

  • 當前環境語言:localectl status
  • 可用環境語言/鍵盤:localectl list-locales/list-keymaps
  • 設定環境語言/鍵盤:localectl set-locale/set-keymap LANG=zh_CN.UTF-8/cn 更改語言環境之後,需要重新登入 ,或者 root 許可權下執行source /etc/locale.conf 重新整理配置檔案 ,使其生效

系統日期和時間 官方文件[5]

有些時候我們需要修改系統的日期、時間、時區,有哪些調整的方式呢,下面提供的很多命令列,我們可以通過使用 timedatectl、date、hwclock 命令來設定系統的日期、時間和時區等。

  • 當前系統時間:timedatectl
  • 時鐘自動同步:timedatectl set-ntp yes/no
  • 修改系統日期:timedatectl set-time YYYY-MM-DD
  • 修改系統時間:timedatectl set-time HH:MM:SS
  • 顯示可用時區:timedatectl list-timezones
  • 修改系統時區:timedatectl set-timezone time_zone
  • 顯示當前的日期和本地時間:date
  • 顯示當前的日期和 UTC 時間:date --utc/--u
  • 自定義 date 命令的輸出:date +"%Y-%m-%d %H:%M:%S"
  • 修改時間:date --set HH:MM:SS
  • 修改日期:date --set YYYY-MM-DD
  • 硬體日期時間 :hwclock
  • 設定硬體日期和時間:hwclock --set --date "dd mm yyyy HH:MM"

常用技巧

這裡有個小 Tips 分享給大家,ssh 登入一段時間後出現過期推出的情況,使得大家比較煩惱,該如何解決呢?

簡單的給大家提供了兩種方式:

  • 第一種是 TMOUT 環境變數不為 0 導致的 ssh 登出,我們可以在/etc/profile 內加入 export TMOUT=0,source /etc/profile 來解決。
  • 我們可以在 /etc/profile.d 加入要執行的指令碼檔案,登入時自動觸發該操作,這樣也可以避免 ssh 經常登出的情況。

2. openEuler 軟體包管理

軟體包管理官方文件[6]

給大家介紹一下,用來管理 openEuler 的軟體包的工具 DNF。

DNF 是一款 Linux 軟體包管理工具,用於管理 RPM 軟體包。DNF 可以查詢軟體包資訊,從指定軟體庫獲取軟體包,自動處理依賴關係以安裝或解除安裝軟體包,以及更新系統到最新可用版本。

簡單的小說明:- DNF 與 YUM 完全相容,提供了 YUM 相容的命令列以及為擴充套件和外掛提供的 API,所以在 openEuler 使用命令列的工具中,可以使用 DNF 也可以使用 YUM,根據自己的喜歡來用。- 後面主要使用 YUM 來給大家進行演示,在使用 YUM 的時候需要管理員許可權,所有命令需要在管理員許可權下執行。

2.1 openEuler 源配置 YUM

給大家提供兩種下載軟體的方式:

  1. 利用本地 iso 掛載源,當作光碟機一樣(離線),這種方式是比較有限的,需要離線使用。mount iso /mnt 該源的配置檔案:編輯/etc/yum.repos.d/xxx.repo(/etc/dnf/dnf.cong)
  2. 利用 openEuler 官方提供的源(線上),這種方式是比較全的,比較新的,裡面有許多源地址可供選擇,但該方式需要線上使用。源網址[7]該源的配置檔案:編輯/etc/yum.repos.d/xxx.repo(/etc/dnf/dnf.conf)

2.2 openEuler update 源配置

openEuler update 源:openEuler 升級軟體包的 repo 源,用於已釋出版本的 bug、CVE 的修復和部分軟體因特性增強後的更新發布。提供線上下載和版本內軟體升級功能。目錄下區分 AArch64 架構和 x86 架構。

安全公告裡的很多 CVE 漏洞是實時修復的,修復完之後,修復的包大家可以通過 yum update 命令將系統上所有的包進行升級。

2.3 openEuler 使用 dnf/yum 下載軟體包

下載/安裝/更新軟體包時(yum 和 dnf 本質相同),大家可以根據自己使用習慣使用相應的終端命令。下表就是常用的 yum 命令列,檢視系統包的相關內容。

注意:有時候在包升級過程中,部分包的升級會有一些衝突,你需要在 update 命令最後面使用 --allowerasing 先移除之前的包,然後再升級該包。

2.3 openEuler 使用 rpm 管理本地軟體包

除了 dnf 和 yum 也可以使用 rpm 針對本地的管家包進行管理。rpm 與 yum 的區別是 rpm 不會從固定的地方去取,它是先將所有的包下載下來再去安裝,使用起來比較複雜,建議大家使用 yum。下面也提供了一些 rpm 對軟體包操作的命令列,感興趣的同學可以試一試。

3. systemd 基本用法

官方文件[8]

systemd 是在 Linux 下,與 SysV 和 LSB 初始化指令碼相容的系統和服務管理器。systemd 使用 socket 和 D-Bus 來開啟服務,提供基於守護程序的按需啟動策略,支援快照和系統狀態恢復,維護掛載和自掛載點,實現了各服務間基於從屬關係的一個更為精細的邏輯控制,擁有更高的並行效能。

systemd 有哪些優點

  1. 並行啟動能力強(SysVinit 是序列啟動,UpStart 有依賴關係的是序列啟動)
  2. 按需啟動,只有真正被請求時才啟動(SysVinit 將可能用到的程序全部啟動)
  3. 利用核心提供的 cgroup 確保跟蹤所有子程序
  4. systemd 對 SysV 和 LSB 相容

systemd 作為 1 號程序

systemd 取代了 initd 成為了系統的第一個程序,我們稱之為 1 號程序。

核心空間初始化完成後,載入 init(/sbin/init)程式拉起 1 號程序;1 號程序通過 systemd 目標(target)拉起必須的程序,實現初始化。

下圖命令是指向了 systemd 檔案:

啟動級別

systemd 目前有 7 個啟動級別,下表中詳細的說明了每個級別的作用及命令列。

以下命令可以檢視我們運行了哪些級別/更改預設的啟動級別/當前立馬更改級別

systemctl get-default/set-default/isolate name.target

單元檔案

systemd 開啟和監督整個系統是基於 unit 的概念。unit 是由一個與配置檔案對應的名字和型別組成的(例如:avahi.service unit 有一個具有相同名字的配置檔案,是守護程序 Avahi 的一個封裝單元)。所有的可用 systemd unit 型別路徑如下:

服務檔案介紹

常用的 systemd 服務檔案格式固定:[Unit]:服務簡單描述及文件,以及依賴關係 [Service]:定義服務如何啟動當前的服務 [Install]:定義如何安裝檔案,即如何做到開機啟動

常見用法

systemctl start/restart/stop/reload/status/enable/disable/daemon-reload name.unit

Systemd 命令和 sysvinit 命令的對照表

systemd 提供 systemctl 命令與 sysvinit 命令的功能類似。當前版本中依然相容 service 和 chkconfig 命令,相關說明如下表,但建議用 systemctl 進行系統服務管理。

啟動流程

啟動服務需要使用三個主線 target 去拉取上。每個 target 都會拉取各自需要的服務程序,拉取完成後系統準備就緒可以使用了。

multi-user.target -> basic.target -> sysinit.target

日誌檢視

常見日誌儲存目錄:/var/log/(由 rsyslog 轉儲 systemd-journald 而來,所以必須開機並完成 rsyslogd 之後才會有日誌) 檢視核心日誌的命令列:dmesg

systemd 日誌

systemd-journald 服務是 systemd init 系統提供的收集系統日誌的服務。可以記錄開機過程中的所有資訊,包括啟動服務等情況。

systemd 日誌常見用法

journalctl:全部日誌 journalctl -f:實時日誌 journalctl _SYSTEMD_UNIT=NetworkManager.service journalctl --since "2020-08-05 12:20" (yesterday,today)

日誌預設儲存在 /run/log 中,重啟丟失,儲存重啟前日誌方法。

  1. 建立/var/log/journal 目錄
  2. 修改/etc/systemd/journald.conf,將 Storage=auto 改為 persistent,重啟日誌服務

這兩個方法可以使得您的日誌不至於丟失,有時候需要定位一些問題,將日誌改成 debug 級別,這對日誌定位問題有很大的幫助。

修改日誌為 debug 級別​​​​​​​

/etc/systemd/system.conf    loglevel=debug/etc/profile 中加:export SYSTEMD_LOG_LEVEL=debug修改完進行重啟。

4. 服務搭建

這裡介紹四種伺服器搭建:

  • Repo 伺服器:openEuler 提供了多種 repo 源供使用者線上使用,各 repo 源含義可參考系統安裝[9]。若使用者無法線上獲取 openEuler repo 源,則可使用 openEuler 提供的 ISO 釋出包建立為本地 openEuler repo 源。
  • FTP 伺服器搭建:FTP(File Transfer Protocol)即檔案傳輸協議,是網際網路最早的傳輸協議之一,其最主要的功能是伺服器和客戶端之間的檔案傳輸。FTP 使使用者可以通過一套標準的命令訪問遠端系統上的檔案,而不需要直接登入遠端系統。
  • Web 伺服器搭建:Web(World Wide Web)是目前最常用的 Internet 協議之一。目前在 Unix-Like 系統中的 web 伺服器主要通過 Apache 伺服器軟體實現。為了實現運營動態網站,產生了 LAMP(Linux + Apache +MySQL + PHP)。web 服務可以結合文字、圖形、影像以及聲音等多媒體,並支援超連結(Hyperlink)的方式傳輸資訊。openEuler 系統中的 web 伺服器版本是 Apache HTTP 伺服器 2.4 版本,即 httpd,一個由 Apache 軟體基金會發展而來的開源 web 伺服器。
  • 資料庫伺服器搭建:資料庫伺服器使用 PostgreSql

具體詳細四種伺服器搭建方式可以參考 官方文件[10]

5. 歡迎關注

 

參考資料

[1]管理員指南: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/administration.html

[2]文件: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/配置網路.html

[3]官方文件:https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E6%9F%A5%E7%9C%8B%E7%B3%BB%E7%BB%9F%E4%BF%A1%E6%81%AF.html

[4]官方文件:https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html

[5]官方文件:https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E5%9F%BA%E7%A1%80%E9%85%8D%E7%BD%AE.html

[6]軟體包管理官方文件: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/使用DNF管理軟體包.html

[7]源網址: http://repo.openeuler.org/

[8]官方文件: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E7%AE%A1%E7%90%86%E6%9C%8D%E5%8A%A1.html

[9]系統安裝: https://openeuler.org/zh/docs/20.03_LTS/docs/Releasenotes/系統安裝.html

[10]官方文件: https://openeuler.org/zh/docs/20.03_LTS/docs/Administration/%E6%90%AD%E5%BB%BA%E6%9C%8D%E5%8A%A1.html

作者: syyhao ​​​​​​​