進程pid和ppid、進程的uid和euid、用戶的uid和gid、文件的創建者和所有者的關係辨析

進程pid和ppid、進程的uid和euid、用戶的uid和gid、文件的創建者和所有者的關係辨析


1、當我們創建用戶時,由我們爲新建用戶命名和設置密碼,同時系統會爲我們所創建的用戶名關聯一個號,就是所謂的用戶uid。同時我們還可以把這個用戶放到某個用戶羣裏,類似的,用戶羣也可以我們手工建立。如果建立用戶時,不指明所建的用戶屬於哪個用戶羣,則系統會自動建立一個跟用戶名同名的用戶羣。不管手工建立還是自動建立,系統都會爲用戶羣關聯一個號,這個號稱之爲gid。用戶uid所屬的羣的gid就是用戶的gid。


2、系統在運行每個進程時都會關聯幾個號,分別爲pid、ppid、uid、euid。進程的pid爲運行進程時,系統自動分配的,用於唯一標識此進程的一個整數。進程的ppid就是進程的父進程的pid。同時,系統還會爲運行的進程分配一個進程uid和進程euid,用於判斷文件的執行權限。一般情況下,進程uid和進程euid等於運行這個進程的用戶uid。對於某文件,它的執行權限分成文件擁有者、文件擁有者同組、其他用戶三組,從而分成三個級別。用戶euid的作用就是於此。通過比較euid是屬於文件的哪個組,從而決定屬於文件執行權限的哪個級別,那麼這個進程就擁有對該文件什麼級別的執行權限。另外,如果可執行文件的setuid位有效,則運行這個可執行文件時,進程uid還是用戶的uid,而進程euid則會暫時被修改成該可執行文件的所有者用戶uid,直到該進程結束。一句話,在某個進程中,進程pid和ppid是唯一標識該進程的,它不會改變,而進程uid與運行該進程的用戶uid相同,進程euid則與uid相同,只有運行設置了setuid位的文件時纔會把euid改爲這個文件的所有者用戶uid。進程gid和進程egid則類似。


文件的屬性:
  15 14 13 12       11    10    9       8 7 6 5 4 3 2 1 0
   文件類型     setuid setgid sticky    R W X R W X R W X
#define __S_IFMT 0170000  0開頭表示是八進制,這個位決定了文件類型
#define __S_IFDIR 0040000   目錄文件
#define __S_IFCHR 0020000   字符設備文件
。。。。。。。
#define S_IRUSR  文件的所有者可讀
#define S_IWUSR  文件的所有者可寫
#define S_IXUSR  文件的所有者可執行
#define S_IRGRP  文件的所有者的同組用戶可讀
#define S_IROTH  文件的其他用戶可讀

在shell中執行ls -l命令,則會顯示如下:
drwxr-xr-x 2 root root 652 Jul 31 2006 /root/hello
d表示文件,後面幾個表示文件所有者、同組用戶、其他用戶的執行權限,文件數量,文件所有者,文件創建者(注意,RHEL這項是文件所有羣),文件大小,日期,文件所在路徑
du -sh xxx可以測量xxx文件或目錄所佔內存大小。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章