# Account

In informatica, un account (lett. "conto") o per esteso user account (in italiano "conto utente") indica quell'insieme di funzionalità, strumenti e contenuti attribuiti ad un nome utente che, in determinati contesti operativi, il sistema mette a disposizione dell'utente: un ambiente con contenuti e funzionalità personalizzabili, oltre ad un conveniente grado di isolamento dalle altre utenze parallele. Il termine deriva dal gergo bancario, ed infatti in molte lingue la stessa parola indica un conto corrente ed un conto in banca, ad esempio in lingua inglese (account, parola presa in prestito in italiano) o polacco (konto), quasi ad evidenziare la possibilità di usufruire di servizi che ha un utente registrato ed identificato presso un sito web (paragonabile ai servizi del cliente che ha mostrato il proprio documento presso la sua banca).
Infatti, il sistema informatico è in grado di riconoscere l'identità del titolare di un account, ne memorizza e conserva un insieme di dati ed informazioni attribuite ad esso, spesso da esso unicamente gestibili ed accessibili per un utilizzo futuro. In questo si differenzia da altre modalità di accesso a sistemi di servizio interattivi che non presuppongono la ripetizione del rapporto con l'utente. L'insieme di dati e informazioni che individuano il titolare dell'account, nonché le preferenze di utilizzo, rappresentano il profilo utente associato all'account.

## Procedura d'accesso o login

L'accesso a un account è un processo chiamato login (o logon) ed associato ad una procedura di riconoscimento, detta autenticazione. L'autenticazione è cosa diversa dall'identificazione che corrisponde unicamente ad accertare l'ID di un host.
Durante l'autenticazione, sono richieste le credenziali d'accesso, cioè il nome utente e la relativa password (parola d'ordine o chiave d'accesso) e/o il PIN nonché, sempre più spesso, anche l'OTP. Tali credenziali possono essere definite manualmente da un amministratore o generate autonomamente dall'utente attraverso un processo di registrazione denominata signup o un'applicazione dedicata che genera l'OTP.
Il nome utente dovrebbe essere tale da consentire un riconoscimento univoco dell'utenza. Non è impossibile, tuttavia, che ad una singola utenza sia associata una pluralità di nomi utenti.
Il nome utente, frequentemente, è conoscibile in forma pubblica, ed è sempre noto all'amministratore del sistema. La password, invece, è un'informazione rigorosamente attribuita al possesso dell'utente, che ne è unico responsabile. Allo scopo, viene conservata dal sistema in forma criptata non reversibile (funzione di hash). Può essere sovrascritta in qualunque momento dall'amministratore con una nuova password, senza che questa azione permetta allo stesso amministratore di risalire alla password originale. Questo ha significato se si pensa che l'utente per ricordare le password a memoria avrà delle preferenze nella scelta delle sue chiavi che per questioni di sicurezza è bene non siano individuate da persone estranee (anche se si tratta di un amministratore).
Nel tempo l'utilizzo della password è diventato un metodo considerato intrinsecamente poco sicuro: l'aggiunta di un PIN o di una passphrase e, soprattutto, il ricorso ad elementi biometrici, sono attualmente considerati metodi maggiormente sicuri. Il ricorso ad una soluzione di autenticazione a due fattori (2FA), talvolta anche denominata autenticazione multi-fattore o MFA, rappresenta invece un metodo considerato realmente sicuro dalla maggior parte degli esperti.
La complessità delle funzionalità richieste al processo di accesso impone di affidarne la gestione a veri programmi autonomi. Quelli con interfaccia grafica sono chiamati desktop manager. A titolo di esempio, tra i principali programmi usati in ambito Unix-like, si possono citare kdm e gdm, che implementano, tra le altre cose, degli strumenti di configurazione molto flessibili, basati su tecnologie XML, l'autologin, un menu con la lista degli utenti, un menu con la lista degli ambienti desktop e dei gestori grafici disponibili, uno strumento per l'accesso remoto a servizi remoti in ascolto, come l'XDMCP. Il mondo Windows, Android ed Apple offre numerosi desktop manager.
Un gruppo di credenziali è un insieme logico che serve per assegnare un'unica credenziale a N host che abbiano una qualche proprietà in comune: questo facilita la manutenzione della procedura di autenticazione e modifiche agli elementi della credenziale di ciascun host che appartiene al gruppo.

## Storia e implementazione

In campo informatico, esistono numerose tipologie di account, associate a servizi di ogni genere e tipo. Vedi ad esempio funzioni bancarie, basi di dati, wiki (come il presente), forum, e via dicendo. Per ciascuna di esse l'account è regolata con tecniche e modalità differenti, come ad esempio le liste di controllo degli accessi (access control list).
Storicamente, l'account nasce come tecnologia per regolare le utenze di un sistema operativo, specialmente se multi-utente. La prima implementazione di tale forma di account è stata definita dai cosiddetti sistemi Unix. Risale al 1969 ed è utilizzata con modalità pressoché inalterate ancora oggi.
Grazie all'account diversi utenti possono utilizzare il medesimo dispositivo, personalizzando l'esperienza d'uso in maniera sicura e autonoma. Preferenze, impostazioni, automazione di servizi possono essere così attuati attraverso il ricorso indipendente e separato di un account.

### I sistemi Unix

Nei sistemi Unix e Unix-like, ciascuna utenza è associata ad un numero che la identifica univocamente (UID) e ad uno o più numeri (GID) che identificano i gruppi di cui essa fa parte, di cui uno è detto gruppo principale e gli altri sono detti gruppi supplementari. Ciascun numero viene associato ad almeno un nome utente e ad almeno un nome di gruppo. I diversi nomi eventualmente attribuiti allo stesso numero identificativo sono considerati del tutto equivalenti dal sistema (costituiscono degli alias).
Ad ogni utenza sono inoltre assegnate:
* una home directory per i suoi dati;
* una shell da eseguire all'atto del login;
* una password per effettuare l'autenticazione (alcune utenze di sistema possono non averla, ed in tal caso non è possibile effettuare direttamente il login con tali utenze);
* una data di scadenza (facoltativa) della password;
* una breve descrizione testuale (facoltativa) dell'utente;
* una quantità massima di spazio occupato nel file system dai file dell'utente, detta quota (facoltativa).
L'assegnamento di tali informazioni deve essere effettuata dall'amministratore di sistema prima del primo utilizzo effettivo da parte dell'utenza. L'assegnamento di home directory e shell comporta anche la creazione automatica, nell'area dell'utente, di file di preferenze di default che l'utente può poi personalizzare.
A loro volta, ciascuna risorsa presente nei file system (file semplici, directory, dispositivi a blocchi, dispositivi a caratteri, etc.) è associata ad uno UID (che ne identifica il proprietario) e ad un GID (che ne identifica il gruppo di appartenenza).
Ciascun processo è associato:
* ad uno UID principale, detto real UID, che ne identifica il proprietario e che inizialmente è quello associato all'utente che ha avviato il processo;
* ad uno UID usato ai fini dei permessi, detto effective UID, che solitamente coincide col precedente, ma che può essere diverso in caso di programmi che usano il permesso setuid;
* ad uno UID detto saved effective UID, che è inizializzato con il valore dello effective UID ma che in seguito può variare in caso di programmi che usano il permesso setuid;
* ad una serie di GID, di cui uno è detto principale e gli altri supplementari, che sono quelli associati all'utente che ha avviato il processo;
* ad un GID detto effective GID, che solitamente coincide con il GID principale associato al processo, ma che può essere diverso in caso di programmi che usano il permesso setgid;
* ad un GID detto saved effective GID, che inizialmente coincide con lo effective GID, ma che in seguito può cambiare in caso di programmi che usano il permesso setgid;
Gli UID ed i GID assegnati agli utenti sono usati per inizializzare i vari UID e GID dei processi che essi avviano. Questi ultimi sono di volta in volta confrontati dal sistema con gli UID e GID assegnati ai file, unitamente ai loro permessi, per implementare una stretta attività di controllo sui contenuti e operazioni. Questo insieme di informazioni costituisce il profilo di sicurezza dell'utente.
Un utente molto particolare è quello associato allo UID 0, normalmente denominato con lo username root. L'utente root è l'amministratore del sistema e possiede un controllo pressoché totale di esso. Al contrario gli altri utenti possiedono funzionalità limitate secondo modalità e criteri complessi. Esistono infatti, utenti di sistema, associati generalmente a singole funzionalità di controllo della macchina ed utenti semplici, associati a vere e proprie account.
Nel maggior numero di sistemi Unix, le informazioni su nome utente, nome gruppo, password, etc., sono mantenuti nei file /etc/passwd, /etc/group ed /etc/shadow, ma possono anche essere mantenuti in un server NIS+, o in un servizio di directory accessibile via LDAP.

### L'interoperabilità

In sistemi di rete eterogenei, sorge frequentemente la necessità di centralizzare in un unico servizio la gestione degli utenti e dei dati ad essi correlati. In questi casi, le tecnologie adottate devono ad un tempo sostenere le dimensioni di scala del sistema e supportare la compatibilità tra i servizi e le unità esistenti. Ad esempio, può accadere che in un sistema coesistano macchine che eseguono sistemi operativi differenti ed offrano una molteplicità di servizi (e.g.: condivisione della memoria di massa, telefonia e servizio mail). Un meccanismo di autenticazione centralizzata garantisce l'interoperabilità e la fruibilità piena del sistema agli utenti.
Si utilizzano in questi casi tecnologie articolate, composte da basi di dati e protocolli di autenticazione e crittografia. L'impiego congiunto di database LDAP, del protocollo di autenticazione kerberos e del sistema di crittografia SSL/TLS ne offre un modello significativo.

### Altri modelli

L'adozione rigorosa del meccanismo account-username definito nei sistemi Unix ha vissuto un parziale abbandono con la diffusione dei personal computer, votati inizialmente all'utilizzo in modalità standalone. Negli anni novanta, con l'avvento della grafica nei sistemi Apple prima e Windows successivamente, ha avuto vita un'implementazione del tutto anomala del concetto di account, in cui l'utente si vedeva conferita una identità limitata ad alcune funzioni, ma che non garantiva assolutamente alcuna salvaguardia della riservatezza dei propri contenuti. Nei sistemi operativi Windows 98 e precedenti, infatti, la forzatura delle password costituiva operazione elementare tale da non richiedere alcuna competenza tecnica particolare ed era consentita senza discriminazione a chiunque.
Lo sviluppo dilagante delle forme di interazione in rete dei sistemi informatici ha determinato successivamente un completo abbandono di tali modelli. Già intorno al 1999, infatti, Apple adottava il sistema operativo MacOS, totalmente conforme al modello unix, mentre Microsoft si disponeva finalmente, alla fine del 2001, al rilascio in ambito consumer del sistema operativo Windows XP, con il quale è introdotta una distinzione più articolata tra i ruoli dell'utente amministratore da quello dell'utente semplice (in ambito professionale ed aziendale la distinzione era già stata introdotta con Windows NT). Windows Vista ha offerto allora un'evoluzione ulteriore dei modelli Microsoft di account, associato alla sigla UAC, che corrispondeva ai criteri di qualità universalmente assicurati dagli altri soggetti sul mercato. Da Windows 8 in poi l'account del sistema operativo si è integrato, a tutti gli effetti, con quello Microsoft per gli altri servizi.
Altri sistemi operativi come Linux o Mac dispongono della funzionalità account. Anche su qualsiasi dispositivo mobile il sistema operativo (iOS, Android o Windows) opera attraverso un account, rispettivamente Apple, Google o Microsoft. Infine, portali, applicazioni, strumenti web permettono (a volte obbligano) a operare attraverso un account.
Con lo sviluppo della modalità cloud e il concetto chiave di sincronizzazione l'attivazione di un account è fondamentale ed è parte integrante della logica.

### Applicazioni

In pratica, l'impiego di un account permette di personalizzare (utente) l'esperienza di fruizione di un programma informatico, servizio digitale, piattaforma operativa, strumento applicativo o, banalmente, un sito web. La specifica personalizzazione di un account si chiama configurazione (menù, avatar e altre proprietà personali, impostazioni, cookie, opzioni, funzioni, ecc.): i vari utenti, eseguendo il login con la propria credenziale, ritrovano ambienti di utilizzo graditi e collaudati.
A parte il contesto dei sistemi operativi, il concetto di account è fondamentale anche per l'utilizzo di applicazioni e siti web. Uno degli utilizzi principali è quello dei programmi client di posta elettronica. Mediante l'account, l'utente può personalizzare l'esperienza di utilizzo dell'applicazione nonché, sfruttando la sincronizzazione, ritrovare il proprio ambiente di lavoro su diversi dispositivi. In generale, l'impiego di un account è diventato pressoché scontato nell'esperienza di utilizzo della maggior parte dei servizi informatici (applicazioni, app, procedure e strumenti web, social media ecc.).
Un altro ambito di utilizzo del concetto di account è quello della connessione a reti wireless per e/o la navigazione internet: in pratica, si tratta di conseguire (mediante l'inserimento di dati di riconoscimento e codici) l'accesso a utilizzare internet, specie per utenti ospiti.