In UNIX, un account (in italiano conto) rappresenta un’entità (che sia un utente o un servizio) che può accedere al sistema operativo e utilizzarne le sue risorse a seconda dei permessi che gli vengono riservati.
1 - Caratteristiche degli account in UNIX
Ogni account in UNIX è identificato da:
- Username: il nome con cui l’account viene identificato in modo univoco e con il quale è possibile accedere al sistema.
- Password: una stringa segreta utilizzata per autenticare un utente al momento del login o per accedere a risorse protette.
- User ID (abbreviato in UID): un identificatore numerico univoco che rappresenta l’utente all’interno del sistema.
I diversi username eventualmente attribuiti allo stesso UID sono considerati del tutto equivalenti dal sistema (costituiscono dei cosiddetti alias).
2 - Categorie degli account
In UNIX, ogni account rientra sempre in una delle seguenti tre categorie:
- Account utente: account creati per utenti che accedono al sistema per scopi generici, come lavorare su file personali, eseguire programmi o accedere a servizi.
- Account root: account con privilegi illimitati su tutto il sistema, con la possibilità di accedere, modificare e cancellare qualsiasi file e configurazione, oltre ad installare o rimuovere software. Ha solitamente UID
0
. - Account di sistema: account speciali utilizzati dai servizi e dai processi del sistema operativo per svolgere compiti specifici, come eseguire applicazioni, demoni o servizi di rete. Non è destinato all’uso diretto da parte degli utenti umani.
Tipo di Account | Destinazione d’uso | Privilegi | Interazione diretta? |
---|---|---|---|
Account utente | Attività quotidiane | Limitati | Sì |
Account root | Amministrazione di sistema | Illimitati | Sì, ma usato con cautela |
Account di sistema | Servizi e processi di sistema | Limitati a scopo specifico | No |
2.1 - Account utente
Gli account utente sono account creati per utenti che accedono al sistema per scopi generici, come lavorare su file personali, eseguire programmi o accedere a servizi. Sono generalmente il tipo di account utilizzato da un utente generico di un sistema UNIX.
2.1.1 - Caratteristiche principali
- Privilegi limitati: gli account utente hanno permessi ristretti, che impediscono loro di modificare file di sistema, installare software o gestire altri utenti. Possono accedere e modificare solo i file di cui sono proprietari, solitamente situati nella loro home directory.
- Home directory personale: una directory dedicata che funge da spazio privato per i suoi file e impostazioni personali. Il percorso tipico di una home directory:
/home/<username>
(per esempio, un utente chiamatoalice
avrà la sua home directory in/home/alice
). - Shell interattiva: un programma che interpreta i comandi dopo aver effettuato l’accesso al sistema operativo, consentendo di interagire con esso stesso. Shell comuni sono:
/bin/bash
,/bin/zsh
,/bin/sh
. - File di configurazione personalizzati: ogni account utente può avere configurazioni personalizzate, salvate in file nascosti detti dotfile (perché il loro nome comincia con un
.
) nella sua home directory. Esempi di dotfile sono i file.bashrc
o.zshrc
per configurare la shell,.ssh/
per chiavi SSH personali o.profile
per impostazioni di ambiente.
2.1.2 - Scelta dello username
Una buona norma è scegliere uno username per l’account utente con massimo otto caratteri.
Nonostante non sia più obbligatorio nei sistemi UNIX, è comunque consigliato rispettare questa convenzione per assicurare l’interoperabilità con altri sistemi e servizi UNIX.
2.2 - Account root
L’account root (noto anche come superutente, in inglese superuser) è l’account amministrativo del sistema, dotato di privilegi illimitati su tutto il sistema che gli forniscono l’accesso completo e il controllo su tutte le risorse e operazioni del sistema.
Avendo il controllo completo sul sistema, è in grado di eseguire comandi che possano anche distruggere il sistema stesso, senza alcun tipo di restrizioni. La filosofia di UNIX presume che gli utenti che utilizzino gli account root sanno ciò che fanno, quindi se eseguono un comando che possa rendere il sistema inutilizzabile, UNIX glielo permette. Proprio per questo principio, generalmente si usa l’account root unicamente per i compiti più importanti e solamente per il tempo necessario.
2.2.1 - Caratteristiche principali
- Privilegi completi: l’account root può accedere, modificare e eliminare qualsiasi file, incluse le risorse di sistema protette, bypassando tutte le restrizioni di sicurezza imposte agli account normali.
- Identificazione univoca e fissa: l’account root ha come username predefinito
root
e ha sempre l’UID0
che lo identifica a livello di sistema. - Shell interattiva: come l’account utente, anche l’account root ha una shell assegnata che consente di interagire con il sistema attraverso comandi che, però, non saranno limitati da eventuali permessi negati.
- Accesso indiretto tramite
sudo
: per motivi di sicurezza, l’uso diretto dell’account root è scoraggiato e gli utenti autorizzati possono temporaneamente eseguire comandi con privilegi root utilizzandosudo
(superuser do), senza accedere direttamente all’account.
2.3 - Account di sistema
Gli account di sistema sono account speciali utilizzati dai servizi e dai processi del sistema operativo per svolgere compiti specifici, come eseguire applicazioni, demoni o servizi di rete. Non è destinato all’uso diretto da parte degli utenti umani.
2.3.1 - Caratteristiche principali
- Privilegi limitati al contesto: ogni account di sistema ha permessi specifici per evitare che un servizio interferisca con un altro o con il sistema stesso.
- UID riservato: hanno UID compresi in un intervallo riservato, solitamente inferiore a 1000 (o 500 in alcuni sistemi più vecchi). In particolare, gli account di sistema con UID compreso tra 1 e 99 riguardano servizi critici, mentre quelli compresi tra 100 e 999 riguardano altri servizi.
- Limitazioni di accesso: spesso non hanno una shell interattiva, per impedire l’accesso diretto (es.
/bin/false
o/sbin/nologin
come shell predefinita), e non hanno una home directory utilizzabile (o, se esiste, è limitata).
3 - Gruppi di account
In UNIX, i gruppi di account sono un meccanismo per gestire e organizzare gli account utenti, assegnando permessi e privilegi condivisi a un insieme di utenti. Ogni gruppo rappresenta una collezione logica di utenti e può essere utilizzato per semplificare la gestione delle autorizzazioni per file, directory o risorse del sistema.
Ogni gruppo è identificato da un nome descrittivo (es. users
, developers
, www-data
) e da un Group ID (abbreviato in GID), cioè un numero univoco che identifica il gruppo a livello di sistema.
Ogni utente è associato automaticamente a un gruppo al momento della creazione, detto gruppo primario. In seguito, oltre a quello primario, si può aggiungere l’utente a uno o più gruppi secondari, per condividere permessi con altri gruppi.
Esempio
Un’azienda con circa 100 dipendenti utilizza un server centrale UNIX. Tre di questi dipendenti fanno parte dello staff delle risorse umane (HR) dell’azienda: si occupano spesso di informazioni sensibili, come stipendi, aumenti di salario e provvedimenti disciplinari. Il personale HR deve memorizzare le proprie informazioni sullo stesso server utilizzato da tutti, ma la loro directory,
human_resources
, deve essere protetta in modo che gli altri dipendenti non-HR non possano visualizzarne il contenuto. Per consentire al personale HR di impostare permessi specifici sui propri file, in modo che solo loro possano accedervi, i tre membri vengono inseriti in un gruppo chiamatohr
. I permessi sulla directoryhuman_resources
possono quindi essere configurati per consentire solamente a quei membri di visualizzare e modificare i file, escludendo tutti gli altri dipendenti dell’azienda.
Fonti
- 🏫 Lezioni e slide del Prof. Schifanella Claudio del corso di Laboratorio di Sistemi Operativi (canale B, turno T4), Corso di Laurea in Informatica presso l’Università di Torino, A.A. 2024-25: