Como adicionar usuário existente a um grupo existente?

669

Eu quero adicionar o usuário Apache ( www-data) ao audiogrupo. Eu li a página de manual useradd, mas não estou tendo sorte. Estou executando o xubuntu 11.10. Aqui está o que estou fazendo:

$ sudo useradd -G audio www-data
useradd: user 'www-data' already exists

Se eu deixar de fora a -Gopção bash, imprimo as informações de ajuda para useradd:

$ sudo useradd  audio www-data
Usage: useradd [options] LOGIN
Options: -b, --base-dir BASE_DIR       base directory for the home directory...

Na página de manual, não está claro quais opções devo usar para fazer isso funcionar.

Sparky1
fonte

Respostas:

1040

O useraddcomando tentará adicionar um novo usuário. Como seu usuário já existe, não é isso que você deseja.

Em vez disso: para modificar um usuário existente, como adicionar esse usuário a um novo grupo, use o usermodcomando

Tente o seguinte:

sudo usermod -a -G groupName userName

O usuário precisará sair e fazer login novamente para ver o novo grupo adicionado.

  • A opção -a(acrescentar) é essencial. Caso contrário, o usuário será removido de qualquer grupo, não da lista.

  • A -Gopção leva uma lista (separada por vírgula) de grupos adicionais aos quais o usuário deve ser atribuído.

dpendolino
fonte
71
sudo usermod -a -G [group-name] [user-name]: Apenas uma rapidinha para quem só olha a resposta depois de ler a manchete
Programster
36
Eu acho que a maneira preferida agora é sudo adduser user group. É uma sintaxe mais simples e limpa. Veja a resposta do @Bai.
ctbrown
3
@wilhil:: man usermod" -a, --append - Adicione o usuário ao (s) grupo (s) suplementar (es). Use apenas com a opção -G .; -G, --groups GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Se atualmente o usuário for membro de um grupo que não está listado, ele será removido do grupo.Este comportamento pode ser alterado através da opção -a, que anexa o usuário ao suplemento atual. lista de grupos ".
Adam Michalik
18
Existe uma maneira de contornar a parte "sair e voltar"? Algum tipo de comando update-groups, talvez?
con-f-use
14
@ con-f-use, se você puder executar sudo login -f YOURUSERNAME, iniciará uma nova sessão do shell. Use o idcomando para verificar se a nova sessão está no conjunto correto de grupos. No entanto, isso não é "global" - não se aplica a terminais que já estão abertos. Então, realmente, sair é a melhor opção, sempre que possível #
Aaron McDaid
222

Adicionando um usuário a um grupo:

sudo adduser user group

Removendo um usuário de um grupo:

sudo deluser user group
Bai
fonte
3
não exatamente o que esta questão que se coloca para
Tejendra
11
O comentário de @ Tejendra parece pressupor que o uso de useradd é desejável / obrigatório para responder à pergunta da OP; Talvez esta resposta esteja faltando apenas palavras para indicar que adduser / deluser é uma alternativa melhor.
sage
12
Para mim, interface mais simples é melhor, é por isso que eu gosto dessa.
Betlista 11/08/16
4
Esta é exatamente a pergunta que está sendo feita. @knocte, sim, eu acho que é Debian específico
Auspex
3
@Auspex Posso confirmar que ele não funciona no Red Hat.
Stibu 22/02
54

Depois de adicionar a um usuário existente:

usermod -a -G group user  

Pode ser necessário sair e fazer login para obter as permissões de grupos /etc/group.

Amos Folarin
fonte
21
Por favor, faça a parte "precisa sair e fazer login" em negrito.
Jin Kwon
FYI: Acho que o idcomando deve indicar que você foi adicionado ao grupo sem precisar sair. id myuser
ficuscr
5
Sair e entrar novamente era necessário para mim no Ubuntu 14.10.
A.Danischewski
26

Eu normalmente uso

sudo gpasswd -a myuser mygroup
enzotib
fonte
3
O usermod não estava disponível no meu sistema ubuntu 14.04. Isso funcionou muito bem!
Tirou
Isso também funcionou muito bem no Debian Stretch, onde usermodnão estava instalado.
Josh Habdas 29/03
8

Estou postando isso como resposta, porque não tenho reputação suficiente para comentar. Como o @ dpendolino mencionou, para os efeitos desse comando persistirem:

sudo usermod -a -G groupName userName

... você precisa sair / fazer login novamente.

No entanto, se você precisar de um atalho para começar a usar sua nova associação ao grupo imediatamente (e tiver os privilégios sudo corretos ), encontrei esta solução alternativa:

$ sudo su -
# su [userName]
$ groups

Explicação:

  • sudo su - lhe dará um shell raiz
  • su [userName] retorna você a um shell com seu usuário
  • groupsquando executar agora, mostrará o grupo que você adicionou com o usermod -aGcomando

No meu caso, eu estava tentando adicionar o grupo 'docker' ao meu usuário

Antes:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

Depois de:

$ groups
userName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
bluemorpho
fonte
5

No Ubuntu, como o login rootnão está ativado , os usuários do sudogrupo podem elevar privilégios para determinados comandos restritos. Qualquer comando restrito deve ser anexado sudopara elevar o privilégio.

sudo usermod -a -G group user

adicionará o usuário existente usera um grupo suplementar chamado group. O grupo principal do usuário permanecerá inalterado.

Debra Butcher McCusker
fonte
1
sudo usermod -a -G groupName userName

vai funcionar muito bem, mas eu tive que reiniciar completamente, basta sair e fazer login novamente não fez o trabalho ...

alex
fonte