Linux es un sistema operativo multiusuario, lo que significa que más de un usuario puede usar Linux al mismo tiempo. Una de las funciones más importantes de un administrador de sistemas es gestionar los usuarios y grupos en un sistema, esta puede llegar a ser una tarea compleja. Sin embargo, Linux nos proporciona un mecanismo hermoso para gestionar usuarios en el sistema.
Gestionar Usuarios en Linux
Un usuario o cuenta de un sistema se identifica de forma única mediante un número denominado UID (número de identificación único). En Linux podremos encontrar básicamente tres tipos de usuarios:
- Usuario root: también llamado usuario raíz o superusuario, con UID 0 y que cuenta con privilegios de acceso y modificación sobre todo el sistema. Será el encargado de realizar configuraciones importantes, instalar programas, actualizaciones y todo lo relativo a la gestión de cuentas de usuarios.
- Usuarios especiales: más que usuarios, son cuentas del sistema que se instalan con determinado software o que ya vienen por defecto en el sistema. Ejemplo de ello son bin, mail, apache, sshd, etc. No son usuarios normales, pero tampoco llegarán a tener todos los permisos de root. Solamente tendrán activadas ciertas funciones de root en función del propósito para el que estén creados
- Usuarios normales: estos será los que comúnmente utilizamos en nuestro sistema para realizar las típicas acciones. Contaremos con acceso a la terminal de comandos para tareas básicas, contaremos con un directorio de trabajo para cada uno en /home, así como una UID.
Ficheros de usuarios en Linux
Antes de comenzar a crear, modificar o borrar nuestros usuarios, conviene que sepamos cuáles son los ficheros en donde se almacena la información relativa a los usuarios en nuestro sistema. Básicamente tendremos dos ficheros principales, por un lado /etc/passwd/ y por otro /etc/shadow. Veamos más en detalle que contienen estos directorios:
/etc/passwd
En el fichero passwd se encuentran absolutamente todos los usuarios que contiene el sistema, root, especiales, y normales. Este fichero se podrá leer por todos los usuarios y solo será modificable por el usuario root. Para buscar dentro de él nuestro usuario podríamos hacer:
# grep “jose” /etc/passwd jose:x:1000:1000:jose,,,:/home/jose:/bin/bash
De esta forma veríamos la información relativa a nuestro usuario. Si nos fijamos, será una cadena de caracteres que están separados mediante “:” para delimitar los distintos campos:
- Columna 1: nombre de usuario para login.
- Columna 2: contraseña del usuario. Si se muestra una “x” la contraseña se sitúa en /etc/shadow. Si se muestra una cadena de números y letras, la contraseña está en /etc/passwd pero encriptada.
- Columna 3: número de identificado (UID).
- Columna 4: Numero de identificador del grupo (GID).
- Columna 5: nombre completo de usuario, si lo hubiera.
- Columna 6: Directorio de trabajo del usuario.
- Columna 7: Shell que utilizará el usuario en cuestión. Si es “nologin” significa que no tendrá shell propia.
/etc/shadow
Ya hicimos referencia a él en el apartado anterior. En este fichero se almacenan todas las claves de los usuarios existentes en el sistema, por supuesto encriptadas y con único acceso a él para ver el contenido del usuario root. Hagamos lo mismo que antes para ver la distribución de información sobre nuestro usuario:
# grep “jose” /etc/shadow jose:$6$d.O7lEiY$h.A5gNBMi95cUrZwxc603Wo5QYEbyCgGgLcP0nrR2l/4oBP/hy0AodEQ8eLyHv3/L7HlE2aEPP.7BX1hbgwFM.:17854:0:99999:7:::
- Columna 1: Nombre de usuario.
- Columna 2: Contraseña cifrada. Si se muestra un “*” significa que la cuenta es “nologin”.
- Columna 3: cuenta los días transcurridos desde el 1/1/1970 hasta que la contraseña ha sido cambiada por última vez.
- Columna 4: cantidad de días que deben transcurrir para poder cambiar la contraseña. Si está en “0” significa que es modificable en cualquier momento.
- Columna 5: Número de días que faltan para que tengamos que modificar la contraseña. Si no hay valor, significa que no tenemos este contador activo.
- Columna 6: Número de días que faltan para que la contraseña expire. Si tenemos el valor “99999” significa que la contraseña nunca caduca.
- Columna 7: días que falta para que la contraseña sea inhabilitada, tras superar el plazo de cambio de contraseña.
- Columna 8: Fecha de caducidad de la cuenta de usuario. Si no hay nada, significa que nunca caduca.
Finalmente vamos a ver cómo están reflejados los permisos de usuario par estos dos ficheros:
# ls -l /etc/passwd /etc/shadow -rw-r--r-- 1 root root 2611 nov 26 15:00 /etc/passwd -rw-r----- 1 root shadow 1367 nov 26 15:00 /etc/shadow
Vemos que solamente root puede editar passwd, pero todos los usuarios pueden leerlo, en cambio shadow solamente puede ser leído por root y editado por nadie.
Sabiendo esto, ya sí que estamos en disposición de gestionar usuario de Linux debidamente.
Crear usuarios con useradd en Linux
Para la creación de usuarios en el sistema utilizaremos el comando “useradd”, que nos permitirá crear y añadir toda la información que hemos visto contenido en cada línea de /etc/passwd. Para poder ver todas las opciones de las que dispone este comando y su sintaxis escribimos:
useradd --help
Crear un usuario con una configuración predeterminada
Se puede agregar un usuario ejecutando el comando useradd en la terminal del sistema. Después de crear el usuario, configuramos una contraseña usando la utilidad passwd , de la siguiente manera:
[code] useradd yerita [/code] [code] passwd yeritaChanging password for user yerita.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[/code]
El sistema asigna automáticamente un UID al ejecutar useradd, crea el directorio de inicio ( /home /<username> ) y establece el shell predeterminado en /bin /bash . El comando también crea un grupo privado de usuario cada vez que se agrega un nuevo usuario al sistema y nombra el grupo después del usuario.
Especificación del nombre completo de un usuario al crear un usuario
Como administrador de sistemas podemos usar la opción -c con useradd para especificar el nombre completo del usuario, como se muestra a continuación:
[code] useradd -c "Yeraldine Martinez" yerita [/code]Creación de un usuario con el UID
También podemos crear un usuario con un UID personalizado con la opción -u, de la siguiente manera:
[code] useradd -u 1036 yerita [/code]Crear un usuario con directorio de inicio no predeterminado
Se puede establecer un directorio de inicio no predeterminado si ejecutamos el siguiente comando:
[code] useradd –d /home/test yerita [/code]Agregar un usuario a un grupo primario y un grupo suplementario
Un administrador de sistemas puede especificar un grupo primario y uno suplementario especificando la opción -g y -G , respectivamente.
[code] useradd -g “programadores” -G “frontend” yerita [/code]Donde, “programadores” es el grupo primario y “frontend” un grupo suplementario, ya ustedes adaptaran el comando según sus necesidades.
Bloquear y desbloquear un usuario
Otra tarea que se puede realizar al gestionar usuarios en Linux es bloquear y desbloquear una cuenta de usuario. Para bloquear una cuenta, necesitamos invocar passwd con la opción -l.
[code] passwd -l yeritaLocking password for user yerita.
passwd: Success
[/code]
La opción -u con passwd desbloquea una cuenta, como vemos a continuación:
[code] passwd -u yeritaUnlocking password for user yerita.
passwd: Success
[/code]
Modificar parámetros de usuarios con usermod
Para poder modificar un usuario que hayamos creado anteriormente utilizaremos el comando “usermod” el cual nos permitirá modificar todos los parámetros acerca del usuario en cuestión, por lo que es un complemento, por así decirlo de “useradd”. Como siempre, convienen mirar antes todas sus opciones para utilizarlo correctamente.
usermod --help
Cambiar un nombre de usuario
la opción -l con el comando usermod cambia el nombre de inicio de sesión (usuario), como se muestra a continuación:
[code]usermod -l “yerita_02” yerita [/code]Donde el argumento «yerita_02» es el nuevo nombre de usuario.
Cambiar clave de usuario
Para cambiar la clave de una cuenta de usuario, necesitaremos utilizar un comando específico llamado “passwd”. Si queremos modificar la contraseña de nuestro usuario, tendremos que escribir:
# passwd jose Introduzca la nueva contraseña de UNIX: Vuelva a escribir la nueva contraseña de UNIX: passwd: contraseña actualizada correctamente
También podremos hacerlo con el propio usuario colocando simplemente:
$ passwd Cambiando la contraseña de jose. (actual) contraseña de UNIX: Introduzca la nueva contraseña de UNIX: Vuelva a escribir la nueva contraseña de UNIX: Debe elegir una contraseña más larga Introduzca la nueva contraseña de UNIX:
Además, nos pedirá que coloquemos una contraseña de determinadas características, algo que no fue necesario si lo hicimos como root.
Eliminar un usuario
Podemos eliminar un usuario combinando userdel con la opción -r, como se muestra a continuación:
[code] userdel -r yerita [/code]Comandos pwunconv y pwconv
Ya hemos visto que por defecto las contraseñas de los usuarios se almacenan en un fichero distinto a /etc/passwd. Esto principalmente se debe a que cualquier usuario puede acceder al contenido de passwd y ver, aunque sea encriptada la contraseña. Como podríamos suponer, existen programas que serán capaces de desencriptar esta información invirtiendo una determinada cantidad de tiempo. Por supuesto esto no ocurrirá si colocamos las contraseñas en un fichero aparte en donde solamente puede tener acceso el root.
Pero si no queremos tener ambos campos separados, y queremos introducir información de la contraseña en el passwd con la consiguiente eliminación del fichero /etc/shadow, también podremos hacerlo, y para esto sirven los comandos pwunconv y pwconv. Por supuesto habrá que utilizarlos con permisos de root. Si colocamos:
pwunconv
Estaremos pasando las claves de shadow a passwd y así lo demuestra la información:
# pwunconv # grep "jose" /etc/passwd jose:$6$RvpMGxqq$4BUdrCOypct6jMmyNCjtaPvnwPNwrpB0zc986GIgbJpbtvkiH/51.lpj7Q.9rFJ.lsMzOb2noY7ZMe2n9XO6q0:1000:1000:jose,,,:/home/jose:/bin/bash # grep "jose" /etc/shadow grep: /etc/shadow: No existe el archivo o el directorio
Para dejarlo todo como estaba colocamos:
# pwconv # grep "jose" /etc/passwd jose:x:1000:1000:jose,,,:/home/jose:/bin/bash # grep "jose" /etc/shadow jose:$6$RvpMGxqq$4BUdrCOypct6jMmyNCjtaPvnwPNwrpB0zc986GIgbJpbtvkiH/51.lpj7Q.9rFJ.lsMzOb2noY7ZMe2n9XO6q0:17892:0:99999:7:::
De esta forma podremos tener uno o dos archivos distintos para la gestión y seguridad de los usuarios.
Gestionar Grupos de usuarios en Linux
Ya sabemos como administrar usuarios, pero es necesario que sepan también un poco sobre la administración o gestión de grupos de usuario en Linux. Los grupos son un mecanismo que nos provee Linux para organizar una colección de usuarios. Al igual que el ID de usuario, cada grupo también está asociado con un ID único llamado GID (ID de grupo).
Hay dos tipos de grupos:
- Grupo primario
- Grupo suplementario
Cada usuario es miembro de un grupo primario y puede no tener grupos suplementarios o tener más de uno. La información del grupo se almacena en /etc /group y las contraseñas respectivas se almacenan en el archivo /etc /gshadow.
/etc/group y /etc/gshadow
En este fichero tendremos todo lo referente a la configuración de grupos.
grep “root” /etc/group root:x:0:
- Columna 1: Nombre de usuario.
- Columan 2: contraseña del grupo. Si hay una “x” significará que esta se encuentra en el fichero /etc/gshadow.
- Columna 3: identificador GID del grupo.
- Columna 4: lista de grupos a los que pertenece el usuario en cuestión.
Por su parte la estrucutra de /etc/gshadow es similar al fichero de contraseñas de usuario, aunque bastante más simple:
grep “jose” /etc/gshadow jose:!::
- Columna 1: nombre de usuario.
- Columna 2: contraseña encriptada. Si vemos una “x” significa que el usuario es nologin, si vemos un “!” significa que el grupo no tienen contraseña configurada.
- Columna 4: grupo al que pertenecen los usuarios.
Veamos algunas de las operaciones, como crear, eliminar y modificar un grupo:
Crear un grupo con la configuración predeterminada
Para agregar un nuevo grupo con la configuración predeterminada, ejecutamos el comando groupadd como usuario root, como se muestra a continuación:
[code] groupadd empleados [/code]Si deseas agregar una contraseña, escribes gpasswd con el nombre del grupo, de la siguiente manera:
[code] gpasswd empleados&nbsp;Changing the password for group empleados&nbsp;
New Password:
Re-enter new password:
[/code]
Te solicitara ingresar la contraseña dos veces.
Crear un grupo con un GID especificado
Para especificar explícitamente el GID de un grupo, ejecutas el comando groupadd con la opción -g, de la siguiente manera:
[code] groupadd -g 1200 "gerentes" [/code]Eliminar contraseña de grupo
Para eliminar una contraseña de grupo, ejecute gpasswd -r con el nombre del grupo en cuestión, de la siguiente manera:
[code]gpasswd -r empleados [/code]Cambiar el nombre del grupo
Para cambiar el nombre del grupo, ejecutamos el comando groupmod con la opción -n como superusuario, como se muestra a continuación:
[code] groupmod -n nuevos_empleados empleados [/code]Donde los argumentos son el nuevo nombre y el grupo al que se va afectar, respectivamente.
Cambiar el GID del grupo
Para cambiar el GID de un grupo, ejecute el comando groupmod con -g, de la siguiente manera:
[code] groupmod -g 1050 gerentes [/code]Eliminar un grupo
Antes de eliminar un grupo primario, debes eliminar los usuarios de ese grupo. Posteriormente, para eliminar el grupo, ejecutamos el comando groupdel con el nombre del grupo, como se muestra a continuación:
[code] groupdel empleados [/code]Si desea saber mucho más sobre cómo gestionar usuarios y grupos en Linux, puedes consultar la documentación oficial de la distribución que estés usando.
Pero como has visto en nuestra guía, el proceso no es tan complejo.