刷新补充组成员身份而不再次login?

根据我的理解,Linux会话在login时会caching其组成员资格。 然后,如果添加新的组成员资格(例如,用adduser someuser somegroup ),则用户必须注销并再次login才能利用新成员资格。

我的问题是:是否有任何方法可以在不进行重新login,退出当前进程或启动新进程的情况下刷新组成员进程?

你可以从你的会话开始新的login

 $ su - your_login 

它不会影响您的运行过程。 如果您使用的是Xserver,则可以启动xterm并键入此命令(仅影响此terminal会话)使其持久化的唯一方法是完成会话并重新启动它

我不这么认为。 但是你可以使用newgrp命令来产生一个带有新组的新shell。 这不是永久的。

 newgrp superawesomegroupname 

您将需要再次login您的用户。

其他人提到“ su - $USER ”和“ newgrp ”,我想我应该提到你也应该看看“ sg ”。

这个怎么样(虽然只符合你不需要login的要求)

 exec /bin/bash -l 

-l标志会假设一个新的loginshell,exec将用新的shellreplace当前的shell。 顺便说一句,不要错误的shell的名称:-)

先前build议的使用newgrp和su的一个问题是将会创build一个新的子shell。 是的,你也可以在exec命令前加上它们。

您可以使用gpasswd进行即时更改:

 gpasswd -a someuser somegroup 

没有必要创build新的shell或relogin。 之后使用getentvalidation组成员资格:

 getent group somegroup 

你可以做:

 exec su -l $USER 

这隐含刷新组列表,而无需退出terminal。