¿Cómo puedo cambiar el grupo predeterminado de un usuario en Linux?

41

Al ser nuevo en la administración de Linux, estoy un poco confundido acerca de los siguientes comandos:

useradd
usermod
groupadd
groupmod

Acabo de terminar de leer el libro de administración de usuarios en el manual del administrador de Linux / Unix, pero algunas cosas todavía son un poco confusas.

Básicamente useraddparece bastante sencillo:

useradd -c "David Hilbert" -d /home/math/hilbert -g faculty -G famous -m -s /bin/sh hilbert

Puedo agregar "David Hilbert" con nombre de usuario hilbert, configurando su directorio predeterminado, shell y grupos. Y creo que ese -ges su grupo primario / predeterminado y -Gson sus otros grupos.

Estas son mis siguientes preguntas:

  1. Todavía trabajo si este comando los grupos facultyy famousno existía? ¿Solo los crearía?
  2. Si no, ¿qué comando utilizo para crear nuevos grupos?
  3. Si elimino al usuario hilberty no hay otros usuarios en esos grupos, ¿seguirán existiendo? ¿Debo eliminarlos?
  4. Después de ejecutar el useraddcomando anterior, ¿cómo elimino a David del famousgrupo y reasigno su grupo principal al hilbertque aún no existe?
cwd
fuente

Respuestas:

27

El usermodcomando le permitirá cambiar el grupo primario de un usuario, el grupo suplementario o una serie de otros atributos. El -ginterruptor controla el grupo primario.

Para sus otras preguntas ...

  1. Si especifica un grupo groupnameque no existe durante la useraddetapa, recibirá un error: useradd: nombre de grupo de grupo desconocido

  2. El groupaddcomando crea nuevos grupos.

  3. El grupo permanecerá si elimina todos los usuarios contenidos dentro. No necesariamente tiene que eliminar el grupo vacío.

  4. Crea el hilbertgrupo a través de groupadd hilbert. Luego mueva el grupo primario de David usando usermod -g hilbert hilbert. (Tenga en cuenta que el primero hilbertes el nombre del grupo y el segundo hilbertes el nombre de usuario. Esto es importante en los casos en los que está moviendo un usuario a un grupo con un nombre diferente)

Sin embargo, puede estar complicando un poco las cosas aquí. En muchas distribuciones de Linux, un simple useradd hilbertcreará el usuario hilberty un grupo con el mismo nombre que el primario. Agregaría grupos suplementarios especificados juntos usando el -Ginterruptor.

ewwhite
fuente
1
Gracias. si lo hago, usermod -g hilbert hilbert¿eso eliminará los otros grupos de hilbert? Si es así, ¿cómo mantendría esos otros grupos? Si no, ¿cómo lo eliminaría de sus otros grupos?
cwd
Pruébelo y vea su entorno particular.
ewwhite
La respuesta de @ MIck recibe mi voto positivo porque señala que debe usar -a con -G (de lo contrario, se eliminará cualquier grupo que deje )
Jeff
9

Debe leer lo man usermodque explica qué sucede con las diferentes opciones:

usermod -g hilder hilder

reemplazará su grupo de inicio de sesión de 'facultad' a 'hilder', siempre que exista el grupo 'hilder'. Si no existe, primero debe crearlo con groupadd.

Cuando usa la -Gopción, también debe usar la -aopción para agregar nuevos grupos a la lista actual de grupos suplementarios a los que pertenece el usuario 'hilder'. Sin la -aopción, reemplazará los grupos suplementarios actuales con un nuevo conjunto de grupos. Por lo tanto, use esto con precaución.

Mick
fuente
5

Para cambiar el grupo primario de un usuario en Linux:

  • usermod -g new_group user_name
  • terminar todas las sesiones activas de user_name

Para probar sus cambios, ejecute idy observe el valor degid=

Si el comando se ejecuta sin errores pero el gid no ha cambiado, se ha perdido la parte en negrita del paso 2.

ndemou
fuente
1

la respuesta n. ° 1 es buena, pero también puede optar por emitir lo siguiente para agregar un nuevo grupo:

# nano /etc/group

La desventaja de editar /etc/groupdirectamente es que tendrá que crear un GID (número de identificación de grupo) no utilizado.

Lo siguiente le permitirá cambiar el grupo primario de un usuario. # nano /etc/passwd

Localice la línea del usuario y cambie el GID (número de grupo, búsquelo /etc/group), tenga en cuenta que la sintaxis es la siguiente:

 <name>:*:<UID>:<GID>:<comment>:<directory>:<shell>

No hay ningún inconveniente que se me ocurre a este enfoque (siempre y cuando sepas el GID), que es lo que utilizan con frecuencia para los usuarios locales, sobre todo porque el uso de muchos sistemas UNIX diferentes con diferentes usermod, addusery useraddopciones de comando.

Es un poco más manual, sin embargo, hace el trabajo. Tenga en cuenta que puede usar viiso nanopara editar los archivos, si lo sabe vi.

Nikolai Alexandrov Georgiev
fuente
0

Para cambiar permanentemente el grupo primario del usuario, ejecute:

  • usermod -g nombre de grupo nombre de usuario comando

O podría usar newgrppara entornos pequeños y situaciones temporales.

Cree un nuevo usuario bob y un nuevo grupo dodo.

useradd bob

Entonces, en RedHat / Centos tenemos UID = (ID_number) bob; GID = (ID_number) bob como grupo primario por defecto

groupadd dodo

Agregue el usuario bob al dodogrupo:

usermod -aG dodo bob -make sure to use "a"

Siguiente uso newgrppara cambiar la propiedad:

newgrp dodo

Tenga cuidado de que su cuenta tenga una contraseña y sea miembro del futuro grupo primario. Y el newgrp abre un nuevo caparazón; Mientras el usuario permanezca en ese shell, el grupo primario no cambiará. Para volver a cambiar el grupo primario al original, puede abandonar el nuevo shell ejecutando el comando de salida.

Dragos Alexe
fuente