Logo de fravelz

Notas de Hacking

Fravelz

Grupos y Usuarios


1. Gestión de usuarios {#1-gestión-de-usuarios}

useradd vs adduser {#useradd-vs-adduser}

1. useradd (programa básico del sistema) {#1-useradd-programa-básico-del-sistema}

  • Es el comando original de bajo nivel de Linux para crear usuarios.
  • Pertenece al paquete passwd o shadow (dependiendo de la distro).
  • No crea automáticamente todo lo necesario (por ejemplo, la carpeta personal).
  • Solo ejecuta una instrucción directa al sistema, sin preguntar nada.
  • Se usa mucho en scripts o administración avanzada.

Ejemplo:

sudo useradd francisco

Esto solo crea la entrada en /etc/passwd, pero:

  • No crea /home/francisco
  • No copia archivos de configuración por defecto (.bashrc, etc.)
  • No asigna contraseña

Tendrías que hacer todo manualmente:

sudo mkdir /home/francisco
sudo cp -r /etc/skel/. /home/francisco
sudo chown -R francisco:francisco /home/francisco
sudo passwd francisco

2. adduser (script de alto nivel) {#2-adduser-script-de-alto-nivel}

  • Es un script en Perl que usa internamente useradd, pero con asistentes interactivos.
  • Crea automáticamente:
  • Carpeta personal (/home/usuario)
  • Archivos de configuración inicial
  • Grupo con el mismo nombre
  • Permisos correctos
  • Pide la contraseña y otros datos de forma interactiva
  • Está pensado para uso cotidiano y comodidad del administrador
  • Ejemplo:

    sudo adduser francisco

    Esto:

    • Crea /home/francisco
    • Crea el grupo francisco
    • Copia los archivos de /etc/skel
    • Asigna contraseña (te la pide)
    • Te deja todo listo en un paso

    Comparación directa {#comparación-directa}

    En resumen (gestión de usuarios) {#en-resumen-gestión-de-usuarios}

    • Usa adduser cuando creas usuarios manualmente (más seguro y rápido).
    • Usa useradd en scripts o configuraciones personalizadas, donde controlas cada detalle.

    2. Grupos {#2-grupos}

    Gestión de grupos {#gestión-de-grupos}

    ¿Qué es un grupo en Linux? {#qué-es-un-grupo-en-linux}

    Un grupo es un conjunto de usuarios que comparten ciertos permisos. Sirve para organizar quién puede hacer qué con los archivos, carpetas o procesos del sistema.

    Piensa que un grupo es como un “equipo” dentro del sistema operativo.

    Ejemplo simple {#ejemplo-simple}

    Imagina que tienes tres usuarios:

    juan
    maria
    pedro

    Y quieres que solo juan y maria puedan entrar a una carpeta llamada /proyecto.

    En lugar de dar permisos a cada uno individualmente, puedes crear un grupo:

    sudo groupadd proyecto

    Luego agregas a los usuarios al grupo:

    sudo usermod -aG proyecto juan
    sudo usermod -aG proyecto maria

    Después haces que la carpeta pertenezca a ese grupo:

    sudo chown :proyecto /proyecto

    Y le das permisos solo al grupo:

    sudo chmod 770 /proyecto

    Ahora:

    • Juan ✅ puede entrar.
    • María ✅ puede entrar.
    • Pedro ❌ no puede.

    Cada usuario tiene {#cada-usuario-tiene}

    1. Un grupo principal (primario): Se crea automáticamente con el mismo nombre que el usuario. Ejemplo: el usuario francisco pertenece al grupo francisco.
    2. **Grupos secundarios (suplementarios):** Son grupos extra a los que puede pertenecer. Ejemplo: ```bash sudo usermod -aG sudo,video,audio francisco ```

      Aquí el usuario pertenece a los grupos:

      • sudo → puede usar comandos como administrador
      • video → puede acceder a la cámara o GPU
      • audio → puede usar el micrófono o altavoces
    ### Ver los grupos de un usuario {#ver-los-grupos-de-un-usuario} ```bash groups francisco ```

    Salida posible:

    francisco : francisco sudo video audio

    Archivos donde se guardan los grupos {#archivos-donde-se-guardan-los-grupos}

    • /etc/group → lista todos los grupos del sistema. Ejemplo de líneas: ```bash root:x:0: sudo:x:27:francisco proyecto:x:1002:juan,maria
    
          ### En resumen (gestión de grupos) {#en-resumen-gestión-de-grupos}
    
          
    <!-- Tabla convertida manualmente -->
    
          ---
    
          ## 3. Archivos importantes del sistema {#3-archivos-importantes-del-sistema}
    
          
    <!-- Tabla convertida manualmente -->
    
          ---
    
          ## 4. Ejemplos prácticos comunes {#4-ejemplos-prácticos-comunes}
    
          - **Crear un usuario con carpeta personal y shell bash:** ```bash
    sudo useradd -m -s /bin/bash francisco
    • Cambiar nombre de usuario: ```bash sudo usermod -l nuevo_nombre francisco
    
    - **Bloquear/desbloquear usuario:** ```bash
    sudo usermod -L francisco # Bloquear sudo usermod -U francisco # Desbloquear
    • Ver todos los usuarios del sistema: ```bash cut -d: -f1 /etc/passwd
    
          ---
    
          ## Utilidad de grupos y usuarios {#utilidad-de-grupos-y-usuarios}
    
          ### 1. Cuando hay varios usuarios {#1-cuando-hay-varios-usuarios}
    
          Ahí es donde **más se nota su función**.
    
          Ejemplo: En un servidor o una universidad, hay muchos usuarios distintos:
    
          - Cada uno tiene su cuenta (/home/juan, /home/maria, etc.)
    - Cada uno solo puede entrar a su carpeta
    - Los administradores (grupo sudo) pueden cambiar configuraciones del sistema
    - Otros grupos controlan quién puede acceder a redes, dispositivos USB, cámaras, etc.
    
          Así, Linux mantiene la **seguridad y el orden** entre todos los usuarios.
    
          ---
    
          ### 2. Cuando eres el único usuario {#2-cuando-eres-el-único-usuario}
    
          Incluso así, **sigue siendo muy útil** por estas razones:
    
          ### a) Seguridad interna {#a-seguridad-interna}
    
          - El sistema separa procesos y permisos por usuario.
    - Ejemplo: sí un programa malicioso se ejecuta como “usuario normal”, **no puede dañar el sistema**, porque no tiene permisos de administrador.
    
          Tú usuario normal pertenece a su propio grupo (por ejemplo, francisco:francisco), y no puede tocar archivos del sistema (/etc, /usr, etc.) sin usar sudo.
    
          ---
    
          ### b) Servicios y procesos del sistema {#b-servicios-y-procesos-del-sistema}
    
          Linux trata **cada servicio como sí fuera un usuario separado** para aislarlos.
    
          Por ejemplo:
    ```bash
    root → superusuario
    mysql → usuario del servicio MySQL
    www-data → usuario del servidor web Apache o Nginx
    nobody → usuario “vacío” usado por procesos sin privilegios
      Así, sí un servicio (como un servidor web) es hackeado, el atacante **no puede controlar todo el sistema**, solo ese usuario limitado.
    
      ---
    
      ### c) Control de dispositivos y permisos especiales {#c-control-de-dispositivos-y-permisos-especiales}
    
      Los grupos también controlan **qué puede hacer tú usuario con el hardware**, incluso sí eres el único:
    
      - audio → para reproducir sonido
    • video → para usar la cámara

    • network → para cambiar redes

    • docker, kvm, vboxusers, etc. → para manejar máquinas virtuales, contenedores, etc.

      Sí no estás en esos grupos, el sistema simplemente **no te deja usar esos recursos**.
      
      ---
      
      <h5 id="en-resumen-utilidad-de-grupos-y-usuarios">En resumen (utilidad
      de grupos y usuarios)</h5>
      ---
    
      ### 3. Otros {#3-otros}
    
      ### 1. Cuando creas o manejas máquinas (virtuales o reales) {#1-cuando-creas-o-manejas-máquinas-virtuales-o-reales}
    
      Cada máquina (por ejemplo, una que instalas con VirtualBox, KVM o Docker) tiene su propio **sistema Linux**, y dentro de él **todo funciona con usuarios y grupos**.
    
      Sí no los entiendes:
    
      - No sabrás **por qué un programa no puede acceder a un archivo.**
    • No podrás dar permisos a scripts, servidores o procesos.

    • No entenderás por qué “root” puede hacerlo todo y tú usuario no.

      En máquinas virtuales o servidores, *la seguridad y estabilidad dependen directamente de esos permisos.*
      
      ### 2. En ciberseguridad o administración {#2-en-ciberseguridad-o-administración}
      
      Sí quieres aprender hacking ético, pentesting o proteger sistemas, necesitas dominar esto porque:
      
      - Los atacantes intentan **escapar del usuario limitado** (por ejemplo, www-data) y conseguir permisos de root.
    • Los administradores deben configurar correctamente los grupos y permisos para que eso no sea posible.

      Ejemplo: Sí un servicio web corre como usuario www-data, no debería poder leer /etc/shadow (donde están las contraseñas). Ese aislamiento lo logran los **usuarios y grupos**.
      
      ### 3. En desarrollo o automatización {#3-en-desarrollo-o-automatización}
      
      Cuando haces tus propias máquinas, scripts o aplicaciones:
      
      - Puedes crear **usuarios específicos para cada proceso** (por seguridad).
    • Asignar grupos para definir qué scripts pueden acceder a ciertos archivos.

    • Controlar permisos de ejecución (rwx) para evitar errores o accesos indebidos.

      Ejemplo real:
    sudo useradd -r -s /bin/false servidor_web
      Esto crea un usuario “de sistema” sin acceso a terminal, usado solo para ejecutar un servicio.
    
      ### En resumen (otros) {#en-resumen-otros}
    
      
      En palabras simples:
    
      <blockquote>
      Sí no entiendes cómo Linux maneja usuarios, grupos y permisos, nunca tendrás **control real** de una máquina. Pero cuando lo dominas, puedes **construir, romper y proteger sistemas** a tú gusto.
    
      </blockquote>