Nel contesto di un meccanismo di controllo dell'accesso discrezionale (DAC), l'accesso alle risorse di sistema, ai file e alle directory si basa sull'identità degli utenti e sui gruppi di cui fanno parte. Questo tipo di controllo degli accessi è chiamato "discrezionale" perché un utente può eseguire le proprie decisioni politiche (limitate dalle proprie autorizzazioni, ovviamente). In questo tutorial vedremo come aggiungere un utente a un gruppo e qual è la differenza tra un gruppo primario e uno secondario su un sistema Linux RHEL 8 / CentOS 8.
In questo tutorial imparerai:
- Qual è la differenza tra un gruppo primario e uno secondario
- Come aggiungere un utente a un gruppo utilizzando il comando usermod
- Come aggiungere un utente a un gruppo direttamente con vigr
Come aggiungere un utente a un gruppo su Rhel8
Requisiti e convenzioni software utilizzati
Categoria | Requisiti, convenzioni o versione del software utilizzata |
---|---|
Sistema | RHEL 8 / CentOS 8 |
Software | Non è necessario alcun software speciale per seguire questo tutorial |
Altro | Autorizzazione a eseguire il comando con privilegi di root. |
Convenzioni | # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato |
Cos'è un gruppo?
Linux, essendo basato su Unix, è un sistema operativo multiutente:più utenti esistono e condividono le risorse nel sistema contemporaneamente. Al livello più semplice, l'accesso a queste risorse è gestito tramite l'uso di un DAC
(controllo di accesso discrezionale). L'accesso a file e directory, ad esempio, si basa sull'identità di un utente e sui groups
è un membro di. In questo tutorial vedremo come aggiungere un utente a un gruppo esistente su una macchina Red Hat Enterprise Linux 8.
Gruppi primari e secondari
Al giorno d'oggi, Red Hat, come quasi tutte le altre principali distribuzioni Linux, utilizza uno schema chiamato UPG
, o User Private Group:ogni volta che viene creato un nuovo utente, automaticamente viene creato anche un nuovo gruppo con lo stesso nome dell'utente e l'utente ne diventa l'unico membro. Questo è ciò che viene chiamato primary
o private
gruppo.
Ogni utente ha il proprio gruppo principale, che porta il suo nome, senza altri membri. Questa configurazione consente di modificare il umask
predefinito valore:tradizionalmente era 022
(questo significa 644
permessi per file e 755
per le directory), ora è solitamente impostato su 002
(664
permessi per file e 775
per le directory).
Poiché, per impostazione predefinita, ogni file o directory creato da un utente viene creato con il gruppo principale di quell'utente, questa configurazione, pur preservando la sicurezza (un utente può comunque modificare solo i propri file), semplifica la condivisione delle risorse e la collaborazione tra gli utenti che sono membri di lo stesso gruppo quando viene utilizzato il bit setgid, consentendo i permessi di scrittura per il gruppo.
Possiamo ottenere un elenco dei gruppi di cui è membro un utente, utilizzando i groups
comando:
$ groups egdoc wheel
Come possiamo osservare dall'output del comando, l'utente corrente, egdoc, appartiene al egdoc
gruppo, che è il proprio gruppo principale, e alla wheel
group, che gli consente di eseguire comandi con sudo
, ed è quello che viene chiamato un secondary group
:un gruppo facoltativo che non è associato all'utente per impostazione predefinita.
Aggiungi un utente a un gruppo utilizzando usermod
Sebbene un utente sia l'unico membro del suo gruppo principale, potremmo voler aggiungere un utente a un gruppo secondario, magari per concedergli l'accesso a qualche tipo di risorsa. Supponiamo ad esempio di avere un test
utente e vogliamo aggiungerlo al gruppo esistente linuxconfig
:il modo più semplice e consigliato per eseguire questa operazione è utilizzare usermod
comando:
$ sudo usermod -a -G linuxconfig test
Esaminiamo le opzioni che abbiamo utilizzato. Il usermod
utility, modifichiamo un account utente; utilizzandolo possiamo eseguire una vasta gamma di operazioni, come cambiare la home directory di un utente, impostare una data di scadenza per il suo account o bloccarlo immediatamente. Il comando ci consente anche di aggiungere l'utente a un gruppo esistente. Le opzioni che abbiamo usato in questo caso sono -G
(abbreviazione di --groups
) e -a
, (che è la forma abbreviata di --append
).
L'opzione -G o -groups ci consente di fornire un elenco di gruppi supplementari separati da virgole di cui l'utente dovrebbe essere membro. Come abbiamo detto prima, ogni gruppo fornito deve già esistere nel sistema. Una cosa molto importante da ricordare è che l'elenco dei gruppi forniti viene interpretato in modo diverso se il -a
è prevista anche l'opzione o meno:nel primo caso, l'elenco è interpretato come i gruppi supplementari a cui l'utente deve essere aggiunto oltre a quelli di cui è già membro; quando il -a
l'opzione non è prevista, invece, l'elenco viene interpretato come l'elenco assoluto di gruppi di cui l'utente dovrebbe essere membro. Come indicato nella manpage del comando, in quest'ultimo caso, se l'utente è attualmente membro di un gruppo che non fa parte dell'elenco fornito al comando, verrà rimosso da quel gruppo!
L'utente "test" è ora un membro del gruppo "linuxconfig". Verifichiamolo:
$ sudo groups test test : test linuxconfig
Aggiungi utente direttamente a un gruppo
Usando usermod
è il modo più semplice per aggiungere un utente a un gruppo. Per ragioni di completezza, esamineremo ora un altro modo per eseguire lo stesso compito utilizzando il vigr
comando linux. Questo comando ci permette di modificare il /etc/group
e /etc/gshadow
direttamente i file, bloccandoli anche mentre sono aperti, per prevenirne il danneggiamento e garantire la coerenza.
La versione "shadow" del file (/etc/gshadow) viene modificata solo quando -s
viene utilizzata l'opzione. Per aggiungere il nostro utente "test" al gruppo "linuxconfig" con questo metodo, dovremmo eseguire vigr
comando come superutente:il /etc/group
il file verrà aperto nell'editor predefinito (di solito vi):
[...] chrony:x:993: egdoc:x:1000: cgred:x:992: docker:x:991: apache:x:48: test:x:1001:test linuxconfig:x:1002: [...]
La sintassi utilizzata per rappresentare ogni gruppo è la seguente:
group-name:group-password:group-id:users
I campi sono separati da due punti:il primo è il nome del gruppo, il secondo è la “password” del gruppo (che solitamente non è impostata) e il terzo campo è il GID
o ID gruppo. L'ultimo campo è l'elenco separato da virgole dei membri del gruppo. Per aggiungere il nostro utente "test" al gruppo "linuxconfig", dobbiamo modificare questo campo, in modo che la riga diventi:
linuxconfig:x:1002:test
Una volta eseguita la modifica, possiamo salvare e chiudere il file. Sul terminale apparirà un messaggio:
You have modified /etc/group. You may need to modify /etc/gshadow for consistency. Please use the command 'vigr -s' to do so.
Dato che abbiamo cambiato il /etc/group
file, il messaggio ci suggerisce di modificare anche il relativo file shadow, che è /etc/gshadow
. Per quelli di voi che non lo sanno, un file shadow viene utilizzato per archiviare la versione crittografata di informazioni che non sarebbero sicure da archiviare in formato non crittografato. Ad esempio, come abbiamo visto prima, un x
è riportato nel /etc/group
file, al posto della password di gruppo opzionale; la versione hash della password, se esistente, verrebbe archiviata nel file shadow.
Ora, apportiamo la stessa modifica che abbiamo fatto prima, a /etc/gshadow
file, in modo che venga sincronizzato con /etc/group
. Tutto quello che dobbiamo fare è fornire i -s
segnala al vigr
comando:
$ sudo vigr -s
Una volta aperto il file, apportiamo la modifica necessaria:
linuxconfig:!::test
Dopodiché, dobbiamo forzare la scrittura di questo file, poiché è di sola lettura:quando si utilizza vi
, possiamo farlo eseguendo w!
comando.
Un modo alternativo per mantenere sincronizzati i due file è usare grpconv
comando, che crea il /etc/gshadow
file da /etc/group
e, facoltativamente, da un /etc/gshadow
già esistente file:
$ sudo grpconv
A questo punto possiamo verificare la coerenza tra i due file eseguendo:
$ sudo grpck
Nessun output dovrebbe essere visualizzato a questo punto.
Conclusioni
In questo tutorial abbiamo visto la differenza tra un gruppo primario e uno secondario e quali sono i loro ruoli in un DAC
modello. Abbiamo visto come possiamo aggiungere un utente a un gruppo usando il usermod
comando, che è il modo consigliato, o direttamente usando il vigr
comando modificando in modo sicuro il /etc/group
e /etc/gshadow
File. Qualunque sia la procedura che decidi di utilizzare per svolgere questo compito amministrativo, dovresti sempre prestare la massima attenzione.