分清 linux 中的 初始使用者組,有效使用者組,初始使用者,有效使用者
本文引自 部落格文章
實際使用者 (real user id)
實際使用者就是登陸到shell的時候的使用者,也就是最開始的使用者。
who am i所列出的就是實際使用者。
有效使用者(effective user id)
所謂有效使用者,就是用su或者su -所切換到的使用者。用whoami所列出的就是這個有效使用者。
如果你執行了一個命令產生了一個程序,那麼此程序的USER就是有效使用者ID
初始使用者組
還記得/etc/passwd檔案裡的第4欄麼(忘了的話,用cat /etc/passwd去看看),它表示GID,就是“使用者組ID”,我們稱這個值為“初始使用者組”。當用戶登陸系統時,立刻就擁有了這個使用者組的相應許可權。
如果你知識掌握的夠紮實,你還會想到/etc/group檔案,這裡面儲存著所有的使用者組名稱以及相應的使用者賬號列表。請你注意,這個使用者賬號列表裡原則上來說可以不儲存“初始使用者組名稱”的,因為初始使用者組名稱在/etc/passwd裡已經儲存了,沒必要在這裡再重複儲存了。
有效使用者組
有效使用者組表示使用者此時此刻所在的使用者組是什麼。有些同學會問“難道使用者所在的使用者組還會來回來去的變麼?”。答案是肯定的。這都是newgrp命令搞得鬼,它可以幫助使用者轉換到不同的使用者組。比如newgrp group123,就可以讓使用者轉換到group123使用者組了。請注意,這種轉換的背後原理是“建立一個新的子shell”,恢復到原來使用者組的方法是用exit或ctrl-D來登出當前的shell。
好了,說結論吧,有效使用者組就是用newgrp命令所切換到的使用者組。(當然,如果你一次也沒有使用newgrp命令,那麼有效使用者組就是初始使用者組嘍)
當然,你可以用groups命令來列出當前使用者所支援的所有使用者組。(在有些系統中,第一個列出的就是有效使用者組,但有些系統並不這麼做)
還有一點應該注意,就是當你建立一個檔案時,此檔案的所屬使用者組就是建立人當前的有效使用者組。
結論
1 當用su或者su -切換使用者時,其使用者組都會隨之改變,系統會根據所要切換的有效使用者ID去/etc/passwd裡尋找相對應的初始使用者組,然後切換之。
2 建立一個檔案時,系統會根據有效使用者和有效使用者組來建立。