進程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文件或目錄所佔內存大小。