Users and groups (Italiano)

From ArchWiki
Revision as of 12:41, 2 January 2014 by Veleno77 (Talk | contribs) (pagina allineata)

Jump to: navigation, search


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.

Nota: I principianti dovranno utilizzare questi strumenti con cautela ed evitare di modificare altri account esistenti, tranne che il proprio.

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 lisintg 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</nowiki>

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 i la serie di caratteri -rw-r--r-- indicano 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--- indicano 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 man chown, man chmod, 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 carella 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 di useradd dipenderà dalla variabile di ambiente USERGROUPS_ENAB definita in /etc/login.defs.
  • -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.
Attenzione: La shell di login dovrebbe essere una di quelli elencati in /etc/shells. Per i programmi che utilizzano PAM, questo viene controllato dal modulo pam_shells.

Un esempio per un classico sistema desktop, il comando per l'aggiunta di un utente chiamato archie specificando bash come shell di login:

# useradd -m -g users -G wheel -s /bin/bash archie

Per aggiungere l'utente ad altri gruppi in un secondo momento:

# usermod -aG [gruppi_aggiuntivi] [nome_utente]

In alternativa , può essere utilizzato gpasswd . Anche se il nome utente può essere aggiunto solo ( o rimossa ) da un gruppo alla volta .

# gpasswd --add [nome_utente] [gruppo]
Attenzione: Se l'opzione -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)
Nota: Arch Linux usa le password shadowed. Il file 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 (man group 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

Nota:
  • Nessuno di questi gruppi è necessario per autorizzazioni desktop standard come l'audio, grafica 3D, stampa, montaggio, ecc..., finché la sessione logind non è interrotto (si veda e si controlli i permessi sulla sessione).

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
camera Accesso alle fotocamere digitali.
floppy /dev/fd[0-9] Accesso ai lettori floppy.
games /var/games Concede l'accesso ad alcuni giochi.
locate /usr/bin/locate, /var/lib/locate, /var/lib/mlocate, /var/lib/slocate Permette l'uso del comando updatedb.
networkmanager Richiesto per connettersi via wireless se si usa NetworkManager. Questo gruppo non è incluso in Arch di default, sarà quindi necessario aggiungerlo manualmente.
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).

Gruppi di sistema

I seguenti gruppi sono usati per scopi di sistema ed è difficile che siano utili agli utenti alle prime armi con Arch:

Nota:
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.
avahi
bin none Storico
clamav /var/lib/clamav/*, /var/log/clamav/* Usato da Clam AntiVirus.
daemon
dbus /var/run/dbus/*
disk /dev/sda[1-9], /dev/sdb[1-9] Accesso alle periferiche a blocchi che non appartengono ai gruppi optical, floppy e storage.
ftp /srv/ftp usato da server FTP come Proftpd
fuse Utilizzato da fuse per permettere il montaggio da utente.
gdm Cartella di autorizzazione del server X (ServAuthDir) gruppo di GDM.
http
kmem /dev/port, /dev/mem, /dev/kmem
log /var/log/* Accesso ai file di log in /var/log.
lp /etc/cups, /var/log/cups, /var/cache/cups, /var/spool/cups Accesso alle stampanti; permette all'utente di gestire le stampe.
mail /usr/bin/mail
mem
mpd /var/lib/mpd/*, /var/log/mpd/*, /var/run/mpd/*, opzionalmente cartelle di musica gruppo di MPD.
network Pemette di cambiare le impostazioni di rete nel caso si usino programmi come NetworkManager.
nobody Gruppo senza privilegi.
ntp /var/lib/ntp/* Gruppo di NTPd.
optical /dev/sr[0-9], /dev/sg[0-9] Accesso ai dispositivi ottici come lettori CD o DVD.
policykit Gruppo di PolicyKit.
power Permette l'uso del programma pm-utils (sospensione, ibernazione...) e dei programmi di controllo del risparmio energetico.
root /* Accesso completo al sistema ed alla sua amministrazione (root, admin).
scanner /var/lock/sane Accesso agli scanner.
smmsp Gruppo di sendmail.
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.
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
vboxsf cartelle condivise delle macchine virtuali Usato da VirtualBox.
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.

Gruppi per software

I seguenti gruppi permettono ai propri membri di usare software specifici:

Gruppo File interessati Scopo
adbusers file dei dispositivi in /dev/ Diritti di acesso al Debugging Bridge di Android.
cdemu /dev/vhba_ctl Permesso per l'utilizzo dell'emulazione con cdemu.
thinkpad /dev/misc/nvram Usato dagli utenti di ThinkPad per accedere a programmi come tpb.
vboxusers /dev/vboxdrv Permette l'uso del programma VirtualBox.
vmware Permette l'uso del programma VMware.
Ssh Sshd può essere configurato per consentire solo i membri appartenenti a questo gruppo di effettuare il login.
wireshark Ottenere i diritti per catturare i pacchetti con Wireshark.

Gruppi obsoleti o non utilizzati

I seguenti gruppi al momento non sono utilizzati:

Gruppo Scopo
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.