<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Linux用戶ID和組ID

          共 2473字,需瀏覽 5分鐘

           ·

          2024-07-19 12:00

          點擊上方藍(lán)色字體,關(guān)注我們

          在 Linux 系統(tǒng)中,用戶和組 ID 用于識別進(jìn)程和文件的訪問權(quán)限。每個進(jìn)程都有與之關(guān)聯(lián)的實際用戶 ID、實際組 ID、有效用戶 ID、有效組 ID 以及附屬組 ID。



          實際用戶 ID (Real User ID, UID)

          • 定義實際用戶 ID 是啟動進(jìn)程的用戶的 ID。

          • 作用標(biāo)識執(zhí)行該進(jìn)程的用戶。

          • 獲取使用 getuid() 函數(shù)可以獲取實際用戶 ID。


          實際組 ID (Real Group ID, GID)

          • 定義實際組 ID 是啟動進(jìn)程的用戶組的 ID。

          • 作用標(biāo)識執(zhí)行該進(jìn)程的用戶組。

          • 獲取使用 getgid() 函數(shù)可以獲取實際組 ID。


          有效用戶 ID (Effective User ID, EUID)

          • 定義有效用戶 ID 用于控制進(jìn)程對文件系統(tǒng)資源的訪問權(quán)限。

          • 作用決定進(jìn)程的訪問權(quán)限。例如,具有 root 權(quán)限的進(jìn)程可以通過將 EUID 設(shè)置為 0 來獲得特權(quán)操作的權(quán)限。

          • 獲取使用 geteuid() 函數(shù)可以獲取有效用戶 ID。


          有效組 ID (Effective Group ID, EGID)

          • 定義有效組 ID 用于控制進(jìn)程對文件系統(tǒng)資源的訪問權(quán)限。

          • 作用與有效用戶 ID 類似,決定進(jìn)程在組級別上的訪問權(quán)限。

          • 獲取使用 getegid() 函數(shù)可以獲取有效組 ID。


          附屬組 ID (Supplementary Group IDs)

          • 定義附屬組 ID 是用戶所屬的其他組的 ID 列表,除了實際組 ID 和有效組 ID 之外。

          • 作用允許進(jìn)程獲得多個組的權(quán)限,從而可以訪問更多的資源。

          • 獲取使用 getgroups() 函數(shù)可以獲取附屬組 ID 列表。


          以下代碼演示如何獲取并打印這些 ID:


          #include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <grp.h>
          int main() { uid_t uid = getuid(); gid_t gid = getgid(); uid_t euid = geteuid(); gid_t egid = getegid(); printf("Real User ID: %d\n", uid); printf("Real Group ID: %d\n", gid); printf("Effective User ID: %d\n", euid); printf("Effective Group ID: %d\n", egid);
          int ngroups = 10; gid_t groups[10]; if (getgroups(ngroups, groups) == -1) { perror("getgroups"); } else { printf("Supplementary Group IDs: "); for (int i = 0; i < ngroups; i++) { printf("%d ", groups[i]); } printf("\n"); }
          return 0;}


          了解和正確使用這些 ID 是管理 Linux 系統(tǒng)權(quán)限的重要基礎(chǔ)。實際用戶 ID 和實際組 ID 標(biāo)識了執(zhí)行進(jìn)程的用戶和組,而有效用戶 ID 和有效組 ID 決定了進(jìn)程的權(quán)限。附屬組 ID 則允許進(jìn)程在多個組中進(jìn)行操作,靈活性更高。


          總結(jié)一下這些ID的特點:

          • 實際用戶 ID (UID)實際組 ID (GID) 標(biāo)識了進(jìn)程的擁有者,即誰啟動了這個進(jìn)程。它們通常不會改變。

          • 有效用戶 ID (EUID)有效組 ID (EGID) 用于訪問權(quán)限控制,決定了進(jìn)程對系統(tǒng)資源的訪問權(quán)限。這些 ID 可以在程序運行過程中改變(例如,通過 setuid 系統(tǒng)調(diào)用)。

          • 附屬組 ID 列出了用戶所屬的所有其他組,這些組可以給予用戶額外的權(quán)限。


          點擊閱讀原文,更精彩~

          瀏覽 40
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费视频a | 久久国精品 | 亚洲电影一级片 | 成人导航网站 | 日韩福利片 |