educación, informática y demás

Gestión de usuarios y grupos

Actividades de comandos

En la página de actividades de comandos de gestión de usuarios y grupos puedes encontrar varias actividades con multitud de ejercicios resueltos sobre comandos de gestión de usuarios y grupos, así como trabajo con los ficheros y directorios relacionados con las cuentas de usuario y grupos.

Resumen de comandos

Gestión de usuarios y grupos
whoMuestra quién está conectadoMuestra información acerca de los usuarios que están actualmente conectados, con sesión abierta, en el sistema.
whoamiMuestra que usuario estás usandoMuestra el nombre de usuario asociado con el identificador de usuario efectivo que se está usando.
idMuestra información de un usuarioMuestra el usuario real y efectivo así como identificación de grupos a los que pertenece dicho usuario.
suConvertirse en otro usuarioPermite ejecutar comandos con un usuario y grupo sustituto. Es decir, permite actual en el sistema como otro usuario.
sudoEjecutar un comando como rootPermite ejecutar comandos como superusuario (root) o como otro usuario, siempre que el usuario esté permitido.
groupsMuestra grupos de un usuarioMuestra los grupos a los que pertenece el usuario.
adduserAñade cuentas de usuarioPermite añadir cuentas de usuario al sistema o añadir una cuenta de usuario existente a un grupo del sistema
addgroupAñade cuentas de grupoPermite añadir cuentas de grupo al sistema.
deluserElimina un usuario del sistema o de un grupoElimina usuarios del sistema o usuarios como miembro de un grupo.
delgroupElimina un grupo del sistemaElimina un grupo del sistema
passwdCambia la contraseñaPermite cambiar la contraseña de las cuentas de usuario
useraddCrea cuentas de usuarioPermite crear cuentas de usuario a bajo nivel. Se recomienda utilizar adduser en su lugar.
groupaddCrea un nuevo grupoCrea cuentas de grupo nuevas a partir de los datos pasados por parámetro y los valores por defecto del sistema
userdelElimina usuarios del sistemaEs una herramienta de bajo nivel. Se aconseja, si es posible, usar deluser
usermodModifica cuentas usuarioModifica cuentas de usuario modificando los ficheros de cuentas de usuario del sistema
Ficheros y directorios
/homeDirectorios personalesPor defecto almacena los directorios personales de los usuarios del sistema, excepto del usuario root.
/etc/skelDirectorio esqueletoPor defecto, se utiliza como directorio base para crear los directorios personales de las nuevas cuentas de usuario que se crean en el sistema
/etc/passwdFichero de cuentas de usuarioAlmacena información de las cuentas de usuario en el sistema. En cada línea almacena información de una cuenta de usuario dividida en 7 campos separados por “:”
/etc/shadowFichero de contraseñasAlmacena información de contraseñas de las cuentas de usuario en el sistema. En cada línea almacena información de una contraseña de una cuenta de usuario dividida en 9 campos separados por “:”
/etc/groupFichero de gruposAlmacena información cuentas de grupo en el sistema. En cada línea almacena información de un grupo dividido en 4 campos separados por “:”
/etc/adduser.confConfiguración de preferencias de adduser, addgroup, deluser y delgroupContiene las preferencias de los programas adduser, addgroup, deluser y delgroup.

Tipos de usuarios

Básicamente, hay dos tipos de usuarios en los sistemas basados en GNU/Linux o Unix: el administrador (root) y el resto de usuarios.

Nos vamos a centrar en sistemas basados en GNU/Linux, en concreto utilizaremos Ubuntu. Sin embargo, la mayor parte de lo explicado se puede utilizar en cualquier sistema GNU/Linux o Unix.

El usuario administrador

El usuario root es el usuario utilizado para administrar el sistema. Este usuario puede realizar cualquier tarea de administración sobre el sistema. Es decir, este usuario puede hacer cualquier cosa con el sistema.

Este “poder” es peligroso, porque cualquier fallo ocasionado con la cuenta de root puede afectar a la seguridad de todo el sistema. Hay que tener en cuenta, que cualquier aplicación que se ejecute con la cuenta de root, tendrá los mismos permisos que root, por tanto podrá hacer cualquier cosa en el sistema. Por tanto es necesario tomar una serie de medidas de seguridad para evitar problemas con el uso de la cuenta de root.

Veamos algunas de estas medidas de seguridad.

  • Usar la cuenta de root solo cuando sea necesario. Para ello, el administrador del sistema deberá contar con una cuenta de usuario normal, que será la que utilice para trabajar con el sistema. Cuando necesite realiza alguna tarea de administración, se cambiará a la cuenta de root para llevarla a cabo. Una vez terminada la tarea de administración, vuelve a su cuenta normal.
  • No permitir inicio de sesión con la cuenta root. Aunque esta medida no es necesaria, si está siendo utilizada cada vez más. De esta forma, se obliga a que el administrador del sistema tenga que tener una cuenta de usuario normal y acceder al sistema a través de ésta. Es una manera de forzar el cambio a root solo cuando sea necesario.

Cambio de usuario al usuario root

El sistema proporciona una serie de mecanismos para poder cambiar al usuario root desde una cuenta de usuario normal o para ejecutar comandos como usuario root. Por supuesto, solo podrá hacer este cambio aquel o aquellos usuarios que queramos que tengan permisos de administración.

Para seleccionar qué usuario puede llevar a cabo tareas de administración como root, hay dos técnicas de protección básicas: conocer la contraseña de root e iniciar sesión como root o configurar el sistema para que ciertos usuarios puedan ejecutar comandos como si fueran root.

La primera opción, proporcionar la contraseña de root e iniciar sesión, conlleva proporcionar cierta información sensible a uno o varios usuarios y, sobre todo, facilita la vulnerabilidad del sistema. Al trabajar como root de forma continua, se facilita la posibilidad de cometer un error humano a la hora de trabajar con la cuenta al aumentar el tiempo que estamos en el sistema como root.

La segunda opción se basa en mantener una lista con los usuarios que pueden ejecutar tareas como root. De tal forma que, cuando un usuario quiera realizar una operación de administración, se comprueba si ese usuario pertenece o no a la lista de usuarios con permisos de administración. Si pertenece, se comprueba si realmente es quien dice ser, pidiendo una contraseña. Esta opción es más facil de mantener y permite realizar, hasta cierto punto, seguimiento de las operaciones realizadas.

Comando su

El comando su permite cambiar de usuario. Permite convertirse en otro usuario durante una sesión, sin tener que cerrar una sesión e iniciar otra.

Para obtener más información sobre este comando podemos consultar su página de manual.

Si ejecutamos el comando su sin parámetros estamos tratando de cambiar de usuario al usuario root. Si conocemos su contraseña podremos continuar como root hasta que queramos salir con el comando exit.

Se puede observar como el prompt del sistema ha cambiado al cambiar de usuario. Ahora podríamos realizar las acciones que queramos en el sistema.

Para terminar el trabajo como root y volver a nuestro usuario, tan solo tendríamos que ejecutar el comando exit.

Comando sudo

El comando sudo permite a un usuario con privilegios ejecutar comandos como root. Es decir, permite ejecutar un comando concreto como administrador para realizar tareas administrativas.

Cada comando que queramos ejecutar como root debemos precederlo con el comando sudo. Por ejemplo, si queremos ejecutar el comando ls /root como root tenemos que ejecutar delante sudo.

Al tratar de ejecutar sudo, nos pide nuestra contraseña de usuario para autenticarnos. Durante un tiempo, el sistema «nos recuerda» y no nos pide contraseña en esta terminal.

La ventaja de esta solución está en evitar errores humanos, puesto que tan solo ejecutaremos un comando concreto como root y después seguiremos con nuestra sesión como usuario.

Para más información sobre sudo podemos consultar su página de manual.

Para que un usuario pueda ejecutar comandos como root, debe estar configurado en el fichero /etc/sudoers. En este documento no se explica cómo añadir usuarios a la lista de usuarios con privilegios de root, aunque con la ayuda de man se puede realizar sin problemas. Podemos consultar la página de ayuda de sudoers, con el comando man sudoers.

Video – Tipos de usuarios

Comandos de gestión de usuarios

idMuestra información de identificación de una cuenta de usuario
passwdCambia la contraseña de una cuenta de usuario
adduser Añade un usuario al sistema
Añade un usuario a un grupo.
addgroupAñade un grupo al sistema
deluser Elimina un usuario del sistema
Elimina un usuario de un grupo
delgroupElimina un grupo del sistema
usermod Modifica la cuenta de un usuario en el sistema.

Toda la información de configuración de usuarios y grupos se almacena en ficheros. El S.O. Utiliza ficheros de texto plano para gestionar las cuentas de usuario y grupos. De hecho, en gneral, tanto el S.O. como las aplicaciones utilizan para su configuración ficheros de texto plano, que pueden editarse directamente, aunque no siempre es la meor opción.

Los ficheros de configuración que se utilizan para gestionar usuarios y grupos son:

/etc/passwd Información de configuración sobre las cuentas de usuario del sistema.
/etc/shadow Contraseñas de las cuentas de usuario
/etc/group Información sobre los grupos del sistema.

Vídeo – Comandos de administración de usuarios y grupos

Algunos ejemplos de uso

Para crear un usuario usamos adduser con sudo, porque vamos a realizar esa operación como administrador.

Suponemos que se ha creado, pero podemos comprobarlo de varias formas. La más directa sería con el comando id seguido del nombre del usuario recién creado.

También podemos mirar en el fichero de cuentas de usuarios del sistema. Como acabamos de añadir a este usuario el registro de su cuenta estará al final del fichero. Vamos a mostrar las cinco líneas del fichero /etc/passwd.

Ficheros de configuración de usuarios y grupos

Fichero /etc/passwd

Este fichero almacena la información necesaria para gestionar cuentas de usuario en el sistema. En cada línea de este fichero se guarda información de una cuenta de usuario. Vamos a ver el contenido de este fichero.

Con el comando cat se muestra el contenido del fichero /etc/passwd. Como puedes observar, cada línea almacena información de una cuenta de usuario. En cada línea, se almacenan una serie de campos (7) con información del usuario, separados por un carácter de separación “:”.

Si queremos obtener más información sobre el fichero /etc/passwd podemos consultar su manual.

Para consultar información sobre el fichero /etc/passwd tenemos que consultar la sección 5 del manual de passwd.

javier@smr01Profesor:~$ man 5 passwd

Existen 7 campos para cada cuenta de usuario:

Nombre usuario Nombre con el que se identifica al usuario en el sistema.
Contraseña En este fichero NO se almacena la contraseña del usuario. Para ésto se utiliza, por motivos de seguridad otro fichero (/etc/shadow).
UID Identificador numérico del usuario. Este número es usado por el sistema para identificar a los usuarios.
GID Identificador numérico del grupo principal del usuario. Todo usuario debe tener un grupo principal, pudiendo pertenecer a varios grupos más, pero solo uno principal.
Información general Datos sobre el usuario. No es obligatorio.
Directorio de Inicio Ruta del directorio de inicio del usuario.
Interprete de comandos Ruta del interprete de comandos que utilizará el usuario.

Fichero /etc/shadow

El fichero /etc/shadow almacena las contraseñas de las cuentas de usuario. Se utiliza este fichero por seguridad.

Esto es debido a que es necesario que cualquier usuario pueda leer información de cuentas de usuario, que se almaenan en /etc/passwd. Si las contraseñas se almacenaran en el fichero /etc/passwd, cualquier usuario del sistema tendría acceso a las contraseñas (cifradas).

La solución, guardar las contraseñas en un fichero al que solo puede acceder el usuario root.

Si queremos obtener información sobre lo que almacena /etc/shadow, consultamos su página de manual.

Como se puede intuir, estos dos ficheros on complementarios. En /etc/passwd se almacena la información de las cuentas de usuario y en /etc/shadow se almacenan las contraseñas de cada cuenta de usuario.

El formato básico del fichero es el siguiente:

Nombre de usuario (Obligatorio) Identifica al usuario para el que se almacena la contraseña.
Contraseña cifrada Contraseña cifrada del usuario.
Información de edad El resto de campos almacena información para gestionar la caducidad de las contraseñas.

Fichero /etc/group

Se trata del fichero donde se guarda información de los grupos a los que pertecen los usuarios del sistema. En cada línea se almacena información de un grupo. Los campos son los siguientes:

Nombre grupo identifica al grupo.
Contraseña No se suele utilizar.
GID Identificador numérico del grupo
Lista de miembros Nombres de usuarios separados por coma que pertenecen al grupo.

Vídeo – Ficheros de cuentas de usuario y grupos del sistema

Caso práctico 01 – Usuarios y grupos

Parte 01 – Creando cuentas de usuario

Se desea configurar un sistema para que cuente con una serie de cuentas de usuario que pertenecerán a los grupos que se muestran en la tabla que aparece a continuación.

UsuarioGrupo
alfredoffcontabilidad, educatica
marinapgventas, contabilidad, educatica
ramonamventas, educatica
rosarmcontabilidad, educatica

También se desea que todas las cuentas de usuario, según se creen en el sistema, cuenten con un directorio llamado educatica y otro llamado proyectos en su directorio personal de forma automática.

Parte 02 – Modificando cuentas de usuario y de grupo

Una vez configurado el sistema como se pedía en el apartado anterior, se desea deshabilitar la cuenta de usuario de ramonam, así como sacar del grupo contabilidad al usuario marinapg y eliminar la cuenta de rosarm.

Solución – Vídeo – Caso práctico

Caso práctico 02 – Otro ejemplo simple

Vamos a añadir ahora un grupo, el grupo infopacense a nuestro sistema. Para ello utilizaremos el comando addgroup seguido del nombre del grupo.

Podemos mostrar la última línea del fichero de cuentas de grupos y podemos ver que almacena información sobre el grupo infopacense.

Vamos a mostrar las últimas cinco líneas del fichero de grupos.

Si nos fijamos tenemos infopacense como grupo. En el campo de miembros no tiene nada. Además, nos podemos fijar en el grupo alfonsomg que tampoco tiene miembros, sin embargo sabemos que el usuario alfonsomg es miembro de ese grupo. Esto es así, porque el grupo alfonsomg cuyo gid es 1004 es el grupo principal de ese usuario.

Vamos a mostrar el fichero de grupos a ver que ha cambiado en el registro de infopacense.

mari

Vamos a crear otro usuario llamado victoriajp y la vamos a añadir en el grupo infopacense.

Ahora vamos a echar un vistazo, de nuevo a la entrada del grupo infopacense a ver como ha cambiado.

Vamos a crear un nuevo usuario llamado rosaab. Una vez creado vamos a añadirlo al grupo infopacense editando el fichero de cuentas de grupo. Este tipo de acciones no se recomiendan salvo que sepamos muy bien lo que estamos haciendo o tengamos que hacer un trabajo administrativo largo.

Vamos a mostrar información del usuario recién creado.