¿Cómo agregar un usuario existente a un grupo existente?

669

Quiero agregar el usuario de Apache ( www-data) al audiogrupo. He leído la página del manual useradd, pero no tengo suerte. Estoy ejecutando xubuntu 11.10. Esto es lo que estoy haciendo:

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

Si omito la -Gopción, bash, imprime la información de ayuda para useradd:

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

Desde la página del manual no me queda claro qué opciones debo usar para que esto funcione.

Sparky1
fuente

Respuestas:

1040

El useraddcomando intentará agregar un nuevo usuario. Como su usuario ya existe, esto no es lo que desea.

En cambio: para modificar un usuario existente, como agregar ese usuario a un nuevo grupo, use el usermodcomando.

Prueba esto:

sudo usermod -a -G groupName userName

El usuario deberá cerrar sesión y volver a iniciar sesión para ver su nuevo grupo agregado.

  • El -ainterruptor (agregar) es esencial. De lo contrario, el usuario será eliminado de cualquier grupo, no en la lista.

  • El -Gconmutador toma una lista (separada por comas) de grupos adicionales para asignar al usuario.

dpendolino
fuente
71
sudo usermod -a -G [group-name] [user-name]: Solo un rápido para aquellos que solo miran la respuesta después de leer el titular
Programster
36
Creo que la forma preferida ahora es sudo adduser user group. Es una sintaxis más simple y limpia. Ver la respuesta de @Bai.
ctbrown
3
@wilhil:: man usermod" -a, --append - Agrega el usuario a los grupos suplementarios. Úselo solo con la opción -G .; -G, --grupos GROUP1 [, GROUP2, ... [, GROUPN] ]] [...] Si el usuario es actualmente un miembro de un grupo que no está en la lista, el usuario será eliminado del grupo. Este comportamiento se puede cambiar a través de la opción -a, que agrega al usuario al complemento actual lista de grupo ".
Adam Michalik
18
¿Hay alguna forma de evitar la parte de "cerrar sesión y volver a entrar"? ¿Algún tipo de comando de actualización de grupos, tal vez?
con-f-use
14
@ con-f-use, si puede ejecutar sudo login -f YOURUSERNAME, se iniciará una nueva sesión de shell. Use el idcomando para verificar que la nueva sesión esté en el conjunto correcto de grupos. Sin embargo, esto no es "global": no se aplica a terminales que ya están abiertas. Entonces, realmente, cerrar sesión es la mejor opción, siempre que sea posible
Aaron McDaid el
222

Agregar un usuario a un grupo:

sudo adduser user group

Eliminar un usuario de un grupo:

sudo deluser user group
Bai
fuente
3
no es exactamente lo que se hace esta pregunta
Tejendra
11
El comentario de @ Tejendra parece presuponer que usar useradd es deseable / obligatorio para responder la pregunta de OP; Quizás a esta respuesta solo le faltan palabras para indicar que adduser / deluser es una mejor alternativa.
sabio
12
Para mí, una interfaz más simple es mejor, por eso me gusta esta.
Betlista
44
Esta es exactamente la pregunta que se hace. @knocte, sí, creo que es específico de Debian
Auspex
3
@Auspex Puedo confirmar que no funciona en Red Hat.
Stibu
54

Después de agregar a un usuario existente:

usermod -a -G group user  

Es posible que deba cerrar sesión e iniciar sesión para obtener los permisos de los grupos /etc/group.

Amos Folarin
fuente
21
Indique en negrita la parte "necesita cerrar sesión e iniciar sesión".
Jin Kwon
FYI: Creo que el idcomando debería indicar que te agregaron al grupo sin necesidad de salir. id myuser
ficuscr
55
Para mí, era necesario cerrar sesión y volver a iniciarla en Ubuntu 14.10.
A.Danischewski
26

Normalmente uso

sudo gpasswd -a myuser mygroup
enzotib
fuente
3
usermod no estaba disponible en mi sistema ubuntu 14.04. Esto funcionó muy bien!
Drew
Esto funcionó muy bien en Debian Stretch también, donde usermodno estaba instalado.
Josh Habdas
8

Estoy publicando esto como respuesta porque no tengo suficiente reputación para comentar. Como se menciona en @ dpendolino, para que los efectos de este comando persistan:

sudo usermod -a -G groupName userName

... necesita cerrar sesión / iniciar sesión nuevamente.

Sin embargo, si necesita un acceso directo para comenzar a usar su nueva membresía de grupo inmediatamente (y tiene los privilegios de sudo correctos ), he encontrado esta solución alternativa:

$ sudo su -
# su [userName]
$ groups

Explicación:

  • sudo su - te dará una cáscara de raíz
  • su [userName] te devuelve a un shell con tu usuario
  • groupscuando se ejecute ahora, mostrará el grupo que agregó con el usermod -aGcomando

En mi caso, estaba tratando de agregar el grupo 'docker' a mi usuario

Antes de:

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

Después:

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

En Ubuntu, dado que iniciar sesión como rootno está habilitado , los usuarios del sudogrupo pueden elevar los privilegios para ciertos comandos restringidos. Cualquier comando restringido debe anteponerse sudopara elevar el privilegio.

sudo usermod -a -G group user

agregará el usuario existente usera un grupo suplementario llamado group. El grupo primario del usuario permanecerá sin cambios.

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

funcionará bien, pero tuve que reiniciar por completo, solo cerrar sesión e iniciar sesión nuevamente no hizo el trabajo ...

alex
fuente