亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: Linux中,進程組ID和用戶組ID以及有效組ID是什么關系? [打印本頁]

作者: chen_bo0302    時間: 2015-03-13 11:10
標題: Linux中,進程組ID和用戶組ID以及有效組ID是什么關系?
與進程關聯(lián)的ID有6個以上:實際用戶ID。實際組ID。有效用戶ID。有效組ID。保存的設置用戶ID。保存的設置組ID。那進程組ID對應的是其中哪個,還是說它是進程的另一種ID?他們的區(qū)別和聯(lián)系是什么?看書自己住,琢磨不明白,求大神指導。

作者: thy_shenzhen    時間: 2015-03-16 13:11
這幾個跟權限配置有關,了解下chroot就知道了。

至于為什么搞那么多數(shù)字,跟unix的歷史有關,linux是unix的一個分支的子孫,所有這就有點遠了。


作者: superwujc    時間: 2015-03-16 17:36
回復 1# chen_bo0302
real user/group ID 標識了進程的執(zhí)行者/創(chuàng)建者,real ID 通常在用戶登錄系統(tǒng)時,由login(1)進程讀取系統(tǒng)passwd/group 文件來設置

effective user/group ID 與supplementary group ID 共同決定了授予進程執(zhí)行系統(tǒng)調用時的權限,effective ID 通常與real ID 具有相同的值,但可以通過一些系
統(tǒng)調用或執(zhí)行set-user/group-ID 程序來更改

set-user/group-ID 是文件屬性,而不是進程屬性;當設置了set-user-ID 權限位的文件被執(zhí)行時,內核會將進程的effective user ID 設置為可執(zhí)行文件的屬主(擁有了文件
屬主的權限)

saved set-user/group-ID 用于set-user/group-ID 程序,在進程執(zhí)行時保存effective user-user/group ID 當前值的副本,使得進程的effective ID 值可以在
real ID 與saved set ID 之間切換,實現(xiàn)臨時提升與降低權限
   
file-system user/group ID 是Linux 進程的特有屬性,當執(zhí)行文件系統(tǒng)相關的操作時,使用file-system ID 和supplementary group ID 來決定授予進程的權限
file-system ID 通常與相應的effective ID 具有相同的值,且隨effective ID 的變化而變化

supplementary group ID 是指進程的real user ID 所屬的附加組的GID

程序驗證:
root用戶(id == 0)編輯程序pids.c并編譯
  1. #define _GNU_SOURCE
  2. #include <stdio.h>
  3. #include <unistd.h>

  4. int main(void)
  5. {
  6.     uid_t ruid, rgid, euid, egid, suid, sgid;

  7.     ruid = getuid();
  8.     rgid = getgid();
  9.     euid = geteuid();
  10.     egid = getegid();
  11.    
  12.     getresuid(&ruid, &euid, &suid);
  13.     getresgid(&rgid, &egid, &sgid);

  14.     printf("Real User-ID: %d\n", ruid);
  15.     printf("Real Group-ID: %d\n", rgid);
  16.     printf("Effective User-ID: %d\n", euid);
  17.     printf("Effective Group-ID: %d\n", egid);
  18.     printf("Saved set-user-ID: %d\n", suid);
  19.     printf("Saved set-group-ID: %d\n", sgid);

  20.     return 0;
  21. }
復制代碼
  1. # gcc -m32 pids.c -o pids
復制代碼
新建普通用戶(id != 0)
  1. # useradd user0 -m -s /bin/bash
復制代碼
復制pids程序到普通用戶的宿主目錄,并添加set-user-ID權限位
  1. # cp pids /home/user0/
復制代碼
  1. # chmod u+s /home/user0/pids
復制代碼
切換到普通用戶
  1. # su user0
復制代碼
普通用戶運行程序
  1. $ id
  2. uid=1000(user0) gid=1000(user0) groups=1000(user0)
  3. $ ./pids
  4. Real User-ID: 1000
  5. Real Group-ID: 1000
  6. Effective User-ID: 0
  7. Effective Group-ID: 1000
  8. Saved set-user-ID: 0
  9. Saved set-group-ID: 1000
復制代碼
希望可以為你提供一些思路
作者: chen_bo0302    時間: 2015-03-18 12:35
回復 3# superwujc

感覺有點明白了,謝謝啊


   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2