Linux 系統管理涵蓋許多導向,從使用者支援、系統維護到軟體安裝及安全策略實施。本篇著重於 Linux 系統管理的日常操作,包含 Linux 安裝、初始設定及使用 shell 命令探索系統。系統管理員主要透過命令列介面(CLI)與系統互動,因此熟悉 CLI 操作至關重要。文章將介紹 CLI 的基本操作、檔案系統導航、使用者及許可權管理,以及如何安全地使用 sudo 命令執行管理任務。透過這些基礎知識,讀者可以建立紮實的 Linux 系統管理基礎。

本前言內容重點整理:

  1. 作者寫作目的與教學熱情
  2. 本文適合讀者與主要內容
  3. 本文結構與章節安排
  4. 排版慣例與注意事項說明
  5. 程式碼範例使用規範
  6. 相關資源與聯絡資訊
  7. 作者致謝與重要提醒

內容解密:

此部分詳細闡述了前言的主要內容,包括作者的寫作動機、本文的目標讀者群、本文的結構安排,以及在閱讀和使用本文時需要注意的事項。透過這些資訊,讀者能夠更好地理解本文的目的和使用方法,從而更有效地利用本文進行學習。圖表部分則以Plantuml圖表展示了閱讀本文的基本流程,使讀者能夠直觀地理解閱讀步驟。

開始使用 Linux

Linux 系統管理對不同的人來說有不同的含義。在本文中,管理意味著 Linux 系統管理員(sysadmin)每天必須執行的日常操作,以管理與支援使用者、維護系統健康、實施最佳安全實踐、安裝軟體以及執行內務管理任務。本章涵蓋了 Linux 安裝、初始設定和使用簡單的 shell 命令進行系統探索。

你將花費大量時間在命令列(Command-Line Interface, CLI)。Linux 系統管理員很少在他們支援的伺服器系統上安裝或使用圖形使用者介面(GUI)。本章將介紹 CLI 和一些簡單的命令,以幫助你瀏覽檔案系統、定位重要檔案並熟悉 Linux CLI。

安裝 Linux

每個 Linux 系統管理員首先要學會的是如何安裝 Linux。雖然沒有單一正確的安裝方法,但有一些準則和建議可以讓你的工作變得更容易,以滿足使用者的需求變化。

準備你的系統以安裝 Linux

如果你是第一次安裝 Linux,建議將其安裝在虛擬機器(VM)中。這樣,你就不必將整台硬體裝置專門用於學習系統,也不會因為嘗試在現有系統旁邊安裝 Linux 而使系統無法運作,從而建立多重啟動電腦。

如果尚未安裝虛擬化軟體,可以從下載並安裝最新版本的 VirtualBox 開始。VirtualBox 是一款允許當前電腦作為 VM 主機系統的應用程式,你可以在其中安裝虛擬客戶端,如 Linux,成為一個獨立、運作中的電腦系統。VirtualBox 可在各種主機作業系統(OS)上執行,並支援包括 Linux 在內的多種客戶端作業系統。主機 OS 和客戶端 OS 可以彼此不同。

下載並安裝 Linux

接下來,你需要選擇一個 Linux 發行版(distro)來安裝,以便練習發出命令、更改組態、重新啟動、安裝軟體、建立使用者等。建議選擇目前僱主使用的 Linux 發行版。如果公司尚未使用 Linux 或你尚未擔任系統管理員角色,則可以從以下流行的發行版中選擇:

  • Debian:一個頂級發行版,許多其他發行版都源自於此。Debian 是社群支援的開源免費軟體。
  • OpenSUSE:一個具有全球眾多忠實使用者的社群支援頂級發行版。其商業版本 SUSE Linux Enterprise 得到廣泛採用。
  • Red Hat Enterprise Linux:一個商業支援的 Linux 發行版,在全球企業中得到廣泛採用,現由 IBM 所有。
  • Ubuntu:非常流行,具有社群和商業支援的發行版(源自 Debian)。Ubuntu 也提供預先製作的 VirtualBox(及其他)虛擬機器,以幫助你快速入門。

下載的 ISO 檔案是一個可啟動的 Linux 映像。如果你用它來建立 VM,則無需對其進行任何操作。VM 將從 ISO 映像啟動並開始安裝過程。在 VirtualBox 中組態 VM 後,從 Oracle VM VirtualBox 管理員中選擇「設定」。

組態虛擬機器以使用 ISO 映像

  1. 選擇「儲存」設定。
  2. 在儲存裝置窗格中選擇空的光碟機,然後在屬性窗格中選擇光碟圖示以瀏覽你的 ISO 映像檔案。
  3. 選取 ISO 映像檔案後,點選「確定」繼續。

當你啟動 VM 時,它將從此 ISO 映像啟動以開始安裝到 VM 的虛擬磁碟上。系統啟動後,可以接受預設設定。如果有 Linux 安裝經驗,可以更改預設設定以滿足需求。在提示時建立使用者帳戶,如果發行版提示為 root 帳戶設定密碼,請務必記住此密碼。

熟悉你的新 Linux 系統

安裝後,首先需要做的就是使用在安裝過程中建立的使用者名稱和密碼登入。登入後,你將進入主目錄內的 shell(或操作環境)。主目錄(/home)是 / 目錄的子目錄。Linux 檔案系統是階層式檔案系統,類別似於 Microsoft Windows。在頂層,有一個根目錄,用 / 符號表示。Windows 使用驅動器號,如 C:,作為根目錄。在 Windows 中,可以有多個驅動器號具有各自的根層級,如 C:、D:、E: 等。在 Linux 中,只有一個根目錄 /。所有其他檔案和目錄都位於此根目錄下。

探索 Linux 檔案系統

Linux 的檔案系統結構與 Windows 不同,它只有一個根目錄 /,所有的檔案和目錄都位於這個根目錄下。例如,使用者檔案通常存放在 /home 目錄下的各個使用者子目錄中。系統檔案則可能存放在 /etc/bin/sbin/usr 等目錄中。

登入與初始環境

當你登入 Linux 系統後,你會被放置在你的主目錄中,並進入一個 shell 環境。shell 是使用者與 Linux 系統互動的主要介面,它允許你輸入命令來執行各種操作。

# 檢視當前所在目錄
pwd

# 列出當前目錄下的檔案和子目錄
ls

# 切換到其他目錄
cd /path/to/directory

#### 內容解密:

  • pwd 命令用於顯示當前工作目錄的完整路徑。
  • ls 命令用於列出當前目錄下的檔案和子目錄。
  • cd 命令用於切換當前工作目錄。

深入理解Linux檔案系統與指令介面

Linux作業系統的核心之一是其檔案系統的組織方式。Linux的檔案系統採用樹狀結構,以根目錄(/)作為起點。根目錄下包含多個子目錄,每個子目錄都有其特定的功能和用途。

Linux檔案系統結構

Linux的根目錄(/)是整個檔案系統的頂層,它不包含任何普通檔案,只包含子目錄。主要的子目錄及其功能如下:

  • /bin:存放系統的基本執行檔,這些執行檔對系統運作至關重要。
  • /dev:包含裝置檔案,用於與硬體裝置互動。
  • /etc:存放系統的設定檔,包括使用者帳戶資訊、網路設定等。
  • /home:普通使用者的家目錄,用於存放個人檔案和設定。
  • /lib:包含系統所需的函式庫檔案,支援系統和應用程式的執行。
  • /media:用於掛載可移除媒體,如USB裝置或DVD。
  • /mnt:臨時掛載點,用於掛載檔案系統或裝置。
  • /opt:第三方應用程式的安裝目錄。
  • /proc:虛擬檔案系統,提供系統行程和核心資訊。
  • /root:root使用者的家目錄。
  • /run:存放系統執行時的變動資料。
  • /sbin:存放系統管理員使用的執行檔。
  • /srv:存放系統服務所需的資料。
  • /sys:虛擬檔案系統,提供核心和硬體的資訊。
  • /tmp:存放臨時檔案的目錄,系統重新啟動時通常會清空。
  • /usr:存放使用者相關的程式和資料,包括執行檔、函式庫等。
  • /var:存放變動的資料,如日誌檔、佇列等。

存取與管理Linux檔案系統

在Linux中,系統檔案受到保護,普通使用者無法修改。僅有root使用者(系統管理員)能夠修改系統設定檔和設定。一般使用者通常只能在其家目錄、/tmp目錄以及由管理員特別設定的分享目錄中進行寫入操作。

指令介面(CLI)基礎

Linux主要透過指令介面(CLI)進行管理。CLI允許管理員輸入指令以執行各種操作。與圖形介面不同,CLI提供了更直接、更靈活的控制方式。

重要概念

  1. 檔案命名規則:Linux不依賴副檔名來識別檔案型別。檔案名稱可以幾乎任意命名,但應避免使用空白字元,因為這需要使用引號包裹檔案名稱。
  2. 大小寫敏感:Linux對檔案名稱大小寫敏感,即filename.txtFilename.txt被視為不同的檔案。
  3. 路徑表示法:Linux使用絕對路徑來標識檔案或目錄的位置,如/etc/passwd表示密碼檔案的位置。

基本指令

  1. pwd:顯示目前工作目錄的路徑。使用此指令可以確定目前所在的位置。

    $ pwd
    /home/student1
    
  2. cd:切換目前工作目錄。此指令類別似於Windows中的cd指令,用於在目錄之間導航。

    $ cd /path/to/directory
    

內容解密:

  • pwd指令的作用:此指令用於顯示使用者目前所在的目錄路徑,是導航和管理Linux檔案系統的基本工具之一。
  • cd指令的使用方法cd指令用於改變目前的工作目錄。它可以接受絕對路徑或相對路徑作為引數,讓使用者能夠靈活地在不同目錄之間切換。

Linux 系統基礎操作與管理

Linux 系統管理涉及多個基本操作,包括檔案系統導航、系統啟動、重啟和關閉。這些操作對於系統管理員(sysadmin)來說至關重要。

檔案系統導航

在 Linux 中,cd 命令用於切換目錄。無論目前位於檔案系統的哪個位置,只需輸入 cd 即可傳回主目錄。

$ cd /etc
$ pwd
/etc
$ cd
$ pwd
/home/student1

使用絕對路徑可以切換到指定目錄:

$ cd /usr/bin

如果當前目錄是目標目錄的父目錄,可以直接使用相對路徑:

$ cd /usr
$ cd bin
$ pwd
/usr/bin

ls 命令用於列出檔案和目錄。如果不指定位置,ls 會顯示當前目錄的內容:

$ cd
$ pwd
/home/student1
$ ls

若要列出其他目錄的內容,可以指定絕對路徑:

$ ls /usr/bin
a2x getcifsacl p11-kit snmpping
a2x.py getconf pack200 snmpps
ac getent package-cleanup snmpset
...

內容解密:

  1. cd 命令:用於改變當前工作目錄。
  2. pwd 命令:顯示當前工作目錄的絕對路徑。
  3. ls 命令:列出指定目錄中的檔案和子目錄,不加引數時預設列出當前目錄內容。
  4. ls -a 命令:列出所有檔案,包括隱藏檔案(以 . 開頭的檔案)。

隱藏檔案是指以 . 開頭的檔案或目錄,可以使用 ls -a 檢視:

$ ls -a
. .. .bash_history .bash_logout .bash_profile .bashrc .gnupg .zshrc

系統啟動、重啟和關閉

Linux 系統管理員需要了解如何正確地啟動、重啟和關閉系統。

啟動系統

實體機器的啟動是透過按下電源按鈕開始的。啟動過程中,系統會進行自檢並載入作業系統。監控啟動過程對於檢測硬體問題非常重要。

重啟系統

重啟系統是一種常見的管理實踐,可以清除記憶體、重新整理連線,並確保系統健康運作。雖然重啟可以暫時解決某些問題,但這些問題仍需進一步調查。

關閉系統

關閉系統需要使用特定的命令,以確保所有程式正確關閉並避免資料損壞。關閉系統通常用於硬體維護、遷移或退役。

使用許可權與特權帳戶

身為系統管理員,命令列介面(CLI)是他們的居所。在鍵盤上輸入指令是日常工作的一部分。你需要熟悉命令列、它的特性以及快捷鍵——是的,命令列有快捷鍵。學習 Linux 命令列有很多內容需要學習。有數十個命令,每個命令都有數十個選項。當然,你只會使用少數命令和每個命令的有限選項,但你需要知道如何找到需要的選項以及如何在需要時使用它們。

以一般使用者身份工作

Linux 系統上有兩種使用者型別:一般使用者和 root(管理員)使用者。一般使用者各自擁有自己的家目錄,系統使用許可權受到一定限制。root 使用者同樣擁有家目錄(/root)。一般使用者在家目錄中有幾乎無限制的權力,可以建立、修改、刪除和操作檔案,但在該目錄以外幾乎沒有任何權力。許多系統命令可供一般使用者使用。相比之下,其他命令則僅限於透過 sudo 命令獲得有限 root 許可權的使用者,或直接存取 root 帳戶的使用者。

一般且最具安全意識的規則是,除非任務需要特權(root 使用者)存取,否則應始終以一般使用者身份工作,這部分將在下一節中介紹。

以 Root 使用者身份工作

Root 使用者是 Linux 系統上全能的帳戶。Root 使用者可以建立、編輯、移動或刪除系統上的任何檔案。Root 使用者可以重新啟動、更改執行層級和關閉系統。有三種方法可以成為 root 使用者:

  • 以 root 使用者身份登入
  • 使用 su(替換使用者)命令
  • 使用 sudo 命令

以 Root 身份登入

在某些 Linux 發行版中,你可以直接以 root 使用者身份透過 SSH 跨網路登入系統,或在主控台互動式登入。有些 Linux 發行版預設禁止 SSH root 登入,而其他發行版則由管理員決定。不建議透過 SSH 登入系統並以 root 身份登入。主要原因是,如果允許跨網路 root 存取系統,那麼惡意攻擊者可能會嘗試暴力破解 root 登入。你不希望這種情況發生。本文後面將介紹如何防止 SSH root 登入(如果尚未停用)在你的發行版上。

你不應該直接在主控台以 root 身份登入,因為這樣做會使系統日誌無法記錄誰登入並成為 root。記錄誰使用了 root 帳戶很重要,因為當出現問題時,你想知道是哪位管理員執行了這些操作。這種記錄的目的不是為了指責,而是為了滿足某些法規要求,並糾正需要教訓或進階培訓的系統管理員的操作。我們討論的接下來兩個選項是成為 root 使用者的更好、更安全的方法。

使用 su 命令

成為 root 使用者的適當方法之一是使用 su(替換使用者)命令。使用 su 的警告是使用者必須知道 root 使用者的密碼。如果管理使用者知道 root 密碼,那麼很難阻止這些管理員直接以 root 身份登入。使用 su 命令成為 root 是可以接受的,但前提是每次使用後都要更改 root 密碼。在較大的企業中,安全團隊會維護 root 密碼,系統管理員可以暫時取出 root 密碼來進行維護。

Root 使用者可以 su 到系統上的任何其他使用者帳戶,而無需知道使用者的密碼。這種能力允許管理員登入或成為任何使用者進行故障排除,因為使用者通常很難準確描述他們遇到的問題。這也防止了使用者向管理員透露其密碼,這將強制使用者更改其密碼。要 su 到另一個帳戶,只需發出 su 命令和要 su 的使用者帳戶即可。

使用 su - 命令

更好的使用 su 的方法是使用 su - 命令,因為 - 表示你還想取得 root 使用者的完整環境,而不僅僅是帳戶許可權。如果你發出 env 命令,你會看到原始使用者的環境變數,而不是 root 的:

# env

使用 exit 命令傳回原始使用者帳戶。使用 su - 命令相當於在主控台以 root 使用者身份登入。任何使用者都可以 su 到任何其他使用者帳戶,這需要知道其他使用者的密碼:

[bjones@server1] $ su cdavis
Password:
[cdavis@server1] $

內容解密:

此段落描述了使用 susu - 命令的差異。su 命令用於切換到另一個使用者帳戶,而 su - 則會載入該使用者的完整環境。當你使用 su 命令時,你只會取得目標使用者的許可權,但仍保留原始使用者的環境變數。相比之下,su - 會完全切換到目標使用者的環境,就像直接以該使用者身份登入一樣。這對於需要以不同使用者身份執行任務的系統管理員來說非常重要。

圖表說明

以下 Plantuml 圖表展示了不同使用者帳戶之間的關係:

@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam rectangleBackgroundColor #F5F5F5
skinparam rectangleBorderColor #333333
skinparam arrowColor #333333

title 圖表說明

rectangle "su" as node1
rectangle "sudo" as node2

node1 --> node2

@enduml

此圖示展示了一般使用者如何透過 susudo 命令成為 root 使用者,以及 root 使用者如何 su 到其他使用者帳戶。

內容解密:

此圖表顯示了 Linux 系統中不同使用者之間的關係。一般使用者可以使用 susudo 命令成為 root 使用者。root 使用者可以使用 su 命令切換到其他使用者帳戶。這種關係對於系統管理和安全性非常重要。

使用 sudo 指令

取得 root 存取權的最佳方法是使用「substitute user do」或「以其他使用者身分執行指令」(sudo)指令。sudo 指令允許適當設定的使用者帳戶以 root 使用者身分發出個別指令。sudo 指令必須在每個發出的指令前加上。在首次使用時,sudo 指令要求 sudoer(設定為 sudo 使用的使用者帳戶)提供自己的密碼,如下方的程式碼清單所示。無需知道 root 密碼。

$ sudo env
[sudo] password for bjones:
bjones is not in the sudoers file. This incident will be reported.
[bjones@server1 ~]$

內容解密:

  • sudo env:以 root 許可權執行 env 指令。
  • [sudo] password for bjones::系統提示輸入 bjones 使用者的密碼。
  • bjones is not in the sudoers file.:錯誤訊息表示 bjones 使用者未在 /etc/sudoers 檔案中設定。
  • /etc/sudoers 檔案定義了哪些使用者可以使用 sudo 以及他們可以執行的指令。