Command-Line

將使用者名添加到組後,組和組 USERNAME 的不同輸出

  • April 21, 2021

我今天偶然發現了一個奇怪的行為。將使用者添加到新組後,如下所示:

# gpasswd -a test myuser

然後連接到一個新的 bash 會話,這是groupsand的結果groups myuser

myuser@mycomputer$ groups
wheel myuser
myuser@mycomputer$ groups myuser
wheel myuser test

僅當我重新啟動時,輸出groups才會與 相同groups myuser,但不必以相同的順序顯示組。

所以我的問題很簡單:為什麼?

因為對組成員身份的更改只有在啟動新的登錄shell後才會生效。啟動一個新的非登錄互動式 shell 會話(這是您打開新終端時得到的)是無關緊要的。

因此,當您執行時groups,將列印您的使用者目前所在的組。但是,這些組是在您的使用者首次登錄時設置的,並且在您再次登錄之前無法更改。因此,groups不包括您的新組。

另一方面,當您執行時groups myuser,系統不會查找目前使用者所屬組,它會查找使用者myuser所屬的組,它通過讀取設置文件獲得(/etc/group大概是) . 由於您的使用者已設置為屬於 中的新組/etc/groups,因此該命令也顯示了這一點,即使您目前不在該組中,因為您還沒有再次登錄。

引用自:https://unix.stackexchange.com/questions/512071