Ви можете використовувати: 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, є:
-а, --додавати
Додайте користувача до додаткової групи . Використовуйте лише опцію -G .
...
-G, --групи GROUP1 [, GROUP2, ... [, GROUPN]]]
Список додаткових груп, учасником яких є також користувач. Кожна група відокремлена від наступної комою, не маючи пробілів. Групи підпадають під ті ж обмеження, що й група, що надається з опцією -g .
Якщо користувач наразі є членом групи, яка не вказана в списку, його буде видалено з групи. Цю поведінку можна змінити за допомогою параметра -a , яка додає користувача до поточного додаткового списку груп.
...