Usuarios y permisos en Linux

¿Qué es todo eso de usuarios y contraseñas?

Linux es un verdadero sistema operativo multiusuario, y gestiona usuarios y permisos. Existen tres tipos de usuarios:

  1. el usuario root: es el administrador del sistema y se crea durante la instalación. Al usuario root todo le está permitido, es el que todo lo puede. Su directorio personal es /root.
  2. los usuarios normales: por defecto tienen muy pocos permisos y pueden hacer muy pocas cosas, de manera que no pueden causar grandes daños al sistema. Su directorio personal es /home/<usuario>.
  3. usuarios para ejecutar servidores: su función es únicamente lanzar demonios y ser propietarios de ciertos procesos y directorios, no pueden hacer login.

El sistema de permisos de Linux es muy estricto y eficaz (es un auténtico dictador), y en gran parte a él se debe la seguridad de Linux.

  • Todos y cada uno de los elementos de un sistema Linux (archivos, directorios y procesos) tienen un propietario.
  • El propietario de un elemento (archivo, directorio o proceso) tiene acceso total a él y puede ejecutarlo, ver su contenido o modificarlo, al igual que root. El resto de usuarios tendrán sólo los permisos que se les asignen, que por defecto estarán muy restringidos.
  • El propietario de un proceso es aquel usuario que lo ha lanzado, de manera que el proceso tiene los permisos de su propietario: ese programa no podrá hacer cosas que su propietario no pueda.
  • Los archivos, directorios y procesos del sistema tienen a root como propietario.
  • ¿Qué puede hacer un usuario normal?
    • Es propietario de los archivos y subdirectorios de su directorio personal (/home/<usuario>), por lo que tiene acceso total a ellos.
    • No puede acceder (ni siquiera para ver) a los directorios personales de los demás usuarios ni al directorio personal de root.
    • Tiene acceso de lectura al resto de directorios (siempre que no sean directorios personales), pero no puede escribir en ellos.
    • Puede ejecutar aquellos programas para los que tenga permisos de ejecución, teniendo el proceso los mismos permisos que su propietario, lo que impide que pueda causar daños al sistema.
  • ¿Qué puede hacer root?

    Todo. Al contrario que un usuario normal, root puede acceder, modificar y borrar toda la información del sistema, así como ejecutar cualquier programa, por lo que sí puede causar daños al sistema. Por ello:

    • nunca entraremos como root en el sistema, entraremos siempre como un usuario normal, tanto en el modo texto como en el modo gráfico (de hecho, los entornos gráficos, por defecto, no permiten iniciar sesión como root por seguridad). Para realizar tareas administrativas, una vez iniciada sesión como usuario normal conseguiremos permisos de root con los métodos adecuados.
    • jamás nos conectaremos a Internet como root.
    • protegeremos la cuenta de root con una buena contraseña.

Usuarios en Linux

El sistema identifica a cada usuario mediante nombre y contraseña, y controla sus accesos y qué puede hacer. Hay tres tipos de usuarios:

  1. root: es Dios, él lo puede todo.
  2. usuarios normales: pueden tener más o menos permisos. Pueden hacer login en el sistema y abrir un shell.
  3. usuarios para ejecutar servidores: no pueden hacer login, su función es únicamente lanzar demonios y ser propietarios de algunos procesos y directorios.

La información de cada usuario se guarda en el archivo /etc/passwd y las claves en el archivo /etc/shadow.

Para poder asignar permisos conjuntamente los usuarios se integran en grupos, cuya información está en el archivo /etc/group.

Cuando creamos un nuevo usuario se le asigna /bin/bash como shell, se crea el grupo usuario, se crea su directorio personal /home/<usuario> y se copian en él los archivos de /etc/skel. Si no queremos que un usuario pueda hacer login en el sistema lo que haremos será establecer como intérprete shell para ese usuario /bin/false en vez de /bin/bash. El archivo /bin/false debe existir (y existe). De no ser así, crearemos un /bin/false que contenga lo siguiente:

#!/bin/sh
exit 1

Nota

Muchos servidores gestionan sus propios usuarios, que lo único que pueden hacer es utilizar ese servicio. No pueden abrir un shell en el sistema, ya que no figuran en el archivo /etc/passwd.

Como norma general, no debemos permitir a los usuarios normales acceder a los servicios con su login y password (y por supuesto ¡nunca acceder como root!), es decir, los servicios deben utilizar usuarios expresamente creados para ese servicio. Si algun atacante se hace con alguna cuenta de este tipo no podrá llegar muy lejos, ya que estas cuentas no pueden abrir un shell y tienen muy pocos permisos.

Los usuarios y los grupos se gestionan desde el shell con los comandos:

  • groups: grupos a los que pertenece un usuario.
  • groupadd: añadir grupo.
  • groupdel: borrar grupo.
  • groupmod: modificar grupo.
  • useradd: añadir usuario.
  • userdel: borrar usuario.
  • usermod: modificar los datos del usuario.
  • w: quién está conectado y procesos que está ejecutando.
  • who: quién está conectado y tiempo que lleva.
  • whoami: usuario de la sesión actual.
  • passwd: cambiar la contraseña.

En las X disponemos de varias herramientas para gestionar usuarios:

  • Kuser (paquete kuser): gestión de usuarios (necesita permisos de root).

    Kuser

  • Kdepasswd (paquete kdepasswd): frontal para passwd de KDE, permite cambiar la contraseña.

    Kdepasswd

  • Gchangepass (paquete gchangepass): frontal para passwd de GNOME, para cambiar la contraseña.

    Gchangepass

Crackeador de contraseñas John the Ripper

Por mucha seguridad que instalemos, si usamos passwords del tipo hola o 1234 todo nuestro esfuerzo será en vano. Para comprobar la calidad de las contraseñas de nuestro ordenador disponemos de John the Ripper (openwall.com/john/, paquete john), un crackeador de contraseñas por diccionario muy útil para localizar contraseñas débiles.

Password de root y permisos de root

Nunca necesitaremos el password de root. Durante la instalación le dijimos al instalador que inhabilitara la cuenta de root y creó un usuario normal al que se le dieron permisos para convertirse en root mediante sudo (superuser do). Cuando necesitemos permisos de root, por ejemplo para instalar software o apagar el ordenador, usaremos el comando:

francis@asterix:~$ sudo su
Password:

Nos pide la contraseña del usuario normal. Una vez introducida, a todos los efectos seremos root y el "$" será sustituido por "#", quedando el prompt:

root@asterix:/home/francis#

Artículos en la categoría "Usuarios y permisos en Linux"

  1. Propietarios y permisos en Linux
  2. Ejecutar como… en Linux

2 Comments:

  1. Gracias por hacer una pagina como esta, me gustaria que puesieran como administrar a usuarios por linea de comandos.

  2. en wifislax entras en consola como # y quisiera cambiar $ por ejemplo #useradd tuillax #passwd tuillax

    1234 y reinicio. login tuillax contraseña 1234
    mensaje no directory loggin in with HOME=/
    wifislax $ pongo startx y se cuelga.
    el sistema funcina bien con root y toor
    gracias