Вы можете использовать: usermod -a -G grouptoadd username
Поскольку это гораздо менее очевидно, чем я думал, почему -a -G нормально, а -aG нет, я попытаюсь объяснить это:
Опция -G принимает либо одно значение, либо список значений. В случае одного значения это значение может быть задано следующим образом: -GVALUE, поскольку нет необходимости иметь пробел между параметром и значением. Это просто обычная практика.
Если в вашей системе есть группа под названием a, то вызов -Ga становится неоднозначным. Вы хотите, чтобы у пользователя была только одна группа? Вы звоните -a и -G? Тогда является ли "a" значением для -G? Где остальная часть значения (до -G)? Также распространенной практикой является то, что любой однобуквенный вариант может существовать раньше любого другого однобуквенного варианта. so 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 , который добавляет пользователя в текущий список дополнительных групп.
...