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 | ||
who | Muestra quién está conectado | Muestra información acerca de los usuarios que están actualmente conectados, con sesión abierta, en el sistema. |
whoami | Muestra que usuario estás usando | Muestra el nombre de usuario asociado con el identificador de usuario efectivo que se está usando. |
id | Muestra información de un usuario | Muestra el usuario real y efectivo así como identificación de grupos a los que pertenece dicho usuario. |
su | Convertirse en otro usuario | Permite ejecutar comandos con un usuario y grupo sustituto. Es decir, permite actual en el sistema como otro usuario. |
sudo | Ejecutar un comando como root | Permite ejecutar comandos como superusuario (root) o como otro usuario, siempre que el usuario esté permitido. |
groups | Muestra grupos de un usuario | Muestra los grupos a los que pertenece el usuario. |
adduser | Añade cuentas de usuario | Permite añadir cuentas de usuario al sistema o añadir una cuenta de usuario existente a un grupo del sistema |
addgroup | Añade cuentas de grupo | Permite añadir cuentas de grupo al sistema. |
deluser | Elimina un usuario del sistema o de un grupo | Elimina usuarios del sistema o usuarios como miembro de un grupo. |
delgroup | Elimina un grupo del sistema | Elimina un grupo del sistema |
passwd | Cambia la contraseña | Permite cambiar la contraseña de las cuentas de usuario |
useradd | Crea cuentas de usuario | Permite crear cuentas de usuario a bajo nivel. Se recomienda utilizar adduser en su lugar. |
groupadd | Crea un nuevo grupo | Crea cuentas de grupo nuevas a partir de los datos pasados por parámetro y los valores por defecto del sistema |
userdel | Elimina usuarios del sistema | Es una herramienta de bajo nivel. Se aconseja, si es posible, usar deluser |
usermod | Modifica cuentas usuario | Modifica cuentas de usuario modificando los ficheros de cuentas de usuario del sistema |
Ficheros y directorios | ||
/home | Directorios personales | Por defecto almacena los directorios personales de los usuarios del sistema, excepto del usuario root. |
/etc/skel | Directorio esqueleto | Por defecto, se utiliza como directorio base para crear los directorios personales de las nuevas cuentas de usuario que se crean en el sistema |
/etc/passwd | Fichero de cuentas de usuario | Almacena 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/shadow | Fichero de contraseñas | Almacena 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/group | Fichero de grupos | Almacena 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.conf | Configuración de preferencias de adduser, addgroup, deluser y delgroup | Contiene 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
id | Muestra información de identificación de una cuenta de usuario |
passwd | Cambia la contraseña de una cuenta de usuario |
adduser | Añade un usuario al sistema Añade un usuario a un grupo. |
addgroup | Añade un grupo al sistema |
deluser | Elimina un usuario del sistema Elimina un usuario de un grupo |
delgroup | Elimina 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.
Usuario | Grupo |
alfredoff | contabilidad, educatica |
marinapg | ventas, contabilidad, educatica |
ramonam | ventas, educatica |
rosarm | contabilidad, 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.
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.