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

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

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

Si dejo de lado el -G opción, bash, imprime la información de ayuda para useradd:

$ sudo useradd  audio www-dataUsage: useradd [options] LOGINOptions: -b, --base-dir BASE_DIR       base directory for the home directory...

No me queda claro en la página de manual qué opciones debo usar para que esto funcione.

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

En su lugar: Para modificar un usuario existente, como agregar ese usuario a un nuevo grupo, use usermod comando.

Prueba esto:

sudo usermod -a -G groupName userName
  • El -a el interruptor (anexar) es esencial. De lo contrario, el usuario se eliminará de cualquier grupo, no de la lista.

  • El -G switch toma una lista (separada por comas) de grupos adicionales a los que asignar el usuario.

En general (para la GUI, o para procesos ya en ejecución, etc.), usuario tendrá que cerrar la sesión y volver a iniciarla para ver su nuevo grupo agregado. Para la sesión de shell actual, puede usar newgrp:

newgrp groupName
  • newgrp agrega el grupo a la sesión de shell actual.

Agregar un usuario a un grupo:

sudo adduser user group

Eliminar un usuario de un grupo:

sudo deluser user group

Después de agregar a un usuario existente:

usermod -a -G group user  

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

Normalmente uso

sudo gpasswd -a myuser mygroup

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

sudo usermod -a -G groupName userName

...debe cerrar la sesión/iniciar sesión de nuevo.

Sin embargo, si necesita un acceso directo para comenzar a usar su nueva membresía de grupo inmediatamente (y tienes la respuesta correcta sudo 1) He encontrado esta solución alternativa:

$ sudo su -# su [userName]$ groups

Explicacion:

  • sudo su - te dará un caparazón de raíz
  • su [userName] le devuelve a un shell con su usuario
  • groups cuando se ejecute ahora, se mostrará el grupo que agregó con el usermod -aG comando

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

Antes:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd

Despues:

$ groupsuserName adm cdrom sudo dip plugdev lpadmin sambashare wireshark lxd docker
sudo usermod -a -G groupName userName

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

En Ubuntu, desde iniciar sesión como root no está habilitado, usuarios en el sudo el grupo puede elevar los privilegios para ciertos comandos restringidos. Cualquier comando restringido debe ir precedido de sudo para elevar el privilegio.

sudo usermod -a -G grupo usuario

agregará el usuario existente user a un grupo complementario denominado group. El grupo principal del usuario permanecerá sin cambios.

Para agregar permanentemente un usuario a un grupo, ejecute este comando:

sudo usermod -a -G <groupname> <username>

A continuación, cierre la sesión y vuelva a iniciarla (o reinicie si es necesario).

Explicacion:

El usermod comando modificará el /etc/group file para enumerar el nombre de usuario especificado en la línea relevante para ese grupo. Si corres grep <groupname> /etc/group, debería ver su nombre de usuario en la salida.

En Linux, cada proceso está asignado a un usuario y grupos, y cualquier proceso hijo hereda el usuario y los grupos del proceso padre. Por lo tanto, para que este cambio surta efecto y se propague, debe cerrar la sesión e iniciar sesión nuevamente (en ese momento /etc/group se lee y se usa). En Wayland, he descubierto que es necesario un reinicio completo.

Si ejecuta el comando groups, puede ver si el proceso actual tiene los grupos esperados o no.