1. 程式人生 > >分清 linux 中的 初始使用者組,有效使用者組,初始使用者,有效使用者

分清 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 建立一個檔案時,系統會根據有效使用者和有效使用者組來建立。