Users
為什麼“註銷”會話會啟動新添加的補充組?
我問了以下問題 添加了使用者補充組,但今天早些時候“組(1)”沒有顯示變化。現在我想知道為什麼答案有效。執行後
adduser user group
為什麼使用者需要註銷(我什至不確定在沒有視窗管理器的上下文中這意味著什麼),或者為什麼需要呼叫newgrp(1) ?
如果您查看手冊頁,您會看到為什麼子程序無法通過
adduser
實時方式立即反映所做的更改:摘抄
由 fork(2) 創建的子程序繼承其父使用者和組 ID 的副本。在 execve(2) 期間,保留程序的真實使用者和組 ID 以及補充組 ID;如 execve(2) 中所述,可以更改有效和保存的集合 ID。
那麼這是什麼意思?
註銷會結束所有後續程序從中派生的父程序。您桌面中的所有內容等。這個原始過程中有您的組資訊,它通過閱讀
/etc/passwd
&填充/etc/group
。另一個在您的環境如何獲取您的組資訊方面發揮作用的文件是
/etc/nsswitch.conf
. 該文件包含如下行:passwd: files shadow: files group: files
這指示您的系統僅從我剛才提到的文件中讀取有關密碼、組等的資訊。
這些行可以很容易地指示系統使用其他來源(例如 NIS、LDAP 等)來獲取此資訊。
nsswitch.conf
如果您查看
nsswitch.conf
手冊頁,您會發現系統如何能夠獲取使用者名、組和密碼的各種“數據庫”的內容。摘抄
FILES A service named SERVICE is implemented by a shared object library named libnss_SERVICE.so.X that resides in /lib. /etc/nsswitch.conf configuration file /lib/libnss_compat.so.X implements `compat' source for glibc2 /lib/libnss_db.so.X implements `db' source for glibc2 /lib/libnss_dns.so.X implements `dns' source for glibc2 /lib/libnss_files.so.X implements `files' source for glibc2 /lib/libnss_hesiod.so.X implements `hesiod' source for glibc2 /lib/libnss_nis.so.X implements `nis' source for glibc2 /lib/libnss_nisplus.so.2 implements `nisplus' source for glibc 2.1 NOTES Within each process that uses nsswitch.conf, the entire file is read only once; if the file is later changed, the process will continue using the old configuration.
如果您注意到此註釋,則它反映了與此文件類似的情況,
nsswitch.conf
也無法以實時方式對文件進行更改。