如何看SID:完整指南,教您在Windows系統中查詢使用者、群組及電腦的安全識別碼

如何看SID: Windows系統中安全識別碼的詳細查詢指南

在Windows作業系統中,SID (Security Identifier) 是一個極為重要的概念。它是一個長且唯一的字母數字字串,用於唯一識別系統中的使用者帳戶、群組、電腦帳戶,甚至其他安全主體。當您登入Windows、存取檔案或設定權限時,系統實際上是依賴於這些SID來執行操作,而不是依賴於帳戶名稱。

理解並能夠查詢SID對於系統管理員、IT專業人員以及任何需要進行進階系統故障排除或安全分析的人來說至關重要。本篇文章將深入探討如何看SID,提供多種在Windows環境下查詢使用者、群組和電腦SID的方法,並解釋其重要性與應用情境。

SID 是什麼?為何它如此重要?

每一個在Windows系統中創建的使用者、群組或電腦,都會被指派一個獨一無二的SID。這個識別碼如同它們的數位指紋,即使您更改了使用者帳戶的名稱,其背後的SID仍然保持不變。這就是為什麼當您將使用者名稱從「舊名稱」改為「新名稱」時,所有相關的檔案權限和設定仍然有效的原因,因為系統識別的始終是那個不變的SID。

SID 的重要性體現在以下幾個方面:

  • 權限管理: 所有檔案、資料夾、登錄機碼等資源的存取控制列表(ACL)都是基於SID而非帳戶名稱來設定權限的。
  • 帳戶唯一性: 確保即使在大型網路環境中,每個安全主體都擁有一個唯一的識別符。
  • 系統遷移: 在系統遷移或重建使用者設定檔時,理解和處理SID可以避免權限問題。
  • 故障排除: 當遇到存取被拒絕或其他權限相關問題時,查詢SID有助於診斷問題。

SID 的基本結構解析

一個典型的SID看起來會是這樣:
S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-YYYY

  • S: 表示這是一個SID。
  • 1: SID 的修訂版本號。
  • 5: 識別碼授權單位(Identifier Authority),此處5代表NT Authority。
  • 21: 對於網域或本機電腦帳戶而言,這是一個重要的前綴。
  • XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX: 這三組數字是網域或本機電腦的唯一識別碼,通常稱為網域ID或子授權單位。對於網域中的使用者,這部分代表該網域的SID。
  • YYYY: 這是相對識別碼(Relative ID, RID)。RID用於區分在同一網域或本機電腦中的不同安全主體。每個使用者、群組的RID都是唯一的。

一些常見的RID範例:

  • 500: 內建的Administrator帳戶
  • 501: 內建的Guest帳戶
  • 502: Kerberos發行中心服務帳戶 (KRBTGT)
  • 544: Administrators群組
  • 545: Users群組

如何看SID:多種查詢方法詳解

現在,我們將詳細介紹多種在Windows系統中查詢SID的方法,無論是透過命令列、PowerShell還是圖形介面,總有一種適合您。

1. 使用命令提示字元 (Command Prompt) 查詢 SID

命令提示字元是查詢SID最快速、最直接的方法之一。以下是幾種常用的命令:

方法一:查詢目前登入使用者的 SID

這是最簡單的方法,用於查看您當前所登入的使用者帳戶的SID。

  1. 按下 Win + R 鍵,輸入 cmd,然後按 Enter 開啟命令提示字元。
  2. 在命令提示字元視窗中,輸入以下命令並按 Enter

    whoami /user

    whoami /user 命令結果範例

    (請注意:此圖片為示意圖,實際內容將以文字取代)

  3. 系統將顯示您當前登入的使用者名稱和其對應的SID。

範例輸出:

使用者名稱 SID
===================== =============================================
desktop-xxxx\UserName S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-1001

方法二:查詢本機所有使用者或群組的 SID

使用 wmic 命令可以查詢本機系統上所有使用者帳戶或群組的名稱和SID。

  1. 開啟命令提示字元 (Win + R,輸入 cmd,Enter)。
  2. 查詢所有本機使用者帳戶的SID:

    輸入以下命令並按 Enter

    wmic useraccount get name,sid

    wmic useraccount 命令結果範例

    (請注意:此圖片為示意圖,實際內容將以文字取代)

    範例輸出:

    Name SID
    Administrator S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-500
    Guest S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-501
    UserName S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-1001

  3. 查詢所有本機群組的SID:

    輸入以下命令並按 Enter

    wmic group get name,sid

    範例輸出:

    Name SID
    Administrators S-1-5-32-544
    Users S-1-5-32-545
    Guests S-1-5-32-546

2. 使用 PowerShell 查詢 SID

PowerShell 提供了更強大和靈活的方式來管理Windows系統,查詢SID也不例外。它特別適用於自動化腳本和處理大量資料。

方法一:查詢本機使用者或群組的 SID

  1. 按下 Win + X 鍵,然後選擇 Windows PowerShell (管理員)Windows Terminal (管理員)
  2. 查詢所有本機使用者帳戶的SID:

    輸入以下命令並按 Enter

    Get-LocalUser | Select-Object Name, SID

    範例輸出:

    Name SID
    ---- ---
    Administrator S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-500
    UserName S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-1001

  3. 查詢所有本機群組的SID:

    輸入以下命令並按 Enter

    Get-LocalGroup | Select-Object Name, SID

    範例輸出:

    Name SID
    ---- ---
    Administrators S-1-5-32-544
    Users S-1-5-32-545

方法二:查詢 Active Directory 網域使用者或群組的 SID (需要 AD PowerShell 模組)

如果您在一個Active Directory網域環境中,並且安裝了「遠端伺服器管理工具 (RSAT)」中的「Active Directory PowerShell」模組,您可以使用以下命令查詢網域物件的SID。

  1. 開啟 Windows PowerShell (管理員)
  2. 查詢特定的網域使用者帳戶的SID:

    輸入以下命令,將 <使用者名稱> 替換為實際的網域使用者帳戶名,然後按 Enter

    Get-ADUser -Identity "使用者名稱" | Select-Object Name, SID

    範例: Get-ADUser -Identity "john.doe" | Select-Object Name, SID

  3. 查詢特定的網域群組的SID:

    輸入以下命令,將 <群組名稱> 替換為實際的網域群組名,然後按 Enter

    Get-ADGroup -Identity "群組名稱" | Select-Object Name, SID

    範例: Get-ADGroup -Identity "Domain Admins" | Select-Object Name, SID

3. 透過登錄編輯程式 (Registry Editor) 查詢使用者設定檔的 SID

每個Windows使用者帳戶都有一個對應的設定檔,其路徑儲存在登錄檔中。您可以透過登錄編輯程式找到這些設定檔及其關聯的SID。

警告: 編輯登錄檔具有風險。不正確的修改可能會導致系統不穩定或無法啟動。在進行任何修改之前,請務必備份登錄檔。

  1. 按下 Win + R 鍵,輸入 regedit,然後按 Enter 開啟登錄編輯程式。
  2. 導航到以下路徑:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
  3. ProfileList 下,您會看到一系列以 S-1-5-21- 開頭的資料夾。這些資料夾的名稱就是使用者帳戶的SID。
  4. 點擊每個SID資料夾,在右側窗格中尋找 ProfileImagePath 這個值。這個值會顯示該SID對應的使用者設定檔路徑,例如 C:\Users\UserName。透過這個路徑,您可以確認哪個SID對應哪個使用者帳戶。
  5. 登錄編輯程式中查詢SID範例

    (請注意:此圖片為示意圖,實際內容將以文字取代)

4. 在 Active Directory 使用者及電腦 (ADUC) 中查詢網域使用者/群組 SID

對於在Active Directory環境中的使用者和群組,ADUC是查詢其屬性(包括SID)的圖形化工具。這需要您的電腦加入網域,並安裝了RSAT工具。

  1. 在加入網域的電腦上,按下 Win + R 鍵,輸入 dsa.msc,然後按 Enter 開啟 Active Directory 使用者及電腦。
  2. 在ADUC中,導航到包含您要查詢的使用者或群組的OU (組織單位)。
  3. 右鍵點擊目標使用者或群組,然後選擇 屬性 (Properties)
  4. 在屬性視窗中,點擊 屬性編輯器 (Attribute Editor) 標籤頁。

    (請注意:如果看不到「屬性編輯器」標籤,您需要在ADUC中啟用「進階功能」。點擊選單列的「檢視(View)」,然後勾選「進階功能(Advanced Features)」)
  5. 在「屬性編輯器」中,滾動列表,找到 objectSID 屬性。其值就是該使用者或群組的SID。
  6. ADUC中objectSID屬性範例

    (請注意:此圖片為示意圖,實際內容將以文字取代)

5. 使用 Sysinternals PsGetSID 工具 (第三方工具)

Microsoft Sysinternals 工具集提供了許多強大的系統管理工具,其中 PsGetSID 是一個輕量級的命令列工具,專門用於查詢電腦、使用者或群組的SID。

  1. 前往 Microsoft Sysinternals 網站下載 PsTools 套件:https://learn.microsoft.com/en-us/sysinternals/downloads/pstools
  2. 解壓縮下載的 PsTools.zip 檔案到一個目錄,例如 C:\PsTools
  3. 開啟命令提示字元 (管理員身份)。
  4. 導航到您解壓縮 PsTools 的目錄,例如:cd C:\PsTools
  5. 查詢本機電腦的 SID:

    輸入以下命令並按 Enter

    PsGetSID \\localhost

    範例輸出:

    SID for \\localhost:
    S-1-5-21-xxxxxxxxxx-xxxxxxxxxx-xxxxxxxxxx-500

  6. 查詢特定使用者帳戶的 SID:

    輸入以下命令,將 <使用者名稱> 替換為實際的使用者帳戶名,然後按 Enter

    PsGetSID \\localhost <使用者名稱>

    範例: PsGetSID \\localhost UserName

總結

掌握如何看SID是進行Windows系統管理和故障排除的重要技能。無論您是需要確認特定帳戶的唯一識別碼、解決權限問題,還是在執行自動化任務,上述提供的多種方法都能幫助您有效率地獲取所需的SID資訊。

從簡單的 whoami /user 到進階的 PowerShell 命令,再到圖形化的ADUC,您可以根據您的具體需求和環境選擇最合適的工具。希望這篇詳細的指南能幫助您更深入地理解並利用Windows系統中的安全識別碼。

常見問題 (FAQ)

Q1: 如何區分本機 SID 和網域 SID?

A1: 本機SID通常只包含電腦本身的唯一識別碼和一個RID(例如S-1-5-21-XXXXXXXXXX-YYYY)。而網域SID則包含網域的唯一識別碼和使用者的RID(S-1-5-21-網域ID-使用者RID)。當您看到SID的開頭S-1-5-21之後的一長串數字是相同的,那這部分就是網域或本機電腦的識別碼,而最後的數字(RID)則區分了網域或本機上的不同帳戶。

Q2: 為何 SID 在系統遷移或重新安裝後很重要?

A2: 當您重新安裝Windows或將資料從舊系統遷移到新系統時,如果沒有正確處理使用者設定檔和權限,可能會導致檔案和資料夾的存取問題。這是因為舊設定檔的檔案權限是基於舊的SID來設定的。新的使用者帳戶即使名稱相同,也會有不同的SID。了解SID可以幫助您使用工具(如Robocopy的/copyall選項)或命令來正確地將舊的權限映射到新的SID上。

Q3: 如何知道我的電腦 SID?

A3: 您可以使用命令提示字元或PowerShell來查詢電腦本身的SID。一個常用且簡便的方法是使用 Sysinternals 的 PsGetSID 工具。在命令提示字元中導航到 PsGetSID 的路徑後,執行 PsGetSID \\localhost 即可顯示您電腦的SID。

Q4: 我可以手動更改 SID 嗎?

A4: 不建議手動更改SID,因為這可能會破壞系統的穩定性和安全性。SID是Windows系統內部用於識別安全主體的基礎。雖然有些專業工具(如Sysprep在通用化模式下)可以產生新的電腦SID,但對於使用者和群組的SID,它們是設計為永久且不可更改的。手動篡改會導致嚴重的權限和存取問題,可能使系統無法正常運作。

Q5: SID 是否會重複?

A5: SID在理論上是唯一的,在實際的Windows系統中幾乎不可能重複。當一個新的使用者、群組或電腦被創建時,系統會生成一個保證其唯一性的SID。即使在全球範圍內,由於SID的設計和足夠長的字串,不同電腦或網域之間產生重複SID的機率也是微乎其微的。SID的唯一性是Windows安全性模型的基石。

如何看SID