1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votos, promedio: 5,00 de 5)
Cargando...

Si queremos gestionar un servidor en Linux, hay varias cosas que debemos hacer con cierta regularidad. Una de ellas es la Gestión completa de usuarios y grupos en Linux.
En este sistema tenemos un control absoluto de los usuarios, teniendo infinitas posibilidades en cuanto a los accesos a carpetas y gestión completa de cualquier tipo de usuario.

Para ello nos ayudamos de varios comandos. En el post anterior Propietarios y grupo en archivos, aprendemos a utilizar chown y chgrp. También tenemos Permisos de archivos con chmod para gestionar permisos como lectura, escritura y ejecución.

En esta entrada vamos a aprender:

Crear y eliminar usuarios

Hay que tener en cuenta que para la creación de usuarios podemos usar dos comandos. Vamos a poner un breve resumen de cada comando y decidiremos cual de los dos utilizar:

Useradd es un comando de Linux que se puede encontrar en cualquier sistema Linux. Sin embargo, crear nuevos usuarios con este comando de bajo nivel es un poco tedioso.

Adduser no es un comando estándar de Linux. Es esencialmente un script de Perl que usa el comando useradd en segundo plano. Esta utilidad de alto nivel es más eficiente para crear correctamente nuevos usuarios en Linux. Los parámetros predeterminados para todos los usuarios nuevos también se pueden establecer a través del comando adduser.

Como vemos, para usuarios inexpertos, es más fácil usar el comando adduser, pero tal vez es algo más flexible el uso de useradd.

Vemos a continuación un ejemplo del uso con adduser:

yogui ~ $ adduser
[sudo] contrasenya per a yogui:

Login name for new user []: catlinux

User ID ('UID') [ defaults to next available ]:

Initial group [ users ]:
Additional UNIX groups:

Users can belong to additional UNIX groups on the system.
For local users using graphical desktop login managers such
as XDM/KDM, users may need to be members of additional groups
to access the full functionality of removable media devices.

Security implications *
Please be aware that by adding users to additional groups may
potentially give access to the removable media of other users.

If you are creating a new user for remote shell access only,
users do not need to belong to any additional groups as standard,
so you may press ENTER at the next prompt.

Press ENTER to continue without adding any additional groups
Or press the UP arrow key to add/select/edit additional groups
: audio disk storage optical scanner video ftp games

Home directory [ /home/catlinux ]

Shell [ /bin/bash ]

Expiry date (YYYY-MM-DD) []:

New account will be created as follows:

-----------------------------------
Login name…….: catlinux
UID…………..: [ Next available ]
Initial group….: users
Additional groups: audio,disk,storage,optical,scanner,video,ftp,games
Home directory…: /home/catlinux
Shell…………: /bin/bash
Expiry date……: [ Never ]

This is it… if you want to bail out, hit Control-C. Otherwise, press
ENTER to go ahead and make the account.

Creating new account…
S'està canviant la informació del finger per a l'usuari catlinux.
Nom []: CatLinux
Office []:
Office Phone []:
Home Phone []:

S'ha canviat la informació del finger.
Nova contrasenya de :
Torneu a escriure la nova contrasenya de :
passwd: s'ha actualitzat la contrasenya satisfactòriament

Account setup complete.

Como podéis ver, el script nos va preguntando los datos y los vamos proporcionado. A continuación vamos a hacerlo con el comando useradd. Crearemos el mismo usuario con las mismas características:

$ useradd -m -g users -G audio,disk,storage,optical,scanner,video,ftp,games -s /bin/bash catlinux
$ passwd catlinux
$ chfn catlinux

Vamos a explicar los comando y las opciones utilizadas:

useradd: Crea un usuario.
passwd: Establece la contraseña del usuario.
chfn: Introducimos información del usuario.

-m: crea el directorio personal del usuario (por defecto en la ruta /home/NombreUsuario)
-g: nombre del grupo primario de la nueva cuenta
-G: lista de grupos suplementarios de la nueva cuenta
-s: consola de acceso de la nueva cuenta

Algunas de las otras opciones disponibles que podemos utilizar:

-d: especifica ruta del directorio personal de la nueva cuenta
-e: fecha de caducidad de la nueva cuenta
-M: no crea el directorio personal del usuario
-p: contraseña cifrada de la nueva cuenta

Para eliminar el usuario es tan fácil como ejecutar el comando:

$ userdel -r catlinux

Opciones del comando:

-f: forzar la eliminación de los ficheros, incluso si no pertenecen al usuario
-r: elimina el directorio personal y el buzón de correo

Cambiar contraseñas

Para cambiar la contraseña, tan solo se escribe el comando passwd seguido del nombre de usuario, pero este comando nos permite realizar muchas otras acciones.

Cambiemos la contraseña a mi usuario:

$ passwd catlinux

Ejecutando este comando me pide que escriba dos veces la contraseña nueva. Recuerda que debes escribir sudo antes del comando si no eres root.

Ahora veamos algunas de las opciones más comunes:

-a: informa del estado de las contraseñas de todas las cuentas
-d: borra la contraseña para la cuenta indicada
-e: fuerza a que la contraseña de la cuenta caduque
-h: muestra la ayuda el comando
-k: cambia la contraseña sólo si ha caducado
-l: bloquea la contraseña de la cuenta indicada
-n DÍAS_MIN: establece el número mínimo de días antes de que se cambie la contraseña a DÍAS_MIN
-S: informa del estado de la contraseña la cuenta indicada
-u: desbloquea la contraseña de la cuenta indicada
-w: establece el aviso de caducidad a DÍAS_AVISO
-x DÍAS_MAX: establece el número máximo de días antes de cambiar la contraseña a DÍAS_MAX

Modificar usuarios existentes

El comando usermod es simple de utilizar con muchas opciones para realizar cambios en un usuario existente. Veamos cómo usar el comando para modificar usuarios existentes en el entorno Linux con la ayuda de las siguientes opciones:

usermod [opciones] USUARIO
-c COMENTARIO: nuevo valor del campo GECOS (info usuario)
-d DIR_PERSONAL: nuevo directorio personal del nuevo usuario
-e FECHA_EXPIR: establece la fecha de caducidad de la cuenta a FECHA_EXPIR
-g GRUPO: cambia a GRUPO el grupo primario del usuario
-G GRUPOS: cambia al usuario los grupos secundarios
-a: usar acompañada de -G para añadir grupos secundarios sin eliminar los existentes
-h: muestra este mensaje de ayuda y termina
-l NOMBRE: nuevo nombre de login para el usuario
-L: bloquea la cuenta de usuario
-U: desbloquea la cuenta de usuario
-m: mueve los contenidos del directorio personal al directorio nuevo (usar junto con -d)
-s CONSOLA: nueva consola de acceso para la cuenta del usuario

Agregar información del usuario

$ usermod -c "Usuario principal CatLinux" catlinux

Cambiar el directorio personal del usuario

$ usermod -d /home/catlinux_adm -m catlinux

La opción -d (nuevo directorio personal), debe usarse junto a la opción -m, ya que se encarga de mover todos los archivos a la nueva ruta. Si lo utilizas sin la opción -m, la carpeta estará vacía, y perderás las configuraciones de tu escritorio, archivos de tus directorios, etc…

Establecer fecha de caducidad a una cuenta

Para esto primero debemos ver la información del propio usuario. La sacaremos con:

$ chage -l catlinux

Hagamos que caduque la cuenta el día de fin de año:

$ usermod -e 2020-12-31 catlinux

Cambiar el grupo primario del usuario

$ usermod -g users catlinux
Como veis en la imagen, anteriormente pertenecía al grupo catlinux, y después del comando pertenezco a users

Cambiar grupos secundarios

Para añadir nuestro usuario un nuevo grupo secundario utilizaremos el comando:

$ usermod -aG ftp catlinux

En este caso, lo hemos agregado al grupo ftp. ¡¡Ojo!!, no usar solo la opción -a como he visto en muchas guías de internet “copy + paste”, ya que nos sacará de los grupos que estábamos enteriormente. Siempre usaremos -aG.

Cambiar el nombre de login del usuario

$ usermod -l yogui catlinux

En este caso he cambiado mi nombre de usuario catlinux por yogui.

Bloquear y desbloquear cuentas de usuario

Para bloquear:

$ usermod -L yogui

Y para desbloquear:

$ usermod -U yogui

consola para la cuenta del usuario

Esta opción no se suele cambiar, pero a veces te puede interesar que un usuario no pueda loguear, o que utilice una shell antigua como Shell Bourne. Lo cambiamos con la opción:

$ usermod -s /bin/sh catlinux

Crear y eliminar grupos

Crear grupos es muy fácil, cierto que hay opciones como con los otros comandos, pero a no ser que administremos servidores con gran cantidad de usuarios, no las vamos a necesitar.
De todos modos, como siempre tienes la ayuda del comando que te dará las opciones disponibles. Para ver la información debemos escribir:

$ groupadd -h

Para crear un grupo vamos a utilizar el comando:

$ sudo groupadd NombreGrupo

No se recomienda eliminar grupos, ya que si se borra por error algún grupo creado con la instalación, puedes romper el sistema. Se suelen borrar grupos que se crean automáticamente al crear usuarios si ya no son válidos, pero no es necesario a no ser que haya muchos y la lista sea interminable.

Para borrar el grupo entraremos:

$ groupdel NombreGrupo

Añadir o quitar usuarios de un grupo existente

Como hemos visto anteriormente, podemos añadir usuarios a un grupo con el comando usermod, pero para esta labor tenemos el comando gpasswd que es más práctico y seguro que el anterior.

Primero veamos sus opciones, aunque solo pondremos ejemplos de las que se usan habitualmente:

Modo de uso:
gpasswd [opciones] GRUPO

Opciones:
-a USUARIO: añade USUARIO al GRUPO
-d USUARIO: elimina USUARIO del GRUPO
-h: muestra este mensaje de ayuda y termina
-Q CHROOT_DIR: directory to chroot into
-r: elimina la contraseña de GRUPO
-R: restringe el acceso a GRUPO a sus miembros
-M USUARIO,…: establece la lista de miembros de GRUPO
-A ADMIN,…: establece la lista de administradores de GRUPO
Excepto las opciones -A y -M, las opciones no se pueden combinar.

Vamos a ver como agregar un usuario a un grupo existente. Pondremos el usuario catlinux dentro del grupo adm:

$ gpasswd -a catlinux adm

Ahora lo vamos a quitar, dejando igual todo el resto de grupos y configuraciones. Con este comando, no tenemos el peligro de sacarlo del resto de grupos:

$ gpasswd -d catlinux adm

Mostrar usuarios y grupos del sistema

En esta categoría veremos como mostrar los grupos del sistema, todos los usuarios creados, como ver a que grupos pertenecen y varias formas de filtrarlo.

Listar los grupos del sistema:

cat /etc/group
less /etc/group
getent group

Ver todos los usuarios del sistema:

cat /etc/passwd
less /etc/passwd
getent passwd

Con estos comandos te lista toda la información, el nombre, contraseña, UID, GID, nombre completo, directorio y shell, pero esto lo podemos filtrar si queremos, y sacar solamente los valores que nos interesan.

Podemos filtrar los resultados y sacar solamente los campos que nos interesan. Si por ejemplo nos interesa listar el campo nombre y el directorio, podemos utilizar el comando cut:

$ cut -f1,6 -d: /etc/passwd

En este caso la opción -f sirve para indicar los campos que queremos y con la opción -d indicamos el delimitador de los campos.

Si queremos filtrar y solamente sacar los resultados de un usuario, pordemos combinar el comando anterior con getent. A continuación voy a ver la información del usuario catlinux y su directorio:

$ getent passwd catlinux | cut -f1,6 -d:

Otro filtro útil es para contar usuarios, por ejemplo los que hay en el sistema o los que tienen su directorio en la carpeta /home

cat /etc/passwd | grep /home | wc -l      #usuarios con su directorio en /home
cat /etc/passwd | wc -l                   #usuarios totales en el sistema

Si queremos listar los usuarios “comunes”, o dicho de otra forma, los creados por un usuario con permisos elevados podemos utilizar el siguiente comando:

$ getent passwd {1000..60000}

Vamos a ver como podemos comprobar los grupos a los que pertenece un usuario. Pondremos dos ejemplos diferentes:

groups catlinux
id -Gn catlinux

Ambas son igual de válidas y efectivas.

Y para terminar vamos a ver como comprobar los usuarios que pertenecen a un mismo grupo:

getent group users

Con todo esto ya podemos tener un control completo de los usuarios, podemos gestionar los grupos, accesos y todo lo relacionado para tener un mayor control de nuestro sistema, servidor e incluso red.

En resumen, tener una gestión completa de usuarios y grupos en Linux


Enlaces relacionados:

Permisos de archivos con chmod

Propietarios y grupos en archivos

Fuentes:

https://wiki.archlinux.org/index.php/Users_and_groups

https://wiki.archlinux.org/index.php/Category:Commands

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *