在現代軟體開發和系統管理中,虛擬機器扮演著至關重要的角色。本文將引導讀者如何在 VirtualBox 中建立和管理 Linux 虛擬機器,並有效地執行系統更新,確保系統安全性和穩定性。從作業系統安裝、網路設定到快照管理,本文提供一系列實用步驟,讓讀者能輕鬆上手。同時,我們也將探討如何使用 Cygwin 和 Windows 內建 SSH 客戶端連線虛擬機器,方便跨平台操作。此外,本文還將深入講解 Linux 系統更新的機制,包含如何檢查和安裝安全性更新、設定自動更新,以及在企業環境中管理更新的最佳實務。

在VirtualBox中建立和管理虛擬機器的步驟

建立虛擬機器與安裝作業系統

  1. 建立虛擬機器:首先,在VirtualBox中建立新的虛擬機器,並選擇要安裝的Linux發行版,如Ubuntu、CentOS或AlmaLinux。
  2. 安裝作業系統:按照安裝精靈的指示完成作業系統的安裝。在安裝過程中,務必記住以下幾點:
    • 在Ubuntu安裝過程中,會要求建立一個普通使用者帳戶和密碼,並自動將該使用者新增到sudo群組,以獲得管理員許可權。
    • 在CentOS或AlmaLinux安裝過程中,請務必勾選「Make this user administrator」選項,以授予使用者管理員許可權。同時,也可以選擇為root使用者設定密碼,但這是可選的。

更新虛擬機器

  1. 更新Ubuntu虛擬機器:使用以下命令更新Ubuntu虛擬機器:
    sudo apt update
    sudo apt dist-upgrade
    
  2. 暫緩更新CentOS和AlmaLinux虛擬機器:目前暫時不更新CentOS和AlmaLinux虛擬機器,將在下一個練習中進行。

安裝EPEL儲存函式庫

在CentOS 7虛擬機器上安裝EPEL儲存函式庫

  1. 安裝必要的套件:執行以下命令安裝yum-plugin-prioritiesepel-release套件:
    sudo yum install yum-plugin-priorities epel-release
    
  2. 設定儲存函式庫優先順序:編輯/etc/yum.repos.d/CentOS-Base.repoepel.repo檔案,設定各儲存函式庫的優先順序。
  3. 更新系統並列出套件:執行以下命令更新系統並列出已安裝和可用的套件:
    sudo yum upgrade
    sudo yum list > yum_list.txt
    

在AlmaLinux 8/9虛擬機器上安裝EPEL儲存函式庫

  1. 安裝EPEL儲存函式庫:執行以下命令安裝epel-release套件:
    sudo dnf install epel-release
    
  2. 更新系統並列出套件:執行以下命令更新系統並列出可用的套件:
    sudo dnf upgrade
    sudo dnf list > dnf_list.txt
    

組態VirtualBox虛擬機器的網路

  1. 變更網路介面卡設定:將虛擬機器的網路介面卡設定為「橋接模式」(Bridged Adapter),並將混雜模式(Promiscuous Mode)設定為「允許所有」(Allow All)。
  2. 重新啟動虛擬機器:重新啟動虛擬機器,並設定靜態IP地址。

建立虛擬機器快照

  1. 建立快照:在VirtualBox中,選擇「工具/快照」,然後點選「拍攝」圖示來建立快照。
  2. 還原快照:在對虛擬機器進行更改後,可以透過還原快照來還原到先前的狀態。

使用Cygwin連線虛擬機器

  • 如果主機是Linux或Mac,可以直接使用終端連線虛擬機器。
  • 如果主機是Windows,可以使用內建的Secure Shell客戶端,或考慮使用Cygwin來獲得更接近Linux的體驗。

使用Cygwin的好處

  • 提供類別似Linux的環境和工具。
  • 可以使用熟悉的Linux命令和工具。

Cygwin組態步驟

  1. 下載並安裝Cygwin:從官方網站下載Cygwin並按照指示進行安裝。
  2. 選擇必要的套件:在安裝過程中,選擇必要的套件,如openssh,以便能夠使用SSH連線虛擬機器。
  3. 使用Cygwin連線虛擬機器:安裝完成後,開啟Cygwin終端,使用SSH命令連線虛擬機器。
ssh 使用者名稱@虛擬機器IP地址

透過以上步驟,您可以在VirtualBox中建立和管理虛擬機器,並使用Cygwin連線虛擬機器,以滿足您的開發和測試需求。

在Windows上安裝與使用Cygwin及內建SSH客戶端

在Windows上安裝Cygwin

Cygwin是一個由Red Hat公司開發的免費開源Bash shell,專為Windows設計。它不僅免費,而且安裝簡便。

安裝步驟:

  1. Cygwin官方網站下載適合您Windows版本的setup*.exe檔案。
  2. 雙擊安裝圖示開始安裝,大部分情況下只需接受預設值,直到到達套件選擇畫面。(一個例外是選擇下載映象的畫面。)
  3. 在套件選擇畫面的頂部,從「View」選單中選擇「Category」。
  4. 展開「Net」類別,如下所示:
    • 捲動直到看到openssh套件。在「New」欄下點選「Skip」(這會導致版本號碼出現在「Skip」的位置)。
  5. 選擇正確的套件後,您的畫面應該如下所示:
  6. 在右下角點選「Next」。如果出現「Resolving Dependencies」畫面,也點選「Next」。
  7. 保留您下載的設定檔,因為稍後將使用它來安裝更多軟體套件或更新Cygwin。

使用Windows 10/11內建SSH客戶端連線Linux虛擬機器

如果您使用的是Windows 10或Windows 11,您已經擁有內建的SSH客戶端。

使用步驟:

  1. 開啟傳統的命令提示字元(Command Prompt),方法是從Windows系統選單中選擇它。
  2. 輸入SSH命令,就像在Mac或Linux機器上一樣。
  3. 更佳的選擇是使用Windows PowerShell而不是普通的命令提示字元。可以像這樣開啟它:
  4. 和之前一樣,使用它登入到您的Orange Pi裝置。

建議使用PowerShell而不是命令提示字元,因為PowerShell更接近Linux Bash shell的使用體驗。

Cygwin與Windows內建SSH客戶端的比較

Cygwin和Windows 10/11內建的SSH客戶端各有優缺點。Cygwin的優點在於可以安裝各種套件來自定義環境,並且將SSH的known_hosts和金鑰檔案儲存在使用者的家目錄下的.ssh目錄中,這與Linux的使用習慣一致。然而,Cygwin有自己的沙盒式目錄結構,這使得存取正常的Windows資料夾變得困難。

更新Linux系統

定期更新Linux系統非常重要,以修補已知的安全漏洞。更新Linux系統通常只需要一兩個簡單的命令,而且比更新Windows系統更快、更簡單。

更新Debian-based系統

對於Debian及其衍生版本(如Ubuntu),更新系統的方法如下:

  1. 執行以下兩個命令:
    sudo apt update
    sudo apt dist-upgrade
    
  2. 偶爾,您還需要移除不再需要的舊套件。登入系統時,命令列上會出現訊息提示。要移除這些舊套件,只需執行:
    sudo apt auto-remove
    

為Ubuntu組態自動更新

在Ubuntu 22.04中,預設啟用自動更新。您可以檢查unattended-upgrades服務的狀態來驗證這一點:

systemctl status unattended-upgrades

然後,檢視/etc/apt/apt.conf.d/20auto-upgrades檔案。如果啟用了自動更新,您將看到以下內容:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

您可以透過編輯/etc/apt/apt.conf.d/50unattended-upgrades檔案來組態自動重啟:

  1. 開啟檔案並找到以下行(大約在第67行):
    //Unattended-Upgrade::Automatic-Reboot "false";
    
  2. 取消註解並將false改為true
    Unattended-Upgrade::Automatic-Reboot "true";
    
  3. 若要設定特定的重啟時間,請找到以下行(大約在第103行)並取消註解,然後修改時間:
    Unattended-Upgrade::Automatic-Reboot-Time "22:00";
    

停用自動更新

如果您希望停用自動更新,可以編輯/etc/apt/apt.conf.d/20auto-upgrades檔案,將第二行的引數改為0

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "0";

自動更新與安全性更新的管理

在管理Linux系統時,保持系統更新是至關重要的,特別是在安全性方面。不同的Linux發行版有不同的更新管理機制。本文將探討如何在Ubuntu、Debian及其衍生版本(如Raspbian)以及Red Hat 7-based系統(如CentOS和Oracle Linux)上管理更新。

Ubuntu、Debian及其衍生版本的更新管理

在Ubuntu和Debian上,可以使用unattended-upgrades套件來自動安裝安全性更新。首先,需要安裝該套件:

sudo apt install unattended-upgrades

設定自動更新

  1. 檢查是否有可用的安全性更新但不安裝非安全性更新:
    sudo unattended-upgrade --dry-run -d
    
  2. 手動安裝安全性更新:
    sudo unattended-upgrade -d
    

若要在無人值守的情況下自動更新和重啟,可以在設定檔中啟用相關選項。但對於某些關鍵裝置,如工業控制器,建議不要啟用自動重啟。

Red Hat 7-based系統的更新管理

在Red Hat 7-based系統上,預設沒有自動更新機制,需要手動執行更新:

sudo yum upgrade

檢查安全性更新

  1. 檢查是否有可用的安全性更新:
    sudo yum updateinfo list updates security
    
  2. 只安裝安全性更新:
    sudo yum upgrade --security
    

設定自動更新

  1. 安裝yum-cron套件來啟用自動更新:
    sudo yum install yum-cron
    sudo systemctl enable --now yum-cron
    
  2. 編輯/etc/yum/yum-cron.conf來設定自動更新的型別和行為,例如只下載或安裝安全性更新。

郵件通知設定

yum-cron可以設定為在更新後傳送郵件通知。預設情況下,通知會傳送到root使用者帳戶。可以透過編輯yum-cron.conf檔案來更改收件人地址。

[email]
email_to = your_email@example.com

需要安裝郵件客戶端(如mutt)來閱讀這些通知:

sudo yum install mutt

系統重啟檢查

在更新後,某些情況下需要重啟系統。可以使用needs-restarting命令(需要安裝yum-utils套件)來檢查哪些服務需要重啟或是否需要重啟整個系統。

sudo yum install yum-utils
needs-restarting

或者使用-s-r選項來檢視具體需要重啟的服務或是否需要重啟系統。

內容解密:

  • needs-restarting命令用於檢查系統是否需要重啟或哪些服務需要重啟。
  • 需要安裝yum-utils套件才能使用此命令。
  • 該命令可以單獨執行或與-s-r選項一起使用,以提供不同的資訊。

管理Linux系統更新與企業考量

在管理Linux系統時,保持系統更新是一項重要的工作。本篇文章將討論如何在不同的Linux發行版中進行系統更新,以及在企業環境中如何管理更新。

使用needs-restarting檢查系統是否需要重啟

在進行系統更新後,系統管理員需要檢查系統是否需要重啟。needs-restarting是一個非常有用的工具,可以幫助管理員檢查哪些服務需要重啟,以及系統是否需要重啟。

使用範例

sudo needs-restarting

這個命令會顯示需要重啟的服務,以及系統需要重啟的原因。

sudo needs-restarting -s

這個命令只會顯示需要重啟的服務。

sudo needs-restarting -r

這個命令只會顯示系統需要重啟的原因。

內容解密:

  • sudo needs-restarting:檢查系統更新後需要重啟的服務和原因。
  • -s 引數:僅顯示需要重啟的服務。
  • -r 引數:僅顯示系統需要重啟的原因。

更新Red Hat 8/9為基礎的系統

在Red Hat 8/9為基礎的系統中,yum 已被 dnf 取代。dnf 提供了更快的效能和更好的依賴性管理。

使用範例

sudo dnf upgrade

這個命令會更新系統中的所有套件。

sudo dnf install dnf-automatic

這個命令會安裝 dnf-automatic 套件,提供自動更新功能。

sudo systemctl enable --now dnf-automatic.timer

這個命令會啟用並立即執行 dnf-automatic 定時器。

sudo systemctl status dnf-automatic.timer

這個命令會檢查 dnf-automatic 定時器的狀態。

內容解密:

  • sudo dnf upgrade:更新系統中的所有套件。
  • sudo dnf install dnf-automatic:安裝自動更新套件。
  • sudo systemctl enable --now dnf-automatic.timer:啟用並執行自動更新定時器。
  • sudo systemctl status dnf-automatic.timer:檢查自動更新定時器的狀態。

在企業環境中管理更新

在企業環境中,管理更新需要特別的考量。企業通常需要限制使用者可以安裝的套件,並且需要在測試網路中測試更新後才允許在生產網路中安裝。

企業考量

  1. 限制使用者安裝套件:企業需要限制使用者可以安裝的套件,以確保系統的安全性。
  2. 在測試網路中測試更新:企業需要在測試網路中測試更新,以確保更新不會對生產網路造成影響。

內容解密:

  • 企業需要設定自己的套件函式庫伺服器,以控制使用者可以安裝的套件和更新。
  • 更新需要在測試網路中進行測試,以確保其安全性。

重點整理

  • 使用 needs-restarting 檢查系統是否需要重啟。
  • 在Red Hat 8/9為基礎的系統中使用 dnf 進行更新。
  • 在企業環境中,需要限制使用者安裝套件並在測試網路中測試更新。

練習題

  1. Linux系統設計比Windows更安全,因此我們不需要擔心Linux的安全性。

    • A. 正確
    • B. 錯誤
  2. 下列哪一項關於Linux在IoT裝置上的敘述是正確的?

    • A. 它們的數量太多了。
    • B. 它們正在佔領世界。
    • C. 太多的裝置組態不安全。
    • D. 它們的組態非常安全,將使安全從業人員失業。
  3. 下列哪一項關於在企業環境中自動進行作業系統更新的敘述是正確的?

    • A. 您應該始終保持自動更新功能開啟。
    • B. 自動更新違背了在測試網路中測試更新後再安裝到生產網路的基本原則。
    • C. 與手動更新不同,您不需要在自動更新後重啟系統。
    • D. 對於IoT裝置,啟用自動更新並不是很有用。