在 Linux 中有没有办法更新用户/组属性而无需再次登录?

25 linux session users permissions

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

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

niX*_*Xar 16

在内核级别,组成员资格是每个进程的属性。除非它具有适当的能力(CAP_SETGID,如果我没记错的话),即所有意图和目的的 root 权限,一个进程不能属于一个新组。

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

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

因此,要回答您的问题,如果您说的是 Gnome 或 KDE 会话,则确实必须重新启动它。或者如果你只关心一个命令的结果就新组而言,你可以使用我刚刚提到的 newgrp 。它将使用新添加的组启动一个新的 shell。


小智 5

我之前读过newgrp命令执行此操作,但仅适用于当前 shell。似乎没有比注销并重新登录更好的选择了。

  • newgrp 所做的实际上是启动一个新的 shell。所以如果你 ^D 从中你又回到了你的旧外壳。我通常只是做'exec newgrp' (3认同)