Gestión de usuarios y grupos en Linux
Contenidos
Introducción
Para poder utilizar Linux es imprescindible identificarse como un usuario registrado en el sistema. La distinción más importante entre ellos es si son administradores o no, ya que gozarán de permisos muy distintos. El administrador por defecto se llama root y pertenece al grupo también llamado root, que tiene el cero como GID (Identificador de grupo). Los que no pertenezcan a este grupo serán usuarios sin privilegios de administrador y tendremos que concederle permisos si necesitan realizar tareas especiales. En caso contrario su uso del sistema se limita a utilizar los programas que estén instalados y poder escribir dentro de su directorio personal, también llamado “home”. Cuando estamos utilizando el Bash, aparece permanentemente el prompt que es una información que está siempre a la izquierda del cursor cuando empezamos a escribir un comando. Aunque se puede personalizar, por defecto no mostrará el nombre del usuario que está ejecutando las órdenes seguido de una arroba, el nombre de la máquina y tras los dos puntos, el directorio en el que nos encontramos. Después de éste aparece una almohadilla si el usuario administrador o un símbolo del dólar si no. Ejemplo: alumno@cursea:/etc$
El algunas distribuciones se utiliza la urden sudo para ejecutar instrucciones con permisos de administrador, en otras se utiliza su para identificarse como root y después realizar las tareas necesarias.
Todos los usuarios pertenecen obligatoriamente a un grupo de forma principal y opcionalmente a tantos como se necesite, de forma secundaria. Esto es importante porque podremos asignar permisos específicos a un grupo y éstos se aplicarán a todos los que pertenezcan a él. Cabe destacar que no existen grupos principales y secundarios, sólo grupos. Lo que es principal o secundario es la pertenencia de un usuario a un grupo.
Obtener información sobre usuarios y grupos
La información de los usuarios se guarda en el fichero /etc/passwd y la de los grupos en /etc/group. En ellos habrá una linea por cada usuario o grupo con la información separada entre el carácter de dos puntos.
Los campos contienen la siguiente información:
Nombre de usuario
En los sistemas modernos contiene siempre una x, antes guardaba la clave cifrada, pero ahora se utiliza el fichero /etc/shadow
Número con un UID, el identificador único de usuario
Número con un GUI, identificador único de grupo
Datos de carácter personal, frecuentemente se hallará en blanco.
Ruta absoluta del directorio personal del usuario. Su directorio “home”
Ruta del intérprete de comandos que usará el usuarios cuando entre al sistema.
En el caso del /etc/group:
Nombre del grupo
2. Contraseña cifrada (o una x que indica la existencia de un archivo gshadow) en caso de tenerla activada, algo poco frecuente.
Número con un GUI, identificador único de grupo
Nombres de todos los usuarios (separadas por una coma) que pertenecen al grupo de forma secundaria
Existen comandos para conocer información relevante de los usuarios tales como:
whoami : indica quién es el usuario que está ejecutando la orden
groups: muestra los grupos a los que pertenece el usuario. Si se pone sin parámetros hará referencia al usuario que la ejecuta, pero podemos indicarle otro cualquiera.
id: muestra información sobre el usuario, los grupos y sus identificadores. Se puede usar con o sin parámetros, al igual que groups
Administrar usuarios y grupos
Para administrar usuarios y grupos hay que tener permisos de administrador (root). En general habrá que crear primero los grupos con el comando groupadd nombre_grupo
El comando para crea un usuario es useradd que tiene las siguientes opciones:
-d : especifica el directorio personal del usuario. Sólo lo crea si añadimos la opción -m. Por defecto /home/nombre_usuario
-s : especifica el shell (intérprete de comandos) que utilizará el usuario. Por defecto /bin/sh
-g : indica su grupo principal. Por defecto crea un grupo con el mismo nombre de usuario
-G : establece los grupos a los que pertenecerá el usuario de forma secundaria. Deben ponerse separados por comas sin dejar ningún espacio entre ellos. Por defecto ninguno
-k : copia en el directorio del usuario el contenido de un directorio que se usa a modo de plantilla. Por defecto /etc/skel
Después de todas las opciones se pone el nombre del usuario. Ejemplo:
useradd -d /home/alumnos/pedro -m -s /bin/bash -g alumnos pedro
Para poder usar el usuario debemos asignarle una clave, se podría utilizar la opción -p aunque no se recomienda porque hay que poner la contraseña en la linea del useradd y podría quedar al descubierto desde otros lugares del sistema. Se recomienda usar passwd. También existe un script en PERL que se llama adduser. Es una especie de asistente que nos facilita la información y nos pregunta por alguna información del usuario, incluida la contraseña.
Para modificar la información de un usuario existe el comando usermod que utiliza las mismas opciones que useradd. La única aclaración destacable es que si usamos la opción -G estamos sustituyendo todos sus grupos secundarios. Si lo que queremos es añadir sin modificar a los que ya pertenece tendremos poner -aG.
Si lo que queremos es borrar usuarios utilizaremos la orden groupdel y para borrar usuarios userdel . Para borrar el directorio home del usuario y su cola de correo acompañaremos la instrucción con la opción -r
Gestión de las contraseñas
Las claves de los usuarios se guardan cifradas en el fichero /etc/shadow al que sólo tiene acceso el root. En el mismo fichero encontramos más información referente a sus contraseñas:
Cuándo fue cambiada por última vez
El mínimo de días que deben transcurrir hasta que pueda volver a cambiarse
El máximo de días de validez de la contraseña
Número de días durante los que avisará de que la clave va a caducar
Días que pasarán desde que la clave caduca hasta que se deshabilita la cuenta
Fecha de caducidad de la clave, por lo tanto el usuario no podrá iniciar sesión.
Si queremos ver esta información de un usuario en concreto podemos usar el comando chage -l