如何在不注销和登录的情况下使`usermod`命令生效

iro*_*and 8 fedora

我正在使用fedora19,并且我已经wheel像这样添加到我的帐户中。

usermod -a -G wheel ironsand

我已经注销并重新登录以根据以下答案使命令生效。 https://ask.fedoraproject.org/question/9769/sofia-is-not-in-the-sudoers-file/

.bashrc如果我使用source命令,我不需要在更改时重新启动。有没有办法usermod同样生效?

slm*_*slm 6

小心你在哪里画你的类比。.bashrc从某种意义上说,源的来源可能是危险的,因为如果向其中添加变量,您将陷入可能发生以下情况的情况:

初始环境

PATH=/path/to/dir
Run Code Online (Sandbox Code Playgroud)

来源环境

PATH=/path/to/dir:/path/to/dir
Run Code Online (Sandbox Code Playgroud)

这就是为什么当对低级别环境文件(例如.bashrc和/或.bash_profile.

添加到 Unix 组或从 Unix 组中删除也应视为重大更改,需要注销/登录。

您至少可以在单个 shell 中获得一些访问权限,方法是针对 Unix 组更改执行以下 3 个操作之一:

  • su - <user>
  • su <user>
  • newgrp

第三种方法可行,但它需要您盲目地将自己更改为尚未出现在现有环境中的组,然后将您的主要组设置为新组,这可能不是您想要的。

为什么

如果您查看手册页和凭据,您将了解为什么子进程不能通过usermod立即以实时方式反映的方式进行更改:

摘抄

fork(2) 创建的子进程继承其父进程的用户和组 ID 的副本。在 execve(2) 期间,进程的真实用户和组 ID 以及补充组 ID 被保留;如 execve(2) 中所述,可以更改有效和保存的集 ID。