Você pode usar: usermod -a -G grouptoadd username
Como é muito menos óbvio do que eu pensava por que -a -G está ok, enquanto -aG não está, tentarei explicar:
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á requisito para ter um espaço entre a opção e o valor. Esta é apenas uma prática comum.
Se você tiver um grupo chamado a em seu sistema, a chamada -Ga se tornará ambígua. Deseja que o usuário tenha apenas um grupo a? Você está chamando -a e -G? Então "a" é um valor para -G? Onde está o restante do valor (para -G)? Também é prática comum que qualquer opção de letra única possa 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.
Portanto, para tornar o comando FAILSAFE e funcionar corretamente para todas as entradas, você deve separar -a de -G
De man usermod
:
Nome
usermod - modifica uma conta de usuário
Sinopse
usermod [opções] LOGIN
Descrição
O comando usermod modifica os arquivos da conta do sistema para refletir as alterações especificadas na linha de comandos.
Opções
As opções que se aplicam ao comando usermod são:
-a, --append
Adicione o usuário ao (s) grupo (s) suplementar (es). Use apenas com a opção -G .
...
-G, --grupos GRUPO1 [, GRUPO2, ... [, GRUPO]]]]
Uma lista de grupos suplementares dos quais o usuário também é membro. Cada grupo é separado do próximo por uma vírgula, sem espaços em branco. Os grupos estão sujeitos às mesmas restrições que o grupo fornecido com a opção -g .
Se o usuário é atualmente um membro de um grupo que não está listado, o usuário será removido do grupo. Esse comportamento pode ser alterado através da opção -a , que anexa o usuário à lista de grupos suplementares atual.
...