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

Nat*_*apa 9 linux user ubuntu

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

我添加了这些用户使用

sudo adduser John 
sudo adduser Keith
Run Code Online (Sandbox Code Playgroud)

我现在如何将 john 添加到 Keith 的群组?

我试过:

sudo usermod -aG Keith john
Run Code Online (Sandbox Code Playgroud)

但我得到:

usermod: group 'Keith' does not exist
Run Code Online (Sandbox Code Playgroud)

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

Яро*_*лин 17

您可以使用: 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 - 修改用户帐户

概要

usermod [选项] 登录

描述

usermod命令命令修改系统帐户文件,以反映在命令行上指定的变化。

选项

适用于usermod命令的选项是:

  • -a, --append

    将用户添加到补充。仅与-G选项一起使用。

  • ...

  • -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]

    用户也是其成员的补充组列表。每个组之间用逗号分隔,中间没有空格。这些组受到与使用-g选项给出的组相同的限制。

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

  • ...