緯育 2026-0416

出自頂極製作所
於 2026年4月17日 (五) 09:22 由 Kuyohong留言 | 貢獻 所做的修訂
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

Linux 系統管理:PAM 和 SHELL


本次講座聚焦於Linux的PAM(Pluggable Authentication Modules,可插拔驗證模組)機制。講師詳細說明PAM的設計理念、運作流程、設定檔結構與關鍵驗證模組。PAM提供統一驗證框架,讓應用程式僅需呼叫PAM而無需重複撰寫驗證邏輯。內容涵蓋四種驗證類型(Type)與四種控制旗標(Control Flag),並強調required旗標對最終驗證結果的決定性影響。此外介紹多個常用模組,如pamunix.so(標準帳號密碼驗證)、pamnologin.so(限制非root使用者登入)及其他強化安全的模組,並進行實作示範。

PAM驗證模組

2026-0416-01.png

Shell (殼層) 的概念與設定

  • Shell 的基本概念與類型
    • Shell 是一支程式,作為使用者與作業系統核心溝通的介面。
    • 主要分為兩大類型:文字模式 (CLI) 和圖形化 (GUI)。
  • 文字模式 Shell (CLI)
    • DOS: Shell 程式為 command.com。若刪除,系統將無法接收指令。
    • UNIX-like 系統: 提供多種 Shell,如 sh, csh, tcsh, ksh,以及目前 Linux 普遍使用的 bash。
  • 圖形化使用者介面 (GUI) Shell
    • Windows: 核心程式為 explorer.exe,管理桌面、開始功能表、工作列等圖形元素。結束此程序會導致圖形介面消失。
    • UNIX-like 系統: 擁有多樣化的桌面環境,如 KDE、GNOME、XFCE 等。
  • Shell 組態檔與登入類型
    • Shell 的行為由組態檔定義,分為位於 /etc 的共用組態與位於使用者家目錄的私用組態。
    • 系統讀取哪些組態檔取決於登入方式:Login Shell(完整登入流程,如輸入帳密或 su -)與 Non-Login Shell(非完整登入的身份切換,如 su <帳號>),兩者會讀取不同的組態檔。

別名 (Alias)

  • 定義與作用: 允許使用者自訂簡短名稱來取代複雜指令,優先級高於系統內建指令。
  • 建立與查看: 使用 alias <名稱>='<指令>' 建立,單獨執行 alias 可查看所有已設定的別名。
  • 取消別名: 使用 unalias <名稱> 指令可以取消已設定的別名。
  • 應用與差異:
    • 許多系統預設 alias ls='ls --color=auto',使檔案列表帶有顏色。
    • CentOS 預設為 rm 和 mv 加上 -i 別名,在刪除或覆蓋檔案時會提示確認,增加安全性。
    • Ubuntu 預設無此別名,操作會直接執行。
    • 臨時建立的別名在重開機後會消失,需寫入設定檔(如 .bashrc)才能永久生效。

檔案連結 (Link)

  • 連結的概念與用途: 類似 Windows 的「捷徑」,用於節省空間、提供不同存取名稱、方便存取深層路徑檔案。
  • Linux 中的連結類型: 主要分為實體連結 (Hard Link) 與符號連結 (Symbolic Link)。

實體連結 (Hard Link)

  • 原理: 讓多個檔名指向同一個 inode 編號,不消耗新的 inode 或資料區塊。
  • 指令: ln [來源檔案] [目標連結檔名]。
  • 特性與限制:
    • 不能跨檔案系統 (File System)。
    • 不能連結目錄,以防無窮迴圈。
    • 刪除任一連結檔(包括原始檔)只會將 inode 的「連結計數 (link count)」減 1。只要計數不為 0,檔案內容依然存在且可透過其他連結存取。
  • 觀察: 使用 ls -li 可查看 inode 編號,實體連結與來源檔案的 inode 編號相同,連結計數會增加。

符號連結 (Symbolic Link)

  • 原理: 建立一個獨立的新 inode 和新資料區塊,該區塊儲存的內容是「原始檔案的路徑字串」。
  • 指令: ln -s [來源檔案] [目標連結檔名]。
  • 特性:
    • 可以跨檔案系統。
    • 可以連結目錄。
    • 若原始檔案被刪除,符號連結會變成一個無法存取的「懸空連結」(dangling link)。
  • 觀察: 使用 ls -l 查看時,檔案類型以 l 標示。

連結技術應用分析 (網盤推測)

  • 實體連結模式: 若網盤使用此技術,使用者「儲存」他人分享的檔案僅是建立連結。即使原始分享者刪除檔案,只要還有其他使用者連結存在,檔案實體仍在伺服器上,可能引發隱私問題。
  • 符號連結模式: 若使用此技術,當原始分享者刪除檔案或停止分享,所有其他使用者的連結會同時失效。

Linux 特殊裝置檔案

  • /dev/null
    • 一個「黑洞」或「空裝置」,任何寫入其中的資料都會被直接丟棄。
    • 常用於重新導向程式不需要的輸出訊息,例如 2> /dev/null 將錯誤訊息丟棄。
    • 可用於不精確的磁碟速度測試(dd if=/dev/sdX of=/dev/null),但結果會受系統快取影響而失準。
  • /dev/zero
    • 一個「零裝置」,會不斷產生零位元組 (0)。
    • 主要用於快速建立一個指定大小且內容全為零的檔案,例如 dd if=/dev/zero of=somefile bs=1M count=10 會產生一個 10MB 的檔案。
  • Null Block Device (敞板裝置)
    • 一個虛擬裝置,對其讀寫會立即回報「空間已滿」,用於測試軟體在磁碟滿載時的錯誤處理能力。

Linux 系統管理與工具

  • 使用者通訊
    • write [使用者帳號]: 向另一位已登入的使用者傳送即時訊息。
    • wall: 向所有在線上的使用者廣播訊息,常用於系統維護公告。
  • 持續性工作管理 (Screen)
    • 用途: screen 是一個終端機多工器,用於建立一個即使在使用者登出或連線中斷後,內部工作仍能持續執行的虛擬視窗 (session)。
    • 解決問題: 避免長時間執行的任務因登出而中斷或變成無法控制的「孤兒程序」。
    • 基本操作:
      • screen: 啟動一個新的 screen session。
      • Ctrl+A 後按 D: 分離 (detach) 目前的 session,使其在背景執行。
      • screen -ls: 列出所有在背景運行的 sessions。
      • screen -r [session_id]: 重新連接 (re-attach) 到指定的 session。
    • 安全提醒: 離開前應確實登出或關閉 screen,否則會保留權限在終端機上,帶來安全風險。

硬碟資料清除與恢復

  • 清除原理: 單純格式化或用 dd 寫入零值 (/dev/zero) 無法保證 100% 清除,專業機構仍可透過分析磁粉殘留訊號還原部分資料。
    • 更安全的做法是重複寫入 0、寫入 1,再寫入隨機資料。
  • 二手硬碟風險: 拍賣網站的二手硬碟通常只經快速格式化,資料極易恢復。公家機關汰換的硬碟資料雖可能被加密,但檔案列表仍可能洩漏資訊。
  • 檢測方法: 可使用 dd 從硬碟隨機位置讀取一小塊資料,再用 hexdump 檢查。若內容為隨機資料,表示未被徹底清除;若全為 0,則表示已被覆寫。
  • RAID 陣列: RAID 1 的單顆硬碟資料可恢復;RAID 0 或 RAID 5 等有條帶化的陣列,單顆硬碟資料不完整,無法直接讀取。

2026-0416-02.png