ArchiTecnologia

Aprendizaje abierto. Conocimiento libre.

ArchiTecnologia
CertificacionesLPITutorial

LPIC-1 Tema 107.1: administración de usuarios y grupos

Nueva entrega de la serie de artículos sobre las certificaciones LPIC-1, esta vez dedicado al tema 107.1. Es decir, un tema orientado a comprobar las competencias de los candidatos sobre la gestión de usuarios y grupos bajo un sistema operativo GNU/Linux.

Las habilidades que tienes que demostrar en esta ocasión son básicamente las de agregar nuevos usuarios/grupos y configuración de la cuenta, eliminarlos, suspenderlos, o realizar cambios. Por supuesto, para ello tendrás que conocer unos comandos básicos y ficheros que actúan como bases de datos para las configuraciones.

Ficheros de Linux que debes conocer

Antes de comenzar con los comandos de gestión debes conocer una serie de ficheros y directorios que podrás modificar manualmente con cualquier editor de texto, o que también pueden ser modificados con los comandos que verás en el apartado siguiente.

/etc/passwd

En este fichero existe una entrada (línea) por cada cuenta de usuario existente en el sistema, ya sea root, usuarios reales sin privilegios, o virtuales (no son cuentas de personas, sino cuentas que necesitan algunos programas para funcionar como la cuenta sync, systemd, daemon, floppy, lp, disk, cdrom, etc.).

El formato de la línea es:

nombre_usuario:contraseña:uid:gid:gecos:dir_personal:shell

Siendo cada uno de esos elementos separados por : lo siguiente:

  • Nombre de usuario: es el nombre de la cuenta, ya sea root, cualquier otro nombre de usuario, o los nombres de esas cuentas virtuales que he citado.
  • Contraseña: en los modernos sistemas aparece solo una x, en el pasado aparecía la contraseña usada por el usuario. Ahora esa contraseña cifrada aparecerá en /etc/shadow. Por cierto, si usas un * antes del símbolo de ese campo la cuenta de usuario se deshabilita.
  • UID: el ID o identificador del usuario. Es un número asignado a cada usuario presente. El 0 siempre corresponde al superusuario, se llame root o pericoeldelospalotes. Algunas distros reservan algunos IDs para usos especiales.
  • GID: es el ID para el grupo. Lo dicho en el punto anterior es válido para éste, incluido lo del ID 0 para root.
  • GECOS: es un antiguo acrónimo de General Electric Comprehensive Operating System y hace referencia a datos del usuario (dirección, departamento, apellidos, correo electrónico, teléfono, etc.).
  • dir_personal: directorio personal de cada usuario. Por ejemplo, podría ser /home/nombreusuario, mientras que para root suele ser / o /root.
  • shell: no siempre es un shell, puede ser otro programa. Será con el que inicie sesión dicha cuenta de usuario. Podría ser /bin/bash para usuarios reales, /sbin/nologin para servicios, e incluso /bin/false para desactivar una cuenta y que falle al iniciar sesión siempre.

Estas entradas puedes editarlas a mano, pero también debes saber que si usas los comandos del siguiente apartado también modificarán éstas. Por ejemplo, podrías crear un nuevo usuario agregando una línea nueva con un editor de texto o usando useradd.

/etc/shadow

En los sistemas operativos modernos se emplea este fichero más seguro que el anterior y al que solo tendrás acceso con privilegios a diferencia del anterior. En él se almacena la contraseña cifrada y otros datos en este formato:

name:pass:changed:minlife:maxlife:warn:inactive:expired

Siendo cada uno de esos campos:

  • name: nombre de usuario.
  • pass: es la contraseña cifrada (no en texto plano). Usa un formato id$salt$hash, en el que ID es el identificador del algoritmo de cifrado usado (MD5=1, Blowfish=2, SHA-256=6,…).  Salt o sal es un campo usado por los algoritmos para hacer que ciertos ataques sean fallidos si la longitud de la contraseña es suficiente. Y hash es la contraseña en sí cifrada.
  • changed: cuándo se cambió la contraseña por última vez.
  • minlife / maxlife: número mínimo y máximo de días que han de pasar para poder cambiar la contraseña.
  • warm: número de días antes de avisar del vencimiento.
  • inactive: una vez caducada, los días tras los que se inhabilita la cuenta.
  • expired: fecha de expiración de la cuenta tras la que no podrá iniciar sesión.

/etc/group

Este otro archivo es la bbdd donde se almacena todo sobre los grupos de usuarios del sistema. Puede haber grupos reales o virtuales, al igual que los usuarios. Además, deberías saber que en Linux se usa un esquema UPG (User Private Groups) por defecto. Es decir, que habrá un grupo privado por cada usuario.

En cuanto al formato de cada línea o entrada:

nombre_grupo:contraseña:GID:usuarios_del_grupo

Siendo:

  • nombre_grupo: el nombre del grupo.
  • contraseña: aparece una x actualmente, ya que al igual que los usuarios, se ha pasado a un fichero más seguro llamado /etc/gshadow.
  • GID: es el ID del grupo.
  • usuarios_del_grupo: nombres de usuarios existentes separados por comas que pertenecen a ese grupo. Puede ser un único nombre también.

/etc/skel/

Por último, aunque más adelante se verán más como /etc/sudoers, etc., está este otro que no es un fichero sino un directorio. Su nombre proviene de skeleton, y no, no es el malo de Masters del Universo escrito con n. Se refiere a una estructura o esqueleto que se toma como modelo para crear el directorio personal de los usuarios. Si modificas su contenido, los nuevos usuarios creados tendrán un directorio personal idéntico a lo que has creado. Así te ahorra ir uno a uno modificando.

Por cierto, también podrías usar el fichero /etc/default/useradd en el que podrás apuntar a otro directorio referencia distinto de éste…

Comandos para administrar usuarios y grupos

En cuanto a los comandos para la gestión de usuarios y grupos son los siguientes…

useradd / adduser

Hay dos comandos para crear usuarios, uno es useradd y otro adduser. El primero es un binario de bajo nivel del sistema operativo para crear cuentas de usuario, mientras que el segundo sirve para lo mismo pero se trata de un script. Aunque no sea un comando del core, adduser tiene mayor facilidad, ya que permite un uso interactivo y crea el directorio personal de forma automática.

Para LPI nos centramos en el primero, con algunos ejemplos:

#Crear un usuario malaga que tenga un dirctorio personal andalucia y pertenezca a los grupos proyecto1 y proyecto2, siendo proyecto2 su grupo por defecto, y con una consola tcsh. Además, su contraseña será 1234:
useradd –d /home/andalucia -p 1234 –g proyecto2 -G proyecto1,proyecto2 –s /bin/tcsh malaga
#Más información
man useradd

userdel / deluser

Es un comando que elimina una cuenta de usuario. Para eliminar una cuenta de usuario, eliminando su entrada de los ficheros de bbdd vistos anteriormente:

#Para eliminar un usuario llamado pelenganito y forzar la acción (-f) puedes usar
userdel -r -f pelenganito

Al igual que ocurre con el anterior, en este caso también existe un «front-end» para este comando que es un script llamado deluser

usermod

En cambio, si lo que quieres es modificar la configuración de un usuario ya creado sin editar los ficheros de bbdd, entonces puedes usar:

#Modificar el directorio personal de un usuario llamado suerte para que pase a ser /home/ahora 
usermod -d /home/ahora -m suerte

#Para cambiar el nombre de usuario pepito a grillo (no cambia la ID, los permisos permanecen intactos)
usermod pepito -l grillo

#Para bloquear una cuenta de usuario y desbloquearla respectivamente 
usermod -L user1
usermod -U user1

#Para cambiar el shell por defecto
usermod -s /bin/bash isaac

#Modificar el UID (en groupmod se usa -g para cambiar GID) de un usuario
usermod -u 2003 foo

groupadd / addgroup

También existe la herramienta built-in binaria groupadd y el script que automatiza ciertas tareas addgroup al igual que ocurría con los usuarios. Para LPI interesa el primero, y un ejemplo de uso podría ser:

#Crear un grupo llamado proyecto1, especificando la GID 100 y permitiendo que otros grupos puedan usar esa misma ID con la opción -o
groupadd -g 100 -o proyecto1

#Para más información
man groupadd
groupadd -h

groupdel / delgroup

Para eliminar grupos puedes usar algo como:

#Eliminar proyecto2
groupdel proyecto2

groupmod

También es similar al usermod, y las opciones suelen ser iguales, pero para modificar grupos creados. En este caso, en vez de -u para el UID se usa la opción -g, pero por lo demás es similar, por eso no estoy deteniendomente tanto en estos comandos…

#Cambiar el nombre del grupo1 a grupo0
groupmod grupo0 grupo1

#Cambiar la GID de grupo0
groupmod -g 100 grupo0

passwd

Si no has usado la opción -p en los anteriores comandos para crear cuentas, entonces estarán sin una contraseña definida. Tanto en el caso de que ya cuenten con una como si quieres crearla por primera vez, passwd es el comando que debes usar.

#Cambiar la contraseña a pepito
passwd pepito

#Bloquear y desbloquear la cuenta de pepito
passwd -l pepitto
passwd -u pepito

#Borrar la contraseña de una cuenta
passwd -d desconocido

#Mostrar información de la contraseña de un usuario
passwd -S user1

#Establece fecha de caducidad para la contraseña, con formato AAAA/MM/DD o AAAA-MM-DD
passwd -E 2018/08/08 malaga

#Más info
passwd -h
man passwd

chage

Es un comando específico para cambiar los datos de expiración de contraseñas en Linux.

#Mostrar información de la contraseña de un usuario
sudo chage -l root

#Obligar a un usuario a que cambie de contraseña ya
chage -d 0 invitado

#Especificar cuándo debe expirar una cuenta
chage -E 2018-08-08 malmo

#Especificar el número máximo y mínimo de días entre cambios de contraseñas
chage -m 2 foo
chage -M 5 foo

#Número de días que una cuenta permanece inactiva tras expirar
chage -I 15 fran

#Más
man chage

getent

Por último, el comando getent es una forma fácil de consultar ciertas bases de datos simplemente indicando su nombre. Es decir, podría ser una alternativa a cat /ruta/fichero. Por ejemplo:

#Consultar /etc/passwd 
getent passwd 

#Incluso tienes sustituto para cat /etc/passwd | grep isaac que sería, mostrando solo esa línea de usuario getent passwd isaac

Existen otros comandos (chsh, chfn, vipw, vigr…), aunque ahora no son importantes para este tema de las certificaciones.

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

One thought on “LPIC-1 Tema 107.1: administración de usuarios y grupos

Deja una respuesta

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

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar