Users and groups (Italiano)
Gli utenti e i gruppi sono usati nei sistemi GNU/Linux per il controllo degli accessi - ciò permette di determinare quali utenti e servizi sono autorizzati ad accedere ai file, alle cartelle oppure alle periferiche presenti sul sistema. Linux offre dei sistemi relativamente semplici di default. Per avere delle opzioni avanzate, consultare ACL e LDAP authentication.
Panoramica
Un utente è chiunque utilizzi un computer. In questo caso, ci si riferisce ai nomi che rappresentano questi utenti. Questi utenti possono essere Mary o Bill e possono utilizzare il nome di Dragonlady o Pirate al posto del loro nome reale. L'importante è che sul sistema sia presente un nome per ogni account creato, e questo nome sarà quello necessario per accedevi. Anche alcuni servizi vengono eseguiti usando account utente limitati o privilegiati.
La gestione degli utenti è stata creata per motivi di sicurezza per limitare gli accessi in determinati modi specifici. Il superutente (root) ha accesso completo al sistema operativo e la sua configurazione, è destinato solo per uso amministrativo. Gli utenti non privilegiati possono usare i programmi su e sudo per un utilizzo controllato dei privilegi.
Può capitare che una persona abbia più di un account, a patto che utilizzi nomi diversi per ogni account. Inoltre, ci sono alcuni nomi riservati e non dovranno essere usati, come "root".
Infine, gli utenti possono essere raggruppati in un "gruppo", e gli utenti possono scegliere di far parte di un gruppo per usufruire dei privilegi che esso garantisce.
Permessi di accesso e proprietà
Da In UNIX ogni cosa è un File::
- Il sistema UNIX è il risultato di alcune idee e concetti unificatori che hanno modellato il suo design, la sua interfaccia utente, la sua cultura ed evoluzione. Una tra le più importanti è probabilmente il mantra: "ogni cosa è un file", largamente considerata come uno dei punti basilari di UNIX.
- Questo concetto chiave di design consiste nel fornire un paradigma unificato per l'accesso ad un ampio spettro di risorse input/output: documenti, cartelle, dischi rigidi, lettori CD, modem, tastiere, stampanti, monitor, terminali e perfino alcune comunicazioni tra processi o di rete. Il trucco è fornire un'astrazione comune per tutte queste risorse, ognuna delle quali fu chiamata "file" dai padri di UNIX. Dato che ogni "file" è accessibile per mezzo delle stesse API, si può usare lo stesso set di comandi di base per accedere in lettura/scrittura ad un disco, una tastiera, un documento o un dispositivo di rete.
Da Estensione dell'Astrazione File di UNIX per il Networking generico:
- Un'astrazione fondamentale, efficacissima e coerente, fornita in UNIX e sistemi operativi compatibili, è l'astrazione file. Molti servizi e interfacce per i dispositivi nei sistemi operativi sono implementati per fornire una metafora di file o file system alle applicazioni. Questo permette nuovi utilizzi per le applicazioni esistenti, ed inoltre ne aumenta fortemente le capacità — semplici strumenti con usi specifici possono, con l'astrazione file di UNIX, essere usati in nuove maniere. Un modesto programma come cat, disegnato per leggere uno o più file e mostrare il loro contenuto nello standard output, può essere usato per leggere l'input/output di dispositivi per mezzo di speciali file dispositivo, di solito posti dentro la cartelle
/dev
. Su molti sistemi, la registrazione e la riproduzione audio può essere semplicemente eseguita con i comandi, rispettivamente, "cat /dev/audio > myfile
" e "cat myfile > /dev/audio
".
Ogni file in un sistema GNU/Linux appartiene a un utente e a un gruppo. In aggiunta, ci sono tre tipi di permessi di accesso: il permesso di lettura, di scrittura, e di esecuzione. Differenti tipi di accesso possono essere applicati all'utente proprietario, al gruppo proprietario oppure agli altri(coloro che non ne hanno il possesso). Si possono visualizzare i proprietari ed i permessi dei file usando l'opzione long listing del comando ls
:
$ ls -l /boot/
total 13740 drwxr-xr-x 2 root root 4096 Jan 12 00:33 grub -rw-r--r-- 1 root root 8570335 Jan 12 00:33 initramfs-linux-fallback.img -rw-r--r-- 1 root root 1821573 Jan 12 00:31 initramfs-linux.img -rw-r--r-- 1 root root 1457315 Jan 8 08:19 System.map26 -rw-r--r-- 1 root root 2209920 Jan 8 08:19 vmlinuz-linux
Nella prima colonna sono visualizzati i permessi dei file (ad esempio, il file initramfs-linux.img
ha i permessi -rw-r--r--
). Nella terza e la quarta sono visualizzati rispettivamente l'utente ed il gruppo proprietari. Nello stesso esempio tutti i file sono posseduti dall'utente root e dal gruppo root.
$ ls -l /media/
total 16 drwxrwx--- 1 root vboxsf 16384 Jan 29 11:02 sf_Shared
In questo esempio, la cartella sf_Shared
è posseduta dall'utente root e dal gruppo vboxsf. Si possono ottenere maggiori informazioni riguardo ai proprietari ed ai permessi dei file usando il comando stat
:
L'utente proprietario:
$ stat -c %U /media/sf_Shared/
root
Il gruppo proprietario:
$ stat -c %G /media/sf_Shared/
vboxsf
Permessi di accesso:
$ stat -c %A /media/sf_Shared/
drwxrwx---
I permessi di accesso sono visualizzati in tre gruppi di caratteri, rappresentano rispettivamente i permessi dell'utente proprietario, del gruppo proprietario, e degli altri. Ad esempio, la serie di caratteri -rw-r--r--
indica che l'utente proprietario ha i permessi di lettura e scrittura, ma non di esecuzione (rw-
), mentre gli utenti appartenenti al gruppo proprietario e gli altri hanno solo il permesso di lettura (r--
e r--
). Invece, la serie di caratteri drwxrwx---
indica che l'utente proprietario e gli utenti appartenenti al gruppo proprietario hanno i permessi di lettura, scrittura ed esecuzione (rwx
e rwx
), mentre gli altri utenti viene negato ogni tipo di accesso (---
). Il primo carattere indica il tipo di file.
Per elencare i file posseduti da un utente o un gruppo con il comando find
:
# find / -group [group]
# find / -user [user]
L'utente ed il gruppo proprietario dei file possono essere cambiati con il comando chown
(change owner). I permessi di accesso ai file possono essere cambiati con il comando chmod
(change mode).
Consultare chown(1), chmod(1), e Linux file permissions per maggiori informazioni.
Lista dei file
File | Funzione |
---|---|
/etc/shadow |
Informazioni riservate degli account utente |
/etc/passwd |
Informazioni degli account utente |
/etc/gshadow |
Contiene informazioni riservate dei gruppi di utenti |
/etc/group |
Definisce a quali gruppi appartengono i vari utenti |
/etc/sudoers |
Lista di chi può eseguire cosa con sudo |
/home/* |
Cartelle home |
Gestione degli utenti
Per visualizzare gli utenti connessi al sistema è possibile usare il comando who
.
Per aggiungere un nuovo utente, usare il comando useradd
:
# useradd -m -g [gruppo_iniziale] -G [gruppi_aggiuntivi] -s [login_shell] [nomeutente]
-
-m
crea la cartella home nel percorso/home/nomeutente
; all'interno della cartella home, un utente non-root può salvare file, cancellarli ed installare programmi. -
-g
indica il nome o il numero del gruppo principale di appartenenza dell'utente; il gruppo deve esistere; se non viene specificato, il comportamento diuseradd
dipenderà dalla variabile di ambienteUSERGROUPS_ENAB
definita in/etc/login.defs
. Il comportamento predefinito (USERGROUPS_ENAB yes
) è quello di creare un gruppo con lo stesso nome del nome utente, conGID
pari aUID
. -
-G
precede una lista di gruppi aggiuntivi a cui l'utente appartiene. Ogni gruppo deve essere separato dal successivo da una virgola, senza usare mai gli spazi. Di default non è previsto nessun gruppo aggiuntivo. -
-s
definisce il percorso ed il nome del file della shell di login dell'utente; dopo che il processo di avvio è completo, la shell di login di default è quella definita qui. Assicurarsi che la shell indicata sia installata se si sceglie una shell diversa da bash.
/etc/shells
. Per i programmi che utilizzano PAM, questo viene controllato dal modulo pam_shells
.Esempio aggiunta di un utente
In un tipico sistema desktop per aggiungere un nuovo utente denominato archie specificando bash come shell di login e aggiungerlo al gruppo wheel
(si veda #Gruppi per gli utenti per maggiori informazioni) utilizare:
# useradd -m -G wheel -s /bin/bash archie
Questo comando creerà automaticamente un gruppo denominato archie
con lo stesso GID pari all' UID dell'utente archie
e ne fa di questo il gruppo predefinito dell'utente archie
al login . Creare ad ogni utente il proprio gruppo, è il modo migliore per aggiungere utenti.
Si potrebbe anche dare all'utente un gruppo predefinito preferenziale, come ad esempio users
:
# useradd -m -g users -G wheel -s /bin/bash archie
Tuttavia, questo metodo non è consigliato per sistemi multi-utente. In genere, il modo di controllare la sicurezza per consentire ai gruppi di condividere l'accesso in scrittura a un particolare insieme di file/cartelle è quello di impostare all'utente un valore di umask 002
, significa che il gruppo in questione ha sempre accesso in scrittura qualsiasi file creato per impostazione predefinita. In questo modo la cartella home dell'utente, che è di proprietà di un gruppo che ha come nome del gruppo lo stesso nome utente, è ancora in sola lettura per gli altri utenti del sistema, mentre i file/cartelle condivisi possono essere resi scrivibili a tutti per impostazione predefinita utilizzando un gruppo operativo.
Altri esempi di gestione degli utenti
Per aggiungere un utente ad altri gruppi usare:
# usermod -aG gruppi_aggiuntivi nome_utente
In alternativa , può essere utilizzato gpasswd . Anche se il nome utente può essere aggiunto (o rimosso) solo da un gruppo alla volta .
# gpasswd --add nome_utente gruppo
-a
viene omessa al comando usermod descritto sopra, l'utente viene rimosso da tutti i gruppi non elencati in gruppi_aggiuntivi
(cioè l' utente sarà membro solo di quei gruppi elencati in gruppi_aggiuntivi
).Per inserire le informazioni dell'utente per il campo GECOS (es. il nome completo), digitare:
# chfn nomeutente
(in questo modo chfn
verrà eseguito in modo interattivo).
Per creare la password dell'utente, digitare:
# passwd nomeutente
Per contrassegnare la password di un utente come scaduta, imponendo loro di crearne una nuova la prima volta che effettuano il log-in, digitare:
# chage -d 0 username
Gli account utente possono essere rimossi tramite il comando userdel.
# userdel -r nomeutente
L'opzione -r
specifica che la cartella home
e la coda (spool) della posta dell'utente verranno cancellati.
Database Utente
Le informazioni degli utenti locali sono contenute nel file /etc/passwd
. Per visualizzare gli account utente presenti sul sistema:
$ cat /etc/passwd
Ogni riga del file fa riferimento ad un account, e segue questo schema:
account:password:UID:GID:GECOS:cartella_home:shell
dove
-
account
è il nome utente -
password
è la passrword dell'utente -
UID
è l'identificativo numerico dell'utente -
GID
è l'identificativo numerico del gruppo principale dell'utente -
GECOS
questo campo è opzionale e contiene le informazioni aggiuntive dell'utente; di solito contiene il nome completo dell'utente -
cartella_home
contiene il percorso della cartella$HOME
dell'utente -
shell
indica l'interprete dei comandi utilizzato dall'utente (il default è/bin/sh
)
passwd
è leggibile da tutti gli utenti, per cui memorizzare le password (sia criptate che altrimenti) in questo file non sarebbe sicuro. Per questo il campo password
contiene il carattere segnaposto x
, il quale indica che la password criptata è salvata nel file ad accesso limitato /etc/shadow
.Gestione dei gruppi
Nel file /etc/group
sono definiti i gruppi presenti sul sistema (group(5) per maggiori informazioni).
Per visualizzare l'appartenenza ai gruppi con il comando groups
:
$ groups [user]
Se il parametro user
viene omesso, verranno mostrate i gruppi a cui appartiene l'utente corrente.
Il comando id
fornisce informazioni aggiuntive, come l'UID dell'utente ed i GID associati:
$ id [user]
Per elencare tutti i gruppi del sistema:
$ cat /etc/group
Per creare un nuovo gruppo usare il comando groupadd
:
# groupadd [group]
Aggiungere un utente ad un gruppo con il comando gpasswd
:
# gpasswd -a [user] [group]
Per eliminare un gruppo esistente:
# groupdel [group]
Per rimuovere un utente da un gruppo:
# gpasswd -d [user] [group]
Se l'utente è ancora connesso al sistema, sarà necessario che si disconnetta e acceda nuovamente al sistema per far sì che le modifiche abbiano effetto.
Lista di gruppi
Gruppi per gli utenti
Gli utenti di pc Workstation/desktop sono soliti aggiungere i propri utenti non-root ai seguenti gruppi per permettere l'accesso alle periferiche e facilitare l'amministrazione del sistema:
Gruppo | File interessati | Scopo |
---|---|---|
games | /var/games |
Concede l'accesso ad alcuni giochi. |
rfkill | /dev/rfkill |
Permette di controllare lo stato di alimentazione dei dispositivi wireless (utilizzato dal pacchetto rfkill). |
users | Gruppo standard degli utenti. | |
uucp |
/dev/ttyS[0-9] , /dev/tts/[0-9]
|
Permette di accedere a periferiche seriali ed USB come modem, controller, porte seriali/RS232. |
wheel | Gruppo di Amministrazione, comunemente utilizzato per consentire l'accesso alle utility sudo e su ( non lo usa di default), , configurabili in /etc/pam.d/su and /etc/pam.d/su-l ). Può anche essere usato per avere accesso completo in lettura ai file journal.
|
Gruppi di sistema
I seguenti gruppi sono usati per scopi di sistema ed è difficile che siano utili agli utenti alle prime armi con Arch:
Gruppo | File interessati | Scopo |
---|---|---|
bin | none | Storico |
daemon | ||
dbus | usato internamente da dbus | |
ftp | /srv/ftp |
usato da server FTP come ProFTPD |
fuse | Utilizzato da fuse per permettere il montaggio da utente. | |
http | ||
kmem |
/dev/port , /dev/mem , /dev/kmem
|
|
locate |
/usr/bin/locate , /var/lib/locate , /var/lib/mlocate , /var/lib/slocate
|
Permette l'uso del comando updatedb. |
/usr/bin/mail |
||
mem | ||
nobody | Gruppo senza privilegi. | |
polkitd | Gruppo di polkit. | |
root | /* |
Accesso completo al sistema ed alla sua amministrazione (root, admin). |
smmsp | Gruppo di sendmail. | |
systemd-journal | /var/log/journal/* |
Fornisce accesso completo ai log di Systemd. In caso contrario, vengono visualizzati solo i messaggi generati dagli utenti. |
tty |
/dev/tty , /dev/vcc , /dev/vc , /dev/ptmx
|
Ad esempio garantisce l'accesso a /dev/ACMx
|
Gruppi obsoleti o non utilizzati
I seguenti gruppi al momento non sono utilizzati:
Gruppo | Scopo |
---|---|
log | Accesso ai file di log in /var/log .
|
stb-admin | Non utilizzato! Diritti di accesso a system-tools-backends |
Kvm | Aggiunta di un utente al al gruppo kvm utilizzato per consentire agli utenti non-root di accedere a macchine virtuali utilizzando KVM. Questo è stato deprecato in favore dell'uso delle regole udev, e questo viene fatto automaticamente.
|
Gruppi usati prima di Systemd
Gruppo | File interessati | Scopo |
---|---|---|
audio |
/dev/audio , /dev/snd/* , /dev/rtc0
|
Accesso diretto all'hardware sonoro , per tutte le sessioni (requisito imposto sia da ALSA che da OSS). Le sessioni locali hanno già la possibilità di modificare i controlli del mixer audio e l'accesso. |
camera | Accesso alle Fotocamere digitali. | |
disk |
/dev/sda[1-9] , /dev/sdb[1-9]
|
Accesso alle periferiche a blocchi che non appartengono ai gruppi optical, floppy e storage. |
floppy | /dev/fd[0-9] |
Accesso ai floppy drive. |
lp |
/etc/cups , /var/log/cups , /var/cache/cups , /var/spool/cups , /dev/parport[0-9]
|
Accesso alle stampanti; permette all'utente di gestire le stampe. |
network | Pemette di cambiare le impostazioni di rete nel caso si usino programmi come NetworkManager. | |
optical |
/dev/sr[0-9] , /dev/sg[0-9]
|
Accesso ai dispositivi ottici come lettori CD o DVD. |
power | Permette l'uso dei programmi di controllo del risparmio energetico. | |
scanner | /var/lock/sane |
Accesso agli scanner. |
storage | Accesso ai dischi rimovibili come dischi esterni USB, pennine USB, lettori MP3; consente all'utente di montare le periferiche di archiviazione. | |
sys | Permette l'amministrazione delle stampanti in CUPS. | |
video |
/dev/fb/0 , /dev/misc/agpgart
|
Accesso alle periferiche di acquisizione video, DRI/3D accelerazione hardware (X può essere usato anche senza appartenere a questo gruppo). Le sessioni locali hanno già la possibilità di utilizzare l'accelerazione hardware e di acquisizione video. |