Linux中是否有一种无需再次登录即可更新用户/组属性的方法?


24

在编辑/ etc / group并将用户添加到它不属于的组后,该用户将无法使用它新获得的特权,除非它启动了新的会话。

是否有命令在正在进行的会话中刷新用户/组属性?


1
您是否有理由手动编辑文件而不是使用文件useradd -G groupname username
鲍比(Bobby)2010年

4
@鲍比:这没有什么区别。
niXar 2010年

您可能会看这个答案
巴勃罗

Answers:


16

在内核级别,组成员身份是每个进程的属性。除非它具有适当的功能(如果我没记错的话,请输入CAP_SETGID),即出于所有意图和目的的root特权,否则某个进程不能属于新组。

在内核级别,用户不作为对象存在。只有进程(和文件)可以。进程具有一个uid(有效和诸如此类)和一个组ID列表。

当您将用户添加到组时,内核不知道这意味着什么。它仅间接地知道,下次运行/ bin / login或/ usr / bin / newgrp时,具有该用户ID的进程将在其列表中具有新的组ID。

因此,要回答您的问题,如果要进行Gnome或KDE会话,则必须重新启动它。或者,如果您只关心一个命令的结果,那么可以使用我刚刚提到的newgrp。它将使用新添加的组开始一个新的Shell。


5

在此之前,我已经阅读过newgrp命令,但仅适用于当前shell。似乎没有比注销并重新登录更好的选择。


3
newgrp所做的实际上是启动一个新的shell。因此,如果您从中退出^ D,您将回到原来的外壳。我通常只是做'EXEC使用newgrp'
niXar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.