Capítulo 11. LINUX AVANZADO

Tabla de contenidos

Usuarios, grupos y contraseñas
Fichero /etc/passwd
Fichero /etc/group
Fichero /etc/shadow
Fichero /etc/gshadow
Comandos para gestionar usuarios, grupos y contraseñas

Usuarios, grupos y contraseñas

Puesto que Linux es un sistema multiusuario, permite que varios usuarios usen el sistema simultáneamente. Se hace necesario que cada usuario no pueda acceder a los documentos de los demás, además no todos los usuarios deberían poder instalar programas, modificar ficheros importantes del sistema u otras cosas importantes.

Por ello Linux establece login y password (nombre y contraseña) para cada usuario. Además existe el administrador del sistema o superusuario, cuyo login es root, que tiene acceso a todo y permisos para todo.

Las contraseñas son almacenadas de forma cifrada, por lo que es imposible acceder a ellas (si las guardara simplemente en un fichero de texto, sería muy fácil acceder y romper el sistema de seguridad).

Importante

Seguridad: debemos usar contraseñas que no sean cortas y compuestas de letras mayúsculas y minúsculas, dígitos e incluso signos. Si usamos una palabra del diccionario, los crackers pueden fácilmente averiguar nuestra contraseña, pues existen programas que van probando con cada una de las palabras del diccionario.

Un grupo es un conjunto de usuarios que comparten las mismas características. La idea de grupo permite al administrador del sistema dar ciertos permisos (por ejemplo: autorización para usar la grabadora) al grupo, evitando tener que dárselos a cada usuario individualmente.

Todo usuario debe pertenecer al menos a un grupo. Además existen otros usuarios, aparte de los reales, que los usa el sistema para determinadas operaciones. Estos usuarios del sistema (no reales) no se pueden "logear", es decir no se puede entrar al sistema tecleando un login de estos.

El usuario root o superusuario no debe entrar al sistema con el login de root, sino que debe tener además un login y password para entrar al sistema. Sólo cuando necesite realizar acciones especiales, el sistema le pedirá la contraseña de root y podrá acceder. Aunque es posible acceder como root a un sistema Linux, no es recomendable.

Toda la información sobre usuarios, grupos y contraseñas se guarda en los archivos:

  • /etc/passwd (información sobre usuarios)

  • /etc/group (información sobre grupos)

  • /etc/shadow (contraseñas cifradas)

  • /etc/gshadow (contraseñas cifradas de los grupos) [normalmente no se usa este fichero]

En estos archivos de texto, se almacena la información línea a línea (cada una es un usuario o un grupo).

Dentro de cada línea hay varios campos separados por “:”

Fichero /etc/passwd

Cada una de las líneas representa un usuario y responde al esquema:

usuario : x : UID : GID : comentarios : directorio_home : shell
  • usuario: es el login o nombre de usuario (nombre único para cada usuario)

  • x: contraseña: aparece una x; la contraseña se encuentra cifrada en /etc/shadow

  • UID: User IDentifier (nº de Identidad de Usuario). Es único. Debe ser un entero≥0 (el cero se reserva para root y del 1 al 99 se reservan para tareas del sistema). Usar de 100 en adelante.

  • GID: nº de Identidad de Grupo (el cero se reserva para el grupo root)

  • comentarios: nombre real u otros comentarios sobre el usuario (puede contener espacios)

  • directorio_home: directorio de inicio del usuario

  • shell: intérprete de comandos (normalmente bash). Si ponemos /bin/false el usuario no podrá ejecutar ningún comando del sistema

Ejemplo:

dani@guadalinex:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
  ...
identd:x:100:65534::/var/run/identd:/bin/false
sshd:x:101:65534::/var/run/sshd:/bin/false
gdm:x:102:103:Gnome Display Manager:/var/lib/gdm:/bin/false
dani:x:1000:100::/home/dani:/bin/bash
yaiza:x:1001:1001:,,,:/home/yaiza:/bin/bash

Tecleando en un terminal cat /etc/passwd nos muestra el contenido del fichero /etc/passwd

Observe como el primer usuario que aparece (primera línea) es root

A continuación una serie de usuarios (no reales) del sistema

Por último (dos últimas líneas) los usuarios "dani" y "yaiza"

Podemos comprobar como en esta distribución de Linux ( GuadaLinex 2004) los números de usuarios empiezan desde 1000 en adelante (en otras distribuciones lo hacen desde 100 o desde 500)

Fichero /etc/group

Cada una de las líneas representa un grupo y responde al esquema:

grupo : x : GID : lista_usuarios
  • grupo: es el nombre del grupo

  • x: contraseña: aparece una x; la contraseña se encuentra cifrada en /etc/shadow. Si este campo aparece vacío, significa que el grupo no necesita contraseña.

  • GID: nº de Identidad de Grupo (el cero se reserva para el grupo root)

  • lista_usuarios: lista de usuarios que pertenecen al grupo separados por comas. También se pueden añadir usuarios de otros grupos, con lo que tendrían todos los privilegios de este grupo

Nota

Para añadir un nuevo usuario a un grupo, basta con agregarlo en la lista de usuarios (sin olvidar poner la coma de separación entres usuarios)

Fichero /etc/shadow

Cada una de las líneas representa un usuario y responde al esquema:

usuario : contraseña_cifrada : d1 : d2 : d3 : d4 : d5 : d6 : reservado
  • usuario: es el login o nombre de usuario (el mismo que en /etc/passwd)

  • x: contraseña: aparece una x; la contraseña se encuentra cifrada en /etc/shadow.

  • 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.

  • reservado: campo reservado

Fichero /etc/gshadow

Al igual que el fichero /etc/shadow de las contraseñas encriptadas para usuarios, también se puede usar un fichero /etc/gshadow de contraseñas encriptadas para grupos.

Se suele usar para permitir el acceso al grupo, a un usuario que no es miembro del grupo. Ese usuario tendría entonces los mismos privilegios que los miembros de su nuevo grupo.

Comandos para gestionar usuarios, grupos y contraseñas

useradd [opciones] user       Añade un usuario al sitema
userlogin o nombre de usuario
[opciones]Si se deja en blanco toma las opciones por defecto
-c comentarioIncluir comentario (normalmente nombre completo del usuario)
-d directorio_homePermite especificar su directorio de inicio
-m Crea directorio de inicio /home/usuario y le pone todos los subdirectorios y ficheros que haya en /etc/skel

El nuevo usuario creado no tiene contraseña. Para asignarle una contraseña, tecleamos desde terminal (siendo root): passwd usuario contraseña.

Cualquier usuario puede cambiar su contraseña tecleando passwd.

usermod [opciones] user       Modifica las opciones de un usuario
userlogin o nombre de usuario
[opciones]Si se deja en blanco toma las opciones por defecto
-L Look. Bloquea la contraseña (deshabilita la cuenta)
-U directorio_homeUnlook. Desbloquea la contraseña.
userdel [-r] user       Borra la cuenta de un usuario
userlogin o nombre de usuario
[opciones]Tan solo dispone de la opción -r
-r Borra también su directorio home

Si usamos la opción -r borrará el directorio home del usuario, pero no borra el resto de ficheros que tenga en otras carpetas. Estos ficheros tienen como dueño un usuario inexistente, por lo que podría crear conflictos en el sistema. Por ello resulta aconsejable deshabilitar una cuenta en lugar de eliminarla. Otra opción es usar el comando deluser (que permite incluso hacer copia de seguridad de los ficheros del usuario)

groupadd nombre_grupo       Añade un grupo al sistema
groupmod [-n] grupo       Modifica un grupo
-n nuevo_nombreCambia el nombre del grupo
groupdel nombre_grupo       Borra un grupo del sistema

Si es el grupo primario de algún usuario no se puede borrar.

Otros comandos:  
chage cambia información sobre la caducidad de la contraseña
chfn cambia la información del campo "comentario" de un usuario
chsn cambia la información del campo “shell” de un usuario
whoami nos dice qué usuario somos
groups nos dice en qué grupos estamos
id nos muestra ID y grupos
login nos permite cambiar de usuario
su nos permite cambiar a superusuario (root)
newgrp nos permite cambiar a otro grupo (necesitamos saber la contraseña)
sg nos permite ejecutar comandos de otro grupo
who lista los usuarios que hay en el sistema
w lista los usuarios que hay en el sistema y lo que están haciendo
write escribir mensaje a otro usuarios
wall escribir mensaje a todos los usuarios
mesg [y/n] permitir o no que te escriban mensajes

Por tanto:

Para añadir un usuario al sistema tecleamos:

# useradd -m nuevo_usuario
# passwd nuevo_usuario

teclear contraseña (la pide dos veces)