Contenido del artículo
La administración de usuarios en Linux es una tarea de mucha relevancia. La existencia de un sistema Linux mal administrador a este nivel, puede suponer un agujero importante de seguridad.
Por esta razón es importante, tener una visión clara al respecto de la administración de usuarios el linux.
Nociones básicas de Grupos y Usuarios
En Linux, existen usuarios y grupos de usuarios. Los usuarios y grupos se identifican a través de un número identificador único.
IDENTIFICADOR | FUNCIÓN |
---|---|
UID o User ID | Número exclusivo de identificación del usuario |
GID o Group ID | Número exclusivo de identificación del grupo de usuarios |
Un usuario debe de pertenecer siempre a un grupo principal a parte de a otros grupos secundarios. Por ello, como ya veremos más adelante, Linux puede crear un grupo de usuarios solo para ese usuario en el momento de la creación del mismo.
Tipos de usuarios en Linux
Podemos categorizar, sin crear doctrina de ello, los usuarios por tres tipos diferentes en función de su finalidad:
- Usuario Root
- Usuarios de sistema
- Usuarios normales
El usuario root
Es el usuario que se establece nada más instalar el sistema y el que queda definido como administrador del mismo. Es el Gran Señor Feudal del Castillo. Puedes verlo mencionado en diferentes tutoriales o artículos como superuser, root user, adminuser o administrador.
Sus principales características son:
- Su UID es 0.
- Tiene acceso total a todos los archivos y directorios del sistema por independientemente de la definición de permisos que tengan definidos.
- Controla todo el sistema. Puede controlar a los demás usuarios, parar y arrancar servicios, instalar, eliminar o actualizar aplicaciones del sistema o inclusive actualizar el propio kernel del sistema.
Usuarios de sistema
Son usuarios cuya función ejecutar diferentes aspectos del sistema y se crean en el momentos de la instalación del SO o del servicio correspondiente.
- Su UID suele estar comprendido entre 1 y 999.
- No tienen privilegios de root. Solo tienen los permisos necesarios para atender a las tareas que tienen asignadas.
- No pueden iniciar sesión en el sistema como un usuario normal.
- No tienen contraseña definida.
Usuarios linux convencionales
Son los usuarios que hacen uso del sistema y sus funcionalidades y cuando estos son creados, se les inicializa con una serie de características:
- Disponen de un área personal dentro del sistema que se localiza normalmente en /home
- El área personal es personalizable por el usuario.
- En la actualidad, en versiones como Debian 9 se les asigna un UID a partir de 1000.
Asignación de UID y GID para usuarios linux
La definición de los UID y GID del sistema, se pueden controlar desde el archivo login.defs
.
root@monitor > /# cat /etc/login.defs # # Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts #SYS_UID_MIN 100 #SYS_UID_MAX 999 # # Min/max values for automatic gid selection in groupadd # GID_MIN 1000 GID_MAX 60000 # System accounts #SYS_GID_MIN 100 #SYS_GID_MAX 999
Ficheros de gestión de usuarios linux
La gestión de usuarios en linux se centraliza en fundamentalmente en tres ficheros distintos:
- /etc/passwd – Definición de usuarios
- /etc/shadow – Protección de contraseñas y propiedades de login
- /etc/group – Definición de grupos secundarios de los usuarios
Fichero /etc/passwd
El fichero passwd, es el fichero de sistema ubicado en /etc/passwd y contiene toda la información de la definición del usuario dentro del sistema, excepto su contraseña.
El fichero /etc/passwd puede ser leído por todo el mundo y solo escrito por root. De esta forma se protegen las contraseñas del usuario. Es posible desactivar la protección de contraseñas mediante este fichero, y que se almacenen cifradas en el archivo /etc/passwd pero no responde a ninguna lógica de seguridad.
Si realizamos un cat
de este fichero, veremos algo parecido a lo siguiente:
root@monitor > /# cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin proxy:x:13:13:proxy:/bin:/usr/sbin/nologin www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin backup:x:34:34:backup:/var/backups:/usr/sbin/nologin list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin irc:x:39:39:ircd:/var/run/ircd:/usr/sbin/nologin gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin systemd-timesync:x:100:102:systemd Time Synchronization,,,:/run/systemd:/bin/false systemd-network:x:101:103:systemd Network Management,,,:/run/systemd/netif:/bin/false systemd-resolve:x:102:104:systemd Resolver,,,:/run/systemd/resolve:/bin/false systemd-bus-proxy:x:103:105:systemd Bus Proxy,,,:/run/systemd:/bin/false _apt:x:104:65534::/nonexistent:/bin/false messagebus:x:105:109::/var/run/dbus:/bin/false sshd:x:106:65534::/run/sshd:/usr/sbin/nologin usuario:x:1000:1000:Usuario,,,:/home/usuario:/bin/bash
Lo primero que podemos observar, es que el fichero es de texto plano y dentro de cada linea se almacenan campos separados por «:».
Campo | Función |
---|---|
1 | Definición del nombre del usuario |
2 | Contraseña del usuario. En caso de contener solo una «x» es que la contraseña se gestiona encriptada desde el fichero /etc/shadow. Es una forma de protección ya que este fichero puede ser leído por los demás usuarios |
3 | User ID |
4 | Group ID |
5 | Nombre completo del usuario y otros datos generales |
6 | Directorio personal de trabajo |
7 | Shell de sistema asignada al usuario. Más adelante puedes ver los tipos de shell linux |
Fichero /etc/shadow
Este fichero es similar a /etc/passwd. Entre sus principales características, está que solo puede ser leído por root, tal y como se ve en la definición de permisos.
root@monitor > etc# ls -lh | grep shadow -rw-r----- 1 root shadow 934 mar 11 17:00 shadow
En su interior encontraremos un formato similar a esto:
root@monitor > etc# cat shadow root:$6$gSjIrkzP$h0.xMJJF6rRn4.n4RTA/Yx9.VsfubvBx.iWjMcHlzDtf1.UnthwMxQ3m3/4HS6x.DLk1:17966:0:99999:7::: daemon:*:17966:0:99999:7::: bin:*:17966:0:99999:7::: sys:*:17966:0:99999:7::: sync:*:17966:0:99999:7::: games:*:17966:0:99999:7::: man:*:17966:0:99999:7::: lp:*:17966:0:99999:7::: mail:*:17966:0:99999:7::: news:*:17966:0:99999:7::: uucp:*:17966:0:99999:7::: proxy:*:17966:0:99999:7::: www-data:*:17966:0:99999:7::: backup:*:17966:0:99999:7::: list:*:17966:0:99999:7::: irc:*:17966:0:99999:7::: gnats:*:17966:0:99999:7::: nobody:*:17966:0:99999:7::: systemd-timesync:*:17966:0:99999:7::: systemd-network:*:17966:0:99999:7::: systemd-resolve:*:17966:0:99999:7::: systemd-bus-proxy:*:17966:0:99999:7::: _apt:*:17966:0:99999:7::: messagebus:*:17966:0:99999:7::: sshd:*:17966:0:99999:7::: usuario:$6$wLnlN4vm$ukxh3Y9SCLh8YV05aVrkmP.gQtfSM3hyZdvjz3Dox2IvTkWMwV/5zJ.FMMQrPJ833j5O4Nni/:17966:0:99999:7:::
Los campos que aparecen en este fichero también están en texto plano y separados por «:».
Campo | Función |
---|---|
1 | Nombre del usuario |
2 | Contraseña cifrada del usuario. |
3 | Días desde el último cambio de contraseña |
4 | Número de días que deben de transcurrir sin poder cambiar la contraseña |
5 | Número de días para forzar el cambio de contraseña |
6 | Plazo de días de notificación de cambio forzado de contraseña al usuario |
7 | Plazo de gracia de validez de la contraseña en caso de no ser cambiada |
8 | Fecha de caducidad de la cuenta |
9 | – |
Fichero /etc/group
Este fichero tiene el mismo formato que los anteriores y contiene los grupos a los que pertenece un usuario.
Campo | Función |
---|---|
1 | Nombre del usuario |
2 | Contraseña cifrada del grupo en caso de estar definida |
3 | Group ID |
4 | Grupos adicionales a los que pertenece el usuario |
root@monitor > etc# cat group usuario:x:1000:contabilidad,formacion
Desactivar la protección extendida de contraseñas en Linux
Si consideras necesario desactivar la protección de shadow sobre el sistema y almacenar las contraseñas cifradas en passwd, solo tienes que utilizar los siguientes comandos:
COMANDO | FUNCIÓN |
---|---|
pwconv | Desactiva la protección de shadow y elimina el fichero. Las contraseñas pasan a /etc/passwd |
pwunconv | Habilita la protección de shadow y vuelve a crear el fichero /etc/shadow |
Tipos de shell en Linux
La Shell del sistema, es el interfaz del usuario con el sistema operativo mediante el cual, el usuario puede acceder a los servicios del mismo y relacionarse con ellos a través de los comandos del sistema.
Como hemos observado en la sección que describe el formato del fichero /etc/passwd, el contenido del último campo, contiene la shell o interprete de comandos de la que puede hacer uso cada usuario por defecto.
En el fichero podemos ver tres tipos de shell aunque hay muchas más:
- /bin/sh
- /usr/sbin/nologin
- /bin/false
- /bin/bash
Estos interpretes de comandos se pueden encontrar en las rutas que se especifican y aportan diferentes funcionalidades al usuario.
root@monitor > bin# ls -lh | grep sh -rwxr-xr-x 1 root root 1,1M may 15 2017 bash -rwxr-xr-x 1 root root 115K ene 24 2017 dash lrwxrwxrwx 1 root root 4 may 15 2017 rbash -> bash lrwxrwxrwx 1 root root 4 ene 24 2017 sh -> dash lrwxrwxrwx 1 root root 4 mar 11 16:54 sh.distrib -> dash root@monitor > bin# root@monitor > bin# ls -lh | grep false -rwxr-xr-x 1 root root 31K feb 22 2017 false root@monitor > bin# root@monitor > bin# cd /usr/sbin root@monitor > sbin# ls -lh | grep login -rwxr-xr-x 1 root root 6,0K may 17 2017 nologin
Las diferentes funcionalidades de cada shell son complejas por lo que en esta entrada no vamos a entrar a fondo en este tema.
Cambiar de shell en linux
Es posible que un usuario quiera cambiar de shell durante la sesión establecida con el sistema tras haber completado el proceso de login. No obstante es necesario saber cuales son las shell válidas dentro del sistema para realizar este cambio.
Fichero /etc/shells
La información sobre las shells válidas dentro del sistema para poder cambiar por el usuario están en el fichero /etc/shells que tendrá un contenido similar a este:
root@monitor > sbin# cat /etc/shells # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash
Comandos para cambiar de shell
Para cambiar la shell usaremos el comando chsh
Teniendo en cuenta también los comandos y configuraciones:
chshq
Cambia el shell del login de usuariochfn
Cambia el nombre de usuario y su informaciónpasswd
Cambia la contraseña del usuariologin.defs
Configuración shadow sw usuarios