在unix程序中涉及多個使用者id和使用者組id,包括如下:
1、實際使用者id和實際使用者組id:標識我是誰。也就是登入使用者的uid和gid,比如我的linux以simon登入,在linux執行的所有的命令的實際使用者id都是simon的uid,實際使用者組id都是simon的gid(可以用id命令檢視)。
2、有效使用者id和有效使用者組id:程序用來決定我們對資源的訪問許可權。一般情況下,有效使用者id等於實際使用者id,有效使用者組id等於實際使用者組id。當設定-使用者-id(suid)位設定,則有效使用者id等於檔案的所有者的uid,而不是實際使用者id;同樣,如果設定了設定-使用者組-id(sgid)位,則有效使用者組id等於檔案所有者的gid,而不是實際使用者組id。
以上來自:apue(《高階unix環境程式設計》)
unix系統通過程序的有效使用者id和有效使用者組id來決定程序對系統資源的訪問許可權。
以上這些概念還是比較的抽象,那麼下面寫乙個小的測試程式:
這個程式非常簡單沒有什麼好說的。我們編譯這個程式生成test 程式
通過id命令看到當前登入使用者為root,uid=0,gid=0。通過ls命令我們可以看出test程式沒有設定suid和sgid,所有者是root,所有組也是root。執行test我們發現有效使用者id等於實際使用者id(0),有效使用者組id等於實際使用者組id(0)。
你可能注意到test的所有者root,組也是root,和實際使用者,實際使用者組是一樣的。下一步我們修改一下test所有者和組,再看結果。
發現結果和上面一樣,test程序的有效使用者id等於實際使用者id(0),有效使用者組id等於實際使用者組id(0)。
下面我們給test程式設定suid
發現設定test程式的suid位之後,test程序的有效使用者id等於檔案所有者的uid(gkh的uid為500),有效使用者組id還是等於實際使用者組id(0)。這樣程式就可以訪問只有gkh才能訪問的資源了。
Linux程序的實際使用者ID和有效使用者ID
本人對unix下的程序的實際使用者id和有效使用者id一直都比較迷惑,沒有完全搞清楚。最近溫習apue 高階unix環境程式設計 終於對這兩個概念有了乙個清晰的認識,看來經典著作絕對需要溫習多遍,才能領略其中的奧秘。在unix程序中涉及多個使用者id和使用者組id,包括如下 1 實際使用者id和實際...
Linux程序的實際使用者ID和有效使用者ID
在unix程序中涉及多個使用者id和使用者組id,包括如下 1 實際使用者id和實際使用者組id 標識我是誰。也就是登入使用者的uid和gid,比如我的linux以simon登入,在linux執行的所有的命令的實際使用者id都是simon的uid,實際使用者組id都是simon的gid 可以用id命...
Linux程序的實際使用者ID和有效使用者ID
本人對unix下的程序的實際使用者id和有效使用者id一直都比較迷惑,沒有完全搞清楚。最近溫習apue 高階unix環境程式設計 終於對這兩個概念有了乙個清晰的認識,看來經典著作絕對需要溫習多遍,才能領略其中的奧秘。在unix程序中涉及多個使用者id和使用者組id,包括如下 1 實際使用者id和實際...