如何将用户添加到另一个用户组?

如何将用户添加到另一个用户组?

我在 Ubuntu 服务器上有一个用户 john 和一个用户 keith

我使用以下方式添加了这些用户

sudo adduser John 
sudo adduser Keith

我现在怎样才能将约翰添加到基思的群组中?

我试过:

sudo usermod -aG Keith john

但我明白:

usermod: group 'Keith' does not exist

我需要做什么才能解决这个问题?

答案1

您可以使用:usermod -a -G grouptoadd username

由于为什么 -a -G 可以而 -aG 不可以并不像我想象的那么明显,所以我将尝试解释它:

-G 选项可以采用一个值或一个值列表。如果采用一个值,则可以像这样给出值:-GVALUE,因为选项和值之间不需要有空格。这只是常见的做法。

如果您的系统上有一个名为 a 的组,那么调用 -Ga 就会变得模棱两可。您想让用户只有一个组 a 吗?您是在调用 -a 和 -G 吗?那么“a”是 -G 的值吗?其余的值(对 -G)在哪里?任何单字母选项都可以放在任何其他单字母选项之前,这也是一种常见做法。所以 tat -xy == -yz。但是,当其中一个选项可以采用单个值(如 VALUE)或多个值(如 VAL1、Val2、val4 等)时,这会产生歧义。

因此,为了使命令 FAILSAFE 并对所有输入正常工作,您必须将 -a 与 -G 分开

man usermod

姓名

usermod—修改用户账户

概要

用户模式[选项] 登录

描述

用户模式命令修改系统帐户文件以反映命令行上指定的更改。

选项

适用于用户模式命令是:

  • -a,--附加

    将用户添加到补充团体(s)。仅与-G选项。

  • ...

  • -G,--群组组 1[,组 2,...[,组 N]]]

    用户也是其成员的补充组列表。每个组与下一个组之间用逗号分隔,中间没有空格。这些组受到与使用-G选项。

    如果用户当前是未列出的组的成员,则该用户将被从该组中删除。此行为可以通过-A选项,将用户附加到当前补充组列表。

  • ...

答案2

如果您完全按照问题中所示执行命令,则您不会创建用户 Keith,而只会创建用户 John。要在命令行上依次执行命令,您需要使用;或将它们分开&&。否则,只会运行第一个命令:

sudo adduser John sudo adduser Keith
adduser: Only one or two names allowed.

如果你做过正确执行它们,注意大写字母。在你的问题中,你提到了“John”和“john”。这应该有效:

sudo adduser keith
sudo adduser john
sudo usermod -aG keith john

答案3

您也可以手动编辑配置文件:

sudo nano /etc/password
sudo nano /etc/group

分配ID和其他字段。

相关内容