Aún con la ‘resaca’ navideña, vamos a ir retomando la serie de Administración de Linux. Ya habíamos hablado de los aspectos más básicos como el movimiento por el árbol de directorios de Linux y la descripción de cada directorio importante. Igualmente hablamos de los permisos y de cómo se aplicaban diferentes permisos a cada usuario y a cada grupo. Lo que aún desconocemos es cómo gestionar dichos grupos, crear nuevos, añadir usuarios a los mismos o eliminarlos, creación de usuarios, etc. Por este motivo vamos a hablar de dicho tema, de forma que podáis controlar de forma completa quién hace qué en vuestro sistema.
Si bien en los hogares no suele ser muy necesaria una gestión avanzada de grupos y usuarios, en las empresas o centros educativos es absolutamente imprescindible para el correcto funcionamiento de la organización. Por lo general, en el hogar, sólo distinguimos entre los archivos privados y los públicos, por lo que basta con guardar todos los privados en el directorio home, al cual solo tú tienes acceso, y crear un directorio público para que puedan acceder todos. Sin embargo, en las empresas suele haber diferentes departamentos o áreas: marketing, técnicos, diseñadores, contabilidad, dirección…; o bien: alta dirección, supervisores, trabajadores… Ambas son dos distribuciones diferentes de trabajadores que pueden requerir de una distribución en diferentes grupos para controlar el nivel de acceso al sistema (la segunda) o bien para controlar qué proyectos puede ver cada usuario (la primera).
![Administración Linux (V) – Usuarios y grupos usuario linux](http://m1.paperblog.com/i/299/2997534/administracion-linux-v-usuarios-grupos-L-PBW10O.jpeg)
Gestión de usuarios
Como es normal, los usuarios de un sistema Linux han de estar guardados en un fichero de texto, al igual que toda la configuración del sistema. Este fichero se encuentra en el directorio /etc, como sabemos de la entrega 2 de ésta serie, y se llama passwd. Si visualizamos este fichero veremos una serie de líneas similares a la siguiente:
instintobinario:x:1:3:Instinto Binario:/home/instintobinario:/bin/bash
su sintaxis es la siguiente:
nombre:clave_encriptada:UID:GID:GECOS:directorio_inicial:intérprete
Los campos se separan por el carácter ‘:’. En el campo nombre tenemos el alias con que se loguea el usuario. A continuación está la clave encriptada, aunque lo más probable es que veamos solo una x. Si no fuera así sería muy fácil obtener todas las claves de los usuarios simplemente copiando el contenido de éste fichero.
Los campos UID y GID, son dos número que representan al identificador del usuario y del grupo respectivamente. El campo GECOS significa General Electric Comprehensive Operating System, y se utiliza para guardar cualquier información, por ejemplo, el nombre completo del usuario. Se puede ignorar y dejarlo vacío.
A continuación se encuentra el directorio inicial, que determina el directorio donde empieza el usuario al loguearse, y el intérprete de comandos que utilizará el usuario por defecto (bash, tcsh, zsh…). Si en el campo del intérprete aparece /sbin/nologin, es que dicho usuario no puede loguearse. Esto es necesario porque en Linux existen usuarios que ejecutan ciertos procesos con privilegios que no necesitan de un logueo para ejecutar la acción, como el daemon o el sys.
Este fichero debe ser accesible para todos los usuarios para permitir que el sistema funcione de forma correcta. Las claves se almacenan, hasheadas lógicamente, para evitar que sean leídas con facilidad, en el fichero /etc/shadow, el cual no puede ser accedido por todos los usuarios. Esto es así para evitar que se utilicen programas de fuerza bruta, como el famoso ‘John de ripper’, para desencriptarlas. Así pues, el fichero /etc/shadow, sólo es accesible por el root. Su formato es el siguiente:
usuario:contraseña_cifrada:d1:d2:d3:d4:d5:d6:reservado
El campo de usuario y la contraseña_cifrada, son evidentes que guardan el nombre del usuario y la contraseña del mismo. El campo reservado, es para el uso del sistema o para implementar usos más avanzados en seguridad. Los campos d1 a d6 tienen la siguiente funcionalidad:
- d1: nº de días desde el 01/01/1970 hasta último cambio de la contraseña.
- d2: nº de días que deben pasar hasta que se pueda cambiar la contraseña.
- d3: nº de días que deben pasar para que caduque la contraseña y deba ser cambiada.
- d4: nº de días de antelación con los que avisará el sistema de la caducidad de la contraseña.
- d5: nº de días con contraseña caducada antes de deshabilitar la cuenta.
- d6: nº de días desde el 01/01/1970 y el día en que se deshabilitó la cuenta.
Vamos a ver las diferentes utilidades que tenemos disponibles para la gestión de los usuarios.
- useradd [<opciones>] usuario
Permite añadir nuevos usuarios al sistema. Las principales opciones son:- -c, –comment comentario → cualquier cadena de texto usada como un comando. Se utilizará para rellenar el campo GECOS.
- -d, –home directorio → se indica cual es el directorio que utilizará el usuario por defecto.
- -e fecha → especifica fecha en la cual se desactivará la cuenta.
- -f días → indica el número de días que pasan desde que la contraseña caduca hasta que se desactiva la cuenta.
- -g, –gid grupo → el nombre o el id del grupo principal del usuario. Éste grupo tiene que existir.
- -G, –groups grupo1[,grupo2…] → lista de grupos secundarios a los que pertenece el usuario.
- -k, –skel directorio → directorio que contiene la los ficheros y directorios que se copiarán en el home del usuario.
- -m, –create_home → si no existe, se crea el home indicado para el usuario.
- -N, –no-user-group → no se crea el grupo con el nombre del usuario.
- -p, –password contraseña → se asigna al usuario la contraseña indicada.
- -s, –shell shell → se asigna la shell indicada por defecto al usuario.
- -u, –uid número → se asigna el número indicado como uid del usuario.
Si utilizamos el comando userad -D nos muestra las opciones por defecto, y podemos utilizar cualquiera de las opciones arriba para modificar el valor por defecto que haya.
Podemos utilizar también la interfaz adduser, que simplifica la opción de éste comando. Para aprender sobre ella consulta la página del manual: man adduser. - usermod [<opciones>] usuario
Permite modificar los valores dados a un usuario. Se utilizan las mismas opciones que en useradd. - userdel [<opciones>] usuario
Elimina el usuario indicado del sistema. Sus dos opciones principales son:- -f → fuerza la eliminación del usuario, aún cuando esté logueado en el sistema.
- -r → elimina el directorio home del usuario y todo su contenido.
Existe una interfaz de alto nivel que permite hacer ésto de forma más cómoda, el comando deluser, que puedes consultar en el manual.
![Administración Linux (V) – Usuarios y grupos grupos Linux](http://m1.paperblog.com/i/299/2997534/administracion-linux-v-usuarios-grupos-L-NJxS_G.jpeg)
Gestión de grupos
Todo usuario pertenece a un grupo al menos: su grupo principal de usuario, pero también puede pertenecer a varios más. Por ejemplo, en el ejemplo que dije en la introducción, un usuario puede pertenecer al grupo de supervisores y de diseño, si es el jefe de un equipo de diseñadores. Existen ciertos grupos del sistema que cumple funciones específicas del funcionamiento y la seguridad del mismo, como pueden ser: root, bin, sudoers… De todas formas se pueden crear todos los grupos que se quiera para poder organizar los usuarios como más nos convenga. En todo caso, al crear un nuevo usuario, creamos un grupo con el nombre del mismo, el cual será su grupo principal.
La información de los grupos se encuentra en el fichero /etc/group. Este fichero cumple la misma función que passwd, pero con los grupos en lugar de los usuarios. El contenido del mismo será una serie de líneas con un aspecto similar al siguiente:
editores:x:1000: ruben,victor
La sintaxis es la que sigue:
nombre_grupo:clave:GID:lista_miembros
Aunque en la clave aparezca una x, no quiere decir que todos los grupos tengan una clave. La lista de miembros enumera los usuarios que pertenecen al grupo.
Las contraseñas de grupos se encuentran en el fichero /etc/gshadow, que tiene el formato:
nombre_grupo:clave:administradores:miembros
El nombre del grupo y la clave son lo de siempre, los administradores es una lista de los usuarios que administran el grupo, y los miembros la lista de los usuarios que pertenecen a dicho grupo.
Veamos ahora las herramientas con que podemos gestionar a los grupos.
- groupadd [<opciones>] grupo
Crea un nuevo grupo con el nombre que se indica. Las opciones más importantes son:- -f, –force → fuerza la creación del grupo aún cuando existe otro con el mismo nombre. Si se especifica un gid y existe otro grupo con el mismo, simplemente se cambia por uno diferente.
- -g, –gid número → especifica un gid para el nuevo grupo
- -p, –password contraseña → especifica una contraseña para el grupo
Existe alguna opción más disponible en la página del manual. Así mismo se puede utilizar la interfaz de alto nivel groupadd, que también se puede consultar en el manual.
- groupmod [<opciones>] grupo
Permite modificar el gid (-g, –gid número) o el nombre del grupo (-n, –new-name nombre). - groupdel [<opciones>] grupo
Elimina el grupo especificado. - adduser usuario grupo
Añade un usuario a un grupo. - deluser usuario grupo
Elimina un usuario de un grupo.
Además de todo lo que se ha dicho, suele haber herramientas gráficas que ayudan a gestionar los usuarios, pero siempre trabajan bajo ésta base. Como ya conté en la introducción de esta serie, la consola tiene diversas ventajas sobre la interfaz gráfica.
Otros artículos de ésta serie:
Administración Linux (I) – ¿Por que la consola?
Administración Linux (II) – Navegar el árbol de directorios Linux
Administración Linux (III) – Los directorios Linux
Administración Linux (IV) – Permisos de archivos y directorios
El artículo Administración Linux (V) – Usuarios y grupos apareció por primera vez en Instinto Binario.
![Administración Linux (V) – Usuarios y grupos Administración Linux (V) – Usuarios y grupos](http://m1.paperblog.com/i/299/2997534/administracion-linux-v-usuarios-grupos-L-dbS0mO.jpeg)