据我了解,Linux 会话在登录时会缓存其组成员身份。然后,如果添加了新的组成员身份(例如,使用adduser someuser somegroup
),用户必须注销并再次登录才能利用新成员身份。
我的问题是:有没有办法在进程中刷新组成员资格,而无需再次登录、退出当前进程或启动新进程?
据我了解,Linux 会话在登录时会缓存其组成员身份。然后,如果添加了新的组成员身份(例如,使用adduser someuser somegroup
),用户必须注销并再次登录才能利用新成员身份。
我的问题是:有没有办法在进程中刷新组成员资格,而无需再次登录、退出当前进程或启动新进程?
您可以从会话开始新的登录
它不会影响您的运行过程。如果您正在使用 Xserver,您可以启动 xterm 并键入此命令(仅影响此终端会话)使其持久化的唯一方法是完成您的会话并重新启动它
你可以做:
这会隐式刷新组列表,而无需退出终端。
我不这么认为。但是您可以使用该
newgrp
命令为新组生成一个新 shell。这不是永久性的。您需要重新登录您的用户。
其他人提到了“
su - $USER
”和“newgrp
”,我想我应该提一下,你也应该看看“sg
”。这个怎么样(虽然它只满足你不必重新登录的要求)
-l 标志会假设一个新的登录 shell,而 exec 会用那个新的 shell 替换当前的 shell。顺便说一句,不要输入错误的外壳名称:-)
如前所述,使用 newgrp 和 su 的一个问题是会创建一个新的子 shell。是的,您也可以在它们之前使用 exec 命令。
您可以使用
gpasswd
立即更改:无需创建新的外壳或重新登录。然后使用以下方式验证组成员身份
getent
: