Administrar grupos de usuarios en sistemas Linux es fácil, pero los comandos pueden ser más flexibles de lo que te imaginas.
Los grupos de usuarios juegan un papel importante en los sistemas Linux. Proporcionan una manera fácil para que grupos selectos de usuarios compartan archivos entre ellos. También permiten que los administradores de sistemas administren de manera más efectiva los privilegios de los usuarios, ya que pueden asignar privilegios a grupos en lugar de usuarios individuales.
Si bien generalmente se crea un grupo de usuarios cada vez que se agrega una cuenta de usuario a un sistema, todavía hay mucho que saber sobre cómo funcionan y cómo trabajar con ellos.
1. ¿Un usuario, un grupo?
La mayoría de las cuentas de usuario en sistemas Linux se configuran con los nombres de usuario y grupo de la misma. El usuario “alexynior
” se configurará con un grupo llamado “alexynior
” y será el único miembro de ese grupo recién creado. El nombre de inicio de sesión del usuario, la identificación del usuario y la identificación del grupo se agregarán a los archivos /etc/passwd y /etc/group cuando se agrega la cuenta, como se muestra en este ejemplo:
sudo useradd alexynior
grep alexynior /etc/passwd
grep alexynior /etc/group
Los valores en estos archivos permiten que el sistema traduzca entre las versiones de texto (alexynior) y numéricas (1000) del ID de usuario: alexynior
es 1000
y 1000
es alexynior
.
El UID asignado (ID de usuario) y el GID (ID de grupo) para cada usuario son generalmente iguales y configurados secuencialmente. Si alexynior
en el ejemplo anterior fuera el usuario agregado más recientemente, el próximo nuevo usuario probablemente se le asignaría 1001
como ID de usuario y grupo.
2. ¿GID = UID?
Los UID y GID se pueden de-sincronizar. Por ejemplo, si agregas un grupo usando el comando groupadd
sin especificar una identificación de grupo, tu sistema asignará la siguiente identificación de grupo disponible (en este caso, 1001
). El siguiente usuario que se agregará al sistema obtendría 1001
como UID pero 1002
como GID.
Puedes evitar este problema especificando un ID de grupo más pequeño cuando agregas un grupo en lugar de ir con el predeterminado. En este comando, agregaré un nuevo grupo y proporcionaré un GID que es más pequeño que el rango utilizado para las cuentas de usuario.
sudo groupadd -g 500 devops
Si funciona mejor para ti, puedes especificar un grupo compartido cuando creas cuentas. Por ejemplo, es posible que desees asignar nuevos miembros del personal de desarrollo (staff) a un grupo devops en lugar de poner a cada uno en su propio grupo.
sudo useradd -g staff bennyg
grep bennyg /etc/passwd
3. Grupos primarios y secundarios
En realidad, hay dos tipos de grupos: primario y secundario.
- El grupo primario es el que está registrado en el archivo /etc/passwd, configurado al crear la cuenta. Cuando un usuario crea un archivo, es su grupo principal el que está asociado con él.
whoami
grep jdoe /etc/passwd
touch nuevoarchivo
ls -l nuevoarchivo
- Los grupos secundarios son aquellos a los que podrían agregarse usuarios una vez que ya tienen cuentas. Las membresías de grupos secundarios se muestran en el archivo /etc/group.
grep devops /etc/group
El archivo /etc/group asigna nombres a los grupos de usuarios (p. Ej., 500 = devops
) y registra los miembros del grupo secundario.
Convención preferida: chgrp
La convención de que cada usuario sea miembro de su propio grupo y, opcionalmente, miembro de cualquier número de grupos secundarios permite a los usuarios separar más fácilmente los archivos que son personales de aquellos que necesitan compartir con sus compañeros de trabajo. Cuando un usuario crea un archivo, los miembros de los diversos grupos de usuarios a los que pertenecen no necesariamente tienen acceso. Un usuario tendrá que usar el comando chgrp
para asociar un archivo con un grupo secundario.
Un detalle importante al agregar una nueva cuenta es que el comando useradd
no agrega necesariamente un directorio home
para un nuevo usuario. Si deseas que este paso se realice solo una parte del tiempo, puedes agregar -m
(make) con tus comandos useradd
.
Las opciones en este comando:
sudo useradd -m -g devops -c "Alexis Junior" alexynior2
-m
crea el directorio home-g
especifica el grupo al que asignará el usuario-c
agrega un descriptor para la cuenta (generalmente el nombre de la persona)
Si deseas que se cree un directorio home todo el tiempo, puedes cambiar el comportamiento predeterminado editando el archivo /etc/login.defs. Cambia o agregua una configuración para la variable CREATE_HOME y configúrala como “yes“:
$ grep CREATE_HOME /etc/login.defs
CREATE_HOME yes
Otra opción es configurar un alias para que useradd siempre use la opción -m.
$ alias useradd=’useradd -m’
Asegúrate de agregar el alias a tu ~/.bashrc o un archivo de inicio similar para que sea permanente.
4. Buscando en /etc/login.defs
Aquí hay un comando para enumerar toda la configuración en el archivo /etc/login.defs. Los comandos grep
están ocultando comentarios y líneas en blanco.
cat /etc/login.defs | grep -v "^#" | grep -v "^$"
Observa que los distintos ajustes en este archivo determinan el rango de identificadores de usuario que se utilizarán junto con la antigüedad de la contraseña y otros ajustes (por ejemplo, umask
).
5. Cómo mostrar los grupos de un usuario
Los usuarios pueden ser miembros de múltiples grupos por varias razones. La membresía grupal le da al usuario acceso a los archivos y directorios propiedad del grupo, y a veces este comportamiento es crítico. Para generar una lista de los grupos a los que pertenece algún usuario, usa el comando groups.
groups alexynior
Puede enumerar tus propios grupos, escribe groups
sin un argumento.
- Mostrar solo la ID del grupo, ingresa:
id -g
id -g {usuario/grupo}
id -gn {grupo/usuario}
- Visualizar solo la ID del grupo y los grupos suplementarios, ingresa:
id -G
id -G {usuario/grupo}
id -Gn {grupo/usuario}
6. Cómo agregar usuarios a grupos
Si deseas agregar un usuario existente a otro grupo, puedes hacerlo con un comando como este:
sudo usermod -a -G devops esgeeks
También puedes agregar un usuario a varios grupos especificando los grupos en una lista separada por comas:
sudo usermod -a -G devops,staff esgeeks
El argumento -a
significa “agregar” mientras que -G
enumera los grupos.
Puede eliminar un usuario de un grupo editando el archivo /etc/group
y eliminando el nombre de usuario de la lista. El comando usermod
también puede tener una opción para eliminar un miembro de un grupo.
7. Conclusión
Agregar y administrar grupos de usuarios no es particularmente difícil, pero la coherencia en la forma de configurar las cuentas puede facilitarte a largo plazo.
¿Te ha gustado este artículo? ¡Da clic aquí por favor! Sígue este blog en su fanpage de Facebook, Twitter, Instagram y/o YouTube para que no te pierdas del mejor contenido informático y hacking!