Você pode usar: usermod -a -G grouptoadd username
Desde que é muito menos óbvio do que eu pensava porque -a -G é ok enquanto -AG não é, eu vou tentar explicá-lo:
As opções -G usam um valor ou uma lista de valores. No caso de um valor, o valor pode ser dado como: -GVALUE, pois não há necessidade de ter um espaço entre a opção e o valor. Esta é apenas uma prática comum.
Se você tem um grupo chamado a no seu sistema, então chamar -Ga se torna ambíguo. Você quer que o usuário tenha apenas um grupo? Você está chamando -a e -G? Então é "a" um valor para -G? Onde está o resto do valor (para -G)? Também é prática comum que qualquer opção de uma única letra possa ser feita antes de qualquer outra opção de letra única. então tat -xy == -yz. Mas isso é ambíguo quando uma das opções pode ter um único valor como VALUE ou muitos valores como VAL1, Val2, val4, etc.
Então, para tornar o comando FAILSAFE e funcionar corretamente para todas as entradas, você deve separar -a de -G
Em man usermod
:
Name
usermod - modify a user account
Synopsis
usermod [options] LOGIN
Description
The usermod command modifies the system account files to reflect the changes that are specified on the command line.
Options
The options which apply to the usermod command are:
-a, --append
Add the user to the supplementary group(s). Use only with the -G option.
...
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
A list of supplementary groups which the user is also a member of. Each group is separated from the next by a comma, with no intervening whitespace. The groups are subject to the same restrictions as the group given with the -g option.
If the user is currently a member of a group which is not listed, the user will be removed from the group. This behaviour can be changed via the -a option, which appends the user to the current supplementary group list.
...