En cualquier sistema informático el control de los usuarios es básico para que la información fluya correctamente dentro del sistema. Además tener un buen control de usuarios permite a los administradores de red saber quien hizo que y cuando en caso de alguna incidencia.
GNU/Linux tiene un sistema muy particular para crear, modificar y configurar usuarios y permisos de usuarios, asignando su pertenencia a grupos que le permitirán acceder a determinadas tareas o recursos; y asignando permisos a los archivos para todos los usuarios desde el punto de vista del propietario.

Aunque desde hace tiempo en GNU/Linux ya hay herramientas gráficas para esta tarea, saber las instrucciones de control de usuario cuando nos encontremos con una sesión de terminal sin escritorio gráfico, por ejemplo: una máquina virtual en la nube..
En esta entrada intentaré hacer un repaso rápido a modo de cheatsheet para que sirva como documento de consulta para tod@s.
Primeros pasos.
En la terminal whoami nos dice que usuario tiene la sesión activa en esa terminal:
~$ whoami
Para saber a que grupo o grupos pertenecemos:
~$ groups ~$ groups usuario1 otrousuario // para especificar uno o varios usuarios
Podemos cambiar de usuario con:
~$ su otrousuario
También con:
~$ login usuario2
En ambos casos podemos cerrar sesión con ese usuario con:
~$ logout
Gestión de grupos
Para crear grupos se hace con groupadd:
~$ sudo groupadd oficina_huesca ~$ sudo groupadd oficina_eruel
Para corregir el nombre de un grupo:
~$ sudo groupmod -n oficina_teruel oficina_eruel
Para borrar un grupo:
~$ sudo groupdel oficina_teruel
Gestión de usuarios
Para todas las tareas de gestión de usuarios y grupos es necesario tener permisos de administración, por eso tenemos que usar sudo delante de cada comando. Para evitar esto podemos iniciar sesión como administrador con:
~$ sudo su ~$ su -l // en Debian
Otra opción menos conocida es empezar una sesión en la shell del administrador con:
~$ sudo bash
Con cualquiera de ellas necesitaremos la contraseña del administrador y después veremos que el prompt de la terminal cambia y al final se cambia el símbolo $ por #.
Si queremos añadir un usuario:
~# adduser pedro
Si queremos añadirlo a un grupo:
~# adduser pedro oficina_huesca
Si queremos añadir un usuario y aun grupo:
~# adduser ana --ingroup oficina_huesca
Durante la creación de estos grupos se nos ha pedido una contraseña, podemos cambiarla con:
~# passwd ana
Sin embargo, adduser no es un comando del core de GNU/Linux y es posible que no funcione bien en todas las distribuciones que uses. Useradd es un comando que ejecuta un binario del sistema, mientras que adduser es un script en perl que utiliza el binario useradd.
~# useradd pedro // para añadir un usuario ~# useradd -m pedro // añadir un usuario con su directorio home
Para borrar un usuario:
~# userdel usuario1
Se puede cambiar el propietario de un archivo con:
~# chown ana informe.txt ~# chgrp oficina_teruel informe.txt // para cambiar el grupo ~# chown -R ana ~/oficinas/informes/ // para cambiar el propietario de forma recursiva
Una vez creados los usuarios y grupos todos los archivos tendrán unos permisos; para ver los permisos de cualquier fichero podemos verlo con:
~# ls -l /home/redes/oficinas/informe.txt
y obtenemos una salida en la terminal como esta:
En la primera columna aparecen los permisos, en la tercera se indica el usuario (en este caso es el administrador del sistema) y en la cuarta columna aparece el nombre del grupo (que en este caso coincide con el de usuario). Para entenderla correctamente nos ayudará el siguiente gráfico:

Así la línea que me devolvió la terminal nos dice que el archivo tiene permisos de para el propietario, permisos de para el grupo y permisos de para el resto.
Para cambiar los permisos de un archivo podemos hacerlo con chmod:
~# chmod o+x informe.txt // añadimos permisos de ejecución al archivo informe.txt para todos los usuarios
La sintaxis de chmod es: chmod usuario+permiso para dar al usuario un permiso, o chmod usuario-permiso para quitarselo. Los atributos de usuarios los entenderemos mejor con esta gráfica:

Entonces para asignarle permisos de lectura para todos y permiso de escritura para los usuarios del mismo grupo:
~# chmod o+r home/redes/oficinas/informe.txt ~# chmod g+w home/redes/oficinas/informe.txt ~# chmod g+w-x home/redes/oficinas/informe.txt // si queremos asignarle permiso de escritura pero no de ejecución al grupo
El sistema es un poco lioso la verdad, además hay que hacer un comando para cada entidad para asignar los permisos a un archivo; pero hay un método alternativo usando un numero para cada par entidad/permiso que nos facilita la tarea; para verlo podemos apoyarnos en la tabla siguiente:

De esta forma esta linea:
~# chmod 755 /home/redes/oficinas/informe.txt
que se obtiene con este esquema:
CHMOD 755 = (user) permisos lectura/escritura/ejecución 7 (grupo) permisos lectura/escritura 5 (otros) permisos lectura 5
y es equivalente a todas estas:
~# chmod u+rwx /home/redes/oficinas/informe.txt ~# chmod g+rx-w /home/redes/oficinas/informe.txt ~# chmod o+rx-w /home/redes/oficinas/informe.txt
¡Mucho mejor donde va a parar! De esta forma solo tenemos que recordar las combinaciones de números mas usadas a la hora de aplicar permisos con chmod.
Y bueno esto es todo por hoy nos vemos en la próxima entrada.