Ты можешь использовать: 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 , который добавляет пользователя в текущий список дополнительных групп.
...
Если вы выполнили команды в точности так, как вы показали в своем вопросе, вы создали не пользователя Keith, а только пользователя John. Для выполнения команд одна за другой в командной строке их необходимо разделять с помощью
;
или&&
. В противном случае будет выполнена только первая команда:Если вы сделали выполнить их правильно, быть осторожным прописными буквами. В своем вопросе вы упоминаете и «Джон» и «Джон». Это должно работать:
источник
Вы также можете редактировать файлы конфигурации вручную:
Назначьте идентификатор и другие поля.
источник