作为 Linux 管理新手,我对以下命令有点困惑:
useradd
usermod
groupadd
groupmod
我刚刚读完Linux/Unix管理员手册中的用户管理书,但有些东西仍然有点模糊。
基本上useradd
看起来很简单:
useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert
我可以使用用户名添加“David Hilbert” hilbert
,设置他的默认目录、shell 和组。我认为这-g
是他的主要/默认组,也是-G
他的其他组。
所以这些是我的下一个问题:
- 如果组
faculty
和famous
不存在,此命令仍然有效吗?它会创造它们吗? - 如果没有,我应该使用什么命令来创建新组?
- 如果我删除该用户
hilbert
并且这些组中没有其他用户,它们是否仍然存在?我应该删除它们吗? - 运行
useradd
上面的命令后,如何从famous
组中删除 David,并将他的主要组重新分配给hilbert
尚不存在的组?
答案1
该usermod
命令将允许您更改用户的主要组、补充组或许多其他属性。开关-g
控制主要组。
对于您的其他问题...
如果您指定的组 ,
groupname
在执行期间不存在useradd
,您将收到错误 -useradd:未知组组名该
groupadd
命令创建新组。如果您删除其中包含的所有用户,该组将保留。您不一定需要删除空组。
hilbert
通过创建组groupadd hilbert
。然后使用 移动 David 的主要组usermod -g hilbert hilbert
。 (请注意,第一个hilbert
是组名称,第二个hilbert
是用户名。这在您将用户移动到具有不同名称的组的情况下很重要)
不过,你可能会让事情变得有点复杂。在许多 Linux 发行版中,只需创建一个与主用户同名的useradd hilbert
用户和组。hilbert
我将使用开关添加一起指定的补充组-G
。
答案2
您需要阅读其中man usermod
解释了各种选项会发生什么情况:
usermod -g hilder hilder
只要“hilder”组存在,就会将您的登录组从“faculty”替换为“hilder”。如果它不存在,那么您首先需要使用 groupadd 创建它。
当您使用该-G
选项时,您还应该使用该-a
选项将新组附加到用户“hilder”所属的补充组的当前列表中。如果没有该-a
选项,您将用新的组集替换当前的补充组。因此请谨慎使用。
答案3
要在 Linux 中更改用户的主要组:
usermod -g new_group user_name
- 终止全部 用户名的活跃会话
要测试您的更改,请运行id
并查看值gid=
如果命令运行没有错误,但 gid 没有更改,那么您就错过了步骤 2 中的粗体部分。
答案4
要永久更改用户的主要组,请执行:
- usermod -g 组名 用户名 命令
或者您可以用于newgrp
小环境和临时情况。
创建一个新用户 bob 和一个新组dodo
。
useradd bob
所以在 RedHat/Centos 中我们有 UID=(ID_number) bob; GID=(ID_number) bob 默认为主要组
groupadd dodo
将用户 bob 添加到dodo
组中:
usermod -aG dodo bob -make sure to use "a"
接下来用于newgrp
更改所有权:
newgrp dodo
请小心您的帐户,确保其有密码并成为未来主要组的成员。 newgrp 打开一个新的 shell;只要用户留在该 shell 中,主要组就不会改变。要将主要组切换回原始组,您可以通过运行 exit 命令退出新 shell。