手把手帶你玩轉 openEuler | openEuler 的使用
本文章分為四部分,教你怎麼使用 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
給大家提供兩種下載軟體的方式:
- 利用本地 iso 掛載源,當作光碟機一樣(離線),這種方式是比較有限的,需要離線使用。mount iso /mnt 該源的配置檔案:編輯/etc/yum.repos.d/xxx.repo(/etc/dnf/dnf.cong)
- 利用 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 有哪些優點
- 並行啟動能力強(SysVinit 是序列啟動,UpStart 有依賴關係的是序列啟動)
- 按需啟動,只有真正被請求時才啟動(SysVinit 將可能用到的程序全部啟動)
- 利用核心提供的 cgroup 確保跟蹤所有子程序
- 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 中,重啟丟失,儲存重啟前日誌方法。
- 建立/var/log/journal 目錄
- 修改/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
- 玩轉機密計算從 secGear 開始
- openEuler資源利用率提升之道06:虛擬機器混部OpenStack排程
- openGauss Cluster Manager RTO Test
- JVM 鎖 bug 導致 G1 GC 掛起問題分析和解決【畢昇JDK技術剖析 · 第 2 期】
- 手把手帶你玩轉 openEuler | openEuler 的使用
- 681名學生中選!暑期2021開啟火熱“開源之夏”!
- 手把手帶你玩轉 openEuler | 初識 openEuler
- StratoVirt 中的 PCI 裝置熱插拔實現
- 使用 NMT 和 pmap 解決 JVM 資源洩漏問題
- JNI 中錯誤的訊號處理導致 JVM 崩潰問題分析
- Java Flight Recorder - 事件機制詳解
- 畢昇 JDK 8u292、11.0.11 釋出!
- StratoVirt 中的虛擬網絡卡是如何實現的?
- openEuler結合ebpf提升ServiceMesh服務體驗的探索
- 我的openEuler社群參與之旅
- StratoVirt 的中斷處理是如何實現的?
- 看看畢昇 JDK 團隊是如何解決 JVM 中 CMS 的 Crash
- 使用 perf 解決 JDK8 小版本升級後效能下降的問題【畢昇JDK技術剖析 · 第 1 期】
- 2021年畢昇 JDK 的第一個重要更新來了
- 漏洞盒子 × openEuler | 廣邀白帽共築安全的Linux開放應用生態