根据我的理解,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。 之后使用getent
validation组成员资格:
getent group somegroup
你可以做:
exec su -l $USER
这隐含刷新组列表,而无需退出terminal。