Skip to main content
  1. Concetti/

Linux Groups

·3 mins
Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cos'è
#

I gruppi sono entità logiche che raggruppano più utenti per facilitare la gestione granulare dei permessi su file, directory e risorse hardware.

Come funziona
#

In Linux, ogni utente deve appartenere ad almeno un gruppo. Il sistema gestisce due tipi di appartenenza:

  1. Primary Group (GID): Creato automaticamente alla creazione dell'utente (solitamente ha lo stesso nome dell'utente). È il gruppo assegnato di default a ogni nuovo file creato dall'utente.
  2. Secondary Groups: Gruppi aggiuntivi a cui l'utente viene aggiunto per ottenere privilegi specifici (es. sudo, docker, wireshark).

Architettura dei Gruppi (Il Database di Sistema)
#

I gruppi non sono "oggetti" astratti, ma righe di testo in file critici:

  • /etc/group: Contiene l'elenco di tutti i gruppi e i loro membri.
  • /etc/gshadow: Contiene le password dei gruppi (raramente usate, ma esistenti per sicurezza).
cat /etc/group
redteam  :  x  : 1001 : hacker_junior,barno
     │        │     │            │
     │        │     │            └─ 4. MEMBRI: Lista utenti (separati da virgola)
     │        │     └────────────── 3. GID: L'ID numerico del gruppo
     │        └──────────────────── 2. PASSWORD: 'x' (protetta in /etc/gshadow)
     └───────────────────────────── 1. NOME GRUPPO
[ UTENTE: BARNO ] ───▶ Esegue il comando 'id'
      ┌───────┴──────────────────────────┐
      │                                  │
 [ UID: 1001 ]                     [ GID: 1001 ]
 (User ID)                         (Group ID Primario)
      │                                  │
      └────────────────┬─────────────────┘
             [ GRUPPI SECONDARI ]
        ┌──────────────┼──────────────┐
  [ sudo (27) ]  [ docker (999) ] [ devs (1005) ]
        │              │              │
    Permette       Permette di    Permette di
    comandi root   gestire i      leggere /code
                   containers     (progetto X)

Comandi di Gestione Avanzata
#

ComandoLivelloDescrizione
id [utente]InfoMostra UID, GID e tutti i gruppi dell'utente.
getent group [nome]InfoEstrae le info del gruppo direttamente dal database di sistema.
sudo groupadd [nome]AdminCrea un nuovo gruppo nel sistema.
sudo usermod -aG [G] [U]AdminCruciale: -a (append) aggiunge il gruppo senza rimuovere i precedenti.
newgrp [nome]UserCambia il gruppo primario per la sessione corrente (utile per i nuovi file).

Perché è importante per la Cybersecurity
#

I gruppi sono il bersaglio principale per la Privilege Escalation:

  1. Misconfiguration: Se un utente normale viene aggiunto al gruppo disk, può leggere direttamente i dati grezzi dal disco rigido, scavalcando tutti i permessi del filesystem.
  2. Docker Group: Essere nel gruppo docker equivale quasi sempre ad avere permessi di root, poiché permette di montare la root del sistema ospite dentro un container con privilegi elevati.
  3. Shadow Group: L'accesso al gruppo shadow permette di leggere /etc/shadow e tentare il cracking delle password offline.

Scenario Reale: Collaborazione tra Sviluppatori
#

Sul server aziendale, crei una directory /opt/project_alpha.

  1. sudo groupadd alpha_team
  2. sudo chgrp alpha_team /opt/project_alpha
  3. sudo chmod 2770 /opt/project_alpha (Il "2" iniziale è il SGID bit: ogni nuovo file creato qui erediterà automaticamente il gruppo alpha_team, garantendo che Barno e Anna possano sempre leggere i file l'uno dell'altra).

Collegato a
#

  • system — categoria
  • permissions — per l'applicazione dei permessi rwx al gruppo
  • chmod — per modificare i permessi di gruppo
  • chown — per cambiare il gruppo proprietario di un file
  • uid-gid-identifiers – Userid e Groupid
  • user-group-management

Related