手把手帶你玩轉 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 ​​​​​​​