GNU/Linux >> Linux Esercitazione >  >> Linux

Guida completa all'amministrazione degli utenti su Linux

Questo tutorial si concentra sull'amministrazione degli utenti su host Linux, sulla gestione di utenti e gruppi.

In qualità di amministratore di sistema, stai manipolando utenti e gruppi tutto il tempo.

Potrebbe essere necessario creare un nuovo account utente ad esempio per un nuovo membro del tuo team.

Potrebbe anche essere richiesto di creare account specifici per database o per strumenti speciali che installi sul tuo host.

Se il tuo host cresce, potresti anche essere tentato di creare gruppi per avere una comprensione più chiara dei diritti che assegni ai membri del tuo sistema.

Di conseguenza, avere una perfetta comprensione dell'amministrazione degli utenti è un'abilità fondamentale da padroneggiare per gli amministratori esperti.

Nel tutorial di oggi, esamineremo da vicino l'amministrazione degli utenti:come creare utenti , eliminali ma anche come impostare una chiara politica delle password sul tuo sistema .

Scoprirai tutti i comandi associati all'amministrazione degli utenti, nonché i file specifici che devi esaminare da vicino.

Pronto?

Cosa imparerai

Leggendo questo tutorial fino alla fine, imparerai i seguenti argomenti.

  • Quali account utente sono su Linux e come differiscono l'uno dall'altro;
  • Cosa sono i gruppi su Linux e quali sono i diversi tipi di gruppo;
  • Come creare , elimina e modifica utenti esistenti su un host Linux;
  • Quali sono le passwd e ombra file sul tuo sistema e quali informazioni contengono;
  • Come puoi configurare l'invecchiamento della password con il comando chage;
  • Come puoi concedere agli utenti con diritti privilegiati tramite visudo e usermod;

Come al solito, è un programma piuttosto lungo, quindi senza ulteriori indugi, diamo un'occhiata a quali sono gli account utente su Linux.

Nozioni di base sull'amministrazione degli utenti su Linux

Se stai utilizzando il tuo sistema Linux, molto probabilmente è in esecuzione come un sistema multiutente .

Significa che più utenti possono connettersi allo stesso host per condividere risorse o eseguire operazioni diverse sul sistema.

Tuttavia, come avrai già notato, non tutti gli account utente sono uguali.

Alcuni potrebbero avere più autorizzazioni di altri. D'altra parte, alcuni potrebbero essere più limitati di altri, non essendo in grado di avviare nemmeno un semplice processo di shell.

Tipi di account utente

Su Linux, dovrai gestire tre diversi tipi di account utente:

  • Account root :che è per definizione l'account utente più potente del tuo sistema. L'utente root può eseguire qualsiasi operazione (come modificare le password, ad esempio), può terminare qualsiasi processo e può navigare in qualsiasi directory sul filesystem.
  • Account di sistema :gli account di sistema sono account utilizzati da processi o programmi sul tuo host. Potresti aver visto che account specifici vengono utilizzati per l'amministrazione della posta o per eseguire un semplice server Apache. A questi account vengono spesso concesse autorizzazioni limitate e viene loro impedito di accedere a una shell interattiva.

Si consiglia di non modificare tali account da solo.

  • Account utente :gli account utente sono account utilizzati da utenti reali. Potrebbero essere membri del tuo team o account che hai creato per consentire loro di recuperare alcuni file sull'host. Contrariamente agli account di sistema, si consiglia vivamente di modificare tali account per dar loro una configurazione corretta.

Questi account sono il più delle volte dotati di shell interattive (come bash o sh) per eseguire comandi sul sistema.

Nota :su alcuni host, potrebbe essere consigliabile bloccare l'account di root per evitare problemi di sicurezza.

Identificatori account utente

Su Linux, gli account sono identificati da un ID utente , chiamato anche UID .

Questo è molto vicino al concetto di PID per i processi, gli UID vengono utilizzati per identificare in modo univoco gli utenti su un sistema.

Inoltre, vengono spesso utilizzati per classificare gli account utente su un sistema Linux.

Come abbiamo già discusso, gli account utente sono suddivisi in tre categorie. Di conseguenza, gli UID vengono assegnati anche agli utenti in base alla categoria di appartenenza.

Per visualizzare le informazioni relative al tuo ID, esegui il seguente comando

$ id

Come puoi vedere, il mio UID personale è 1000.

Ma perché non è zero o uno?

Su Linux, gli ID utente vengono assegnati in base alla seguente regola:

  • All'account root viene assegnato l' UID 0 , nonché il GID 0 .
  • Account di sistema , quello creato dai programmi che usi sul tuo sistema, viene assegnato un intervallo personalizzato che può essere da 1 a 500 o da 1 a 999. Sui sistemi basati su Debian, l'intervallo per gli account di sistema va da 1 a 999.
  • Account utente vengono assegnati UID maggiori di 1000. Questo è ciò che hai effettivamente visto nell'immagine mostrata sopra.

Personalizzazione degli identificatori utente

In casi speciali, potresti essere tentato di personalizzare il modo in cui UID e GID vengono assegnati su un sistema Linux.

A volte, gli utenti sono definiti localmente sul sistema, ma possono anche essere definiti in un sistema di amministrazione utente esterno come LDAP, ad esempio.

Di conseguenza, se LDAP mantiene un UID compreso tra 1000 e 9999, potresti voler assegnare all'utente locale un UID maggiore di 10000 per impostazione predefinita.

La personalizzazione degli identificatori utente viene eseguita in un file denominato login.defs sul tuo host (che si trova in ecc )

Per dare un'occhiata agli identificatori predefiniti forniti sul tuo host, dai un'occhiata al file login.defs e trova la sezione seguente.

$ nano /etc/login.defs

Gruppi e tipi di gruppo su Linux

Per impostazione predefinita, agli utenti del tuo host vengono assegnati uno o più gruppi.

Su Linux, i gruppi vengono creati in modo che gli utenti condividano lo stesso set di autorizzazioni o le stesse restrizioni su un host Linux.

Per impostazione predefinita, quando crei un account utente, con esso viene creato un gruppo con lo stesso nome. Di conseguenza, ogni utente appartiene ad almeno un gruppo.

Per illustrarlo, esegui il seguente comando sul tuo sistema

$ groups <user>

Per impostazione predefinita, i gruppi sono divisi in due categorie su Linux:

  • Gruppo principale :un utente può avere un (e un solo) gruppo principale alla volta. Un gruppo primario è il gruppo assegnato quando l'utente crea un file o una directory sul sistema. Di conseguenza, potresti essere tentato di modificare un gruppo utente principale per modificare il suo gruppo di creazione file predefinito.
  • Gruppi secondari :gli utenti possono appartenere a molti altri gruppi. Se appartengono a un team specifico sul tuo host, apparterranno a questo gruppo (ad esempio gli amministratori). Come secondo esempio, gli utenti privilegiati possono appartenere al gruppo sudo (su Debian) o al gruppo wheel (su distribuzioni basate su Red Hat)

Ai gruppi vengono inoltre assegnati identificatori specifici per differenziarsi l'uno dall'altro nel sistema.

Si chiamano GID e possono anche essere modificati controllando il file login.defs sul tuo filesystem.

Ora che hai una comprensione più chiara di cosa sono utenti e gruppi su Linux, vediamo quali comandi puoi eseguire per aggiungere o rimuovere utenti sul tuo sistema.

Comandi di amministrazione utente su Linux

Sul tuo sistema, puoi scegliere di aggiungere, rimuovere o modificare gli account locali.

Avviso :dovrai disporre dei privilegi sudo sul tuo host per eseguire quei comandi o per connetterti come root.

Ecco una guida per i sistemi basati su Debian e una per i sistemi basati su Red Hat.

Creazione di account utente locali

Per creare account utente locali su Linux, devi utilizzare il comando useradd .

$ useradd <user>

Per impostazione predefinita, a meno che non modifichi i file di configurazione, il comando creerà una home directory per il tuo utente e file preimpostati come .bashrc, .profile e .bash_logout.

Tuttavia, il comando useradd espone diverse opzioni per modificare la creazione dell'account utente:

  • -d :per la home directory. Per impostazione predefinita, gli account verranno creati in /home ma puoi scegliere di avere un percorso diverso sul tuo filesystem;
  • -e :data di scadenza. Utile quando si creano account per consulenti esterni che devono partire in una data specifica;
  • -g :per GID, questa opzione è impostata per avere un GID personalizzato per l'utente durante la creazione dell'account;
  • -G :per i gruppi supplementari, questa opzione è impostata per avere gruppi secondari assegnati all'utente per impostazione predefinita;
  • -M :per no-home, questa opzione viene utilizzata per impedire al sistema di creare una home directory per l'utente;
  • -r :per creare un account di sistema per l'utente;
  • -s :per shell, questa opzione viene utilizzata per personalizzare la shell assegnata all'utente di default (/bin/bash, /bin/nologin, /bin/false, /bin/sh e così via)
  • -u :per l'UID, analogamente all'opzione -g, viene utilizzata per personalizzare l'UID predefinito assegnato all'utente.

Ad esempio, puoi creare un account utente standard sul sistema.

$ useradd john

Puoi quindi dare un'occhiata alla home directory per verificare se è stata creata una voce per l'utente.

Come puoi vedere, per impostazione predefinita non è stata creata alcuna home directory per l'utente.

Per risolvere questo problema, specifichiamo l'opzione corretta e riproviamo.

$ useradd -m bob

Ora che il tuo utente è stato creato, dovrai assegnargli una password, altrimenti non sarà accessibile.

Modifica di una password utente su Linux

Per modificare una password utente su Linux , devi usare passwd con privilegi elevati.

$ sudo passwd <user>

Se prendiamo l'esempio dell'account che abbiamo creato in precedenza, eseguiremmo il comando seguente.

$ sudo passwd bob

Ora che la password dell'utente è impostata, puoi collegarti rapidamente all'account utente con il comando su.

$ su - <user>

Come puoi vedere, la shell fornita all'utente per impostazione predefinita è piuttosto speciale.

Non è una normale shell bash, infatti le è stata assegnata una shell completamente diversa chiamata dash shell (/bin/sh).

Perché?

Per impostazione predefinita, useradd utilizza un insieme predefinito di opzioni interamente personalizzabili sul tuo host.

Modifica delle impostazioni predefinite di useradd su Linux

Per controllare le diverse opzioni predefinite per il comando useradd, esegui il comando seguente

$ useradd -D

Puoi anche trovare lo stesso contenuto in /etc/default/useradd file sul tuo sistema.

Come puoi vedere, la shell predefinita è impostata su /bin/sh per impostazione predefinita.

Questo è esattamente il motivo per cui il nuovo utente aveva questa shell definita di default.

Per modificare le impostazioni predefinite, non dovresti direttamente il file predefinito sul tuo sistema.

Se si commettono errori durante il processo, si corre il rischio di non essere in grado di eseguire nuovamente il comando useradd.

Ad esempio, per modificare la shell predefinita utilizzata, dovresti eseguire

$ useradd -Ds /bin/bash

Scheletro della directory principale dell'utente

Se hai scelto di creare una home directory per il tuo utente, potresti aver notato che alcuni file sono disponibili in essa per impostazione predefinita.

Da dove provengono quei file?

Quando crei una home directory, il tuo sistema Linux copierà i file da una directory chiamata “skel ” sul tuo sistema che si trova in /etc .

Se dovessi dare un'occhiata ai file che si trovano in /etc/skel , avresti esattamente gli stessi file di una directory home predefinita

$ ls -al /etc/skel

Come probabilmente hai intuito, l'aggiunta di alcuni file a questa directory skel aggiungerà i file alle directory home predefinite sul tuo host. Può essere particolarmente utile quando devi aggiungere file README se hai regole personalizzate sul tuo server.

Rimozione di un account utente locale su Linux

Per rimuovere un account utente dal tuo sistema, devi usare il seguente comando

$ userdel <user>

Tuttavia, c'è una regola importante che devi sapere su userdel.

Il comando userdel non cancellerà la home directory così come i file di proprietà dell'utente sul sistema per impostazione predefinita.

Se i file o le directory sono ancora presenti nel sistema senza alcun utente, verranno contrassegnati con l'UID e GID precedenti dell'utente.

Per eliminare una home directory con l'utente, devi usare l'opzione -r.

$ userdel -r <user>

Questo non cancellerà i file che si trovano al di fuori della home directory.

Per trovare i file che si trovano al di fuori della home directory, eseguire il comando seguente.

$ find <path> -uid <uid> 

Cercando di trovare e individuare facilmente i file su Linux, leggi la guida!

Modifica di un account utente esistente su Linux

In alcuni casi, potresti voler modificare un account utente esistente sul tuo sistema.

Per modificare un utente , devi eseguire il comando usermod

$ usermod <option> <user>

Con usermod, hai molte opzioni diverse:

  • -c :per il commento, questo comando serve per modificare un commento associato ad un utente nel file passwd;
  • -d :home directory, usata per modificare la home directory predefinita per l'utente;
  • -g :utilizzato per modificare il gruppo utenti principale;
  • -a :per append, viene utilizzato per assegnare gruppi secondari a un utente aggiungendolo all'elenco di gruppi esistente per l'utente
  • -G :utilizzato per assegnare gruppi secondari a un utente (ad esempio un sudo o un gruppo ruota);
  • -L :utilizzato per bloccare l'account utente;
  • -U :utilizzato per sbloccare un account utente

Ad esempio, se vuoi aggiungere un utente al gruppo sudo, esegui

$ sudo usermod -aG sudo <user>

Ora che hai una comprensione più chiara dei comandi che puoi eseguire per aggiungere o eliminare utenti, vediamo alcuni file importanti relativi all'amministrazione degli utenti.

File password e shadow

Su Linux, ci sono due file principali relativi all'amministrazione degli utenti:il file /etc/passwd e il file /etc/shadow.

Comprendere il file passwd

Per impostazione predefinita, il file passwd mostra un elenco di tutti gli utenti disponibili localmente sul tuo sistema Linux.

Per avere questo elenco, esegui il seguente comando

$ cat /etc/passwd

Come puoi vedere, il file passwd è un file separato da due punti con più voci, una per ogni utente disponibile sul tuo sistema.

Da sinistra a destra, le colonne mostrano le seguenti informazioni:

  • Nome utente :il nome utente effettivo per l'utente sul sistema;
  • Password :avere una voce "x" significa semplicemente che la password è disponibile nel file shadow in un formato crittografato;
  • UID :l'ID utente univoco descritto in precedenza;
  • GID :l'ID del gruppo principale per l'utente (che potrebbe differire se lo hai personalizzato);
  • Commento:un commento descrittivo che potrebbe essere utile per identificare l'utente, questo campo è anche chiamato GECOS campo;
  • Home directory :se all'utente è stata assegnata una home directory, o un campo personalizzato, è qui che vengono memorizzate le informazioni;
  • Shell predefinita :la shell assegnata all'utente durante la sua creazione.

Se dovessi creare un nuovo utente con il comando useradd, una nuova voce verrebbe automaticamente aggiunta a questo file.

D'altra parte, il file shadow contiene informazioni più sensibili sul tuo sistema.

Comprendere il file shadow

Per avere un elenco del file shadow, assicurati di eseguire il comando come utente privilegiato

$ sudo cat /etc/shadow

Per impostazione predefinita, il file shadow mostra le seguenti colonne:

  • Nome utente :il nome utente effettivo per l'utente sul sistema;
  • Password :è qui che verrà memorizzata la password crittografata. Per impostazione predefinita, puoi trovare informazioni sul sistema di crittografia esaminando i primi tre caratteri (in questo caso, $6$ è una crittografia SHA-512);
  • L'ultima volta che è stata modificata la password :numero di giorni dal 1 gennaio 1970 all'ultima modifica della password. In questo caso, 18146 giorni danno il 7 settembre 2019;
  • Numero minimo di giorni tra le modifiche della password :indica il numero di giorni prima che un utente possa modificare la propria password;
  • Numero massimo di giorni per una password valida :il periodo massimo di validità di una password nel sistema;
  • Periodo di avviso :questa opzione definisce il numero di giorni prima della scadenza di una password affinché l'utente riceva un messaggio di avviso sul proprio account;
  • Periodo di inattività :alla scadenza della tua password, definisce il periodo prima che l'account venga disattivato;
  • Data di scadenza :definisce il numero di giorni trascorsi dal 1 gennaio 1980 prima della disattivazione dell'account.

Nota :un "!" o un "*" nella password significa che l'accesso utente è disabilitato sul sistema, poiché probabilmente hai a che fare con un account di sistema.

Ora che hai una comprensione più chiara della passwd e del file shadow, vediamo come puoi gestire l'invecchiamento delle password con i comandi.

Gestione dell'invecchiamento della password con modifica

Su Linux, il modo per modificare tutti i parametri che abbiamo visto prima è usare il comando chage.

$ chage <options> <user>

Dove le opzioni sono le seguenti:

  • -d :per l'ultimo giorno, questa opzione imposta il numero di giorni da quando è stata modificata la password per l'account utente;
  • -E :per scadenza :imposta la data di un numero (dal 1 gennaio 1970) in cui l'account utente non sarà più accessibile;
  • -Io :per inattivo, questa opzione imposta il numero di giorni di inattività prima che l'account utente venga disattivato sul sistema;
  • -m :per giorni min, imposta il numero di giorni prima di due modifiche consecutive della password. Se imposti questo valore a zero, significa che all'utente è consentita la sua password in qualsiasi momento;
  • -M :per max giorni, questa opzione imposta la validità massima di una password sul sistema. Questa è una delle opzioni che devi configurare con attenzione se imposti una buona politica della password sui tuoi host. Inoltre, se calcoli l'ultima modifica della password con l'opzione giorni massimi, troverai il giorno in cui l'utente deve modificare la password;
  • -W :per giorni di avviso :imposta il numero di giorni prima della scadenza della password in cui l'account utente riceverà un avviso per la scadenza della password.

Per avere un elenco completo delle politiche di password attive per il tuo account, devi eseguire il seguente comando

$ chage -l <user>

Come puoi vedere qui, mi vengono fornite tutte le voci relative alle opzioni specificate in precedenza.

In questo caso, ho cambiato la mia password il 12 ottobre 2019 e non sarò mai più costretto a cambiare la mia password. Tuttavia, queste opzioni possono essere facilmente modificate.

Forzare la modifica della password

Per impostare una modifica immediata della password per un utente sull'host, devi eseguire il seguente comando

$ chage -d 0 <user>

Come puoi vedere qui, la password utente dovrà essere modificata al prossimo accesso.

Prova ad accedere come utente per vedere che ti viene richiesto di cambiare la tua password.

$ su <user>

Quando cambi la tua password, potrai accedere al tuo account utente come prima.

Impostare facilmente una data di scadenza dell'account

Come descritto in precedenza, potresti essere in grado di modificare la data di scadenza dell'account con l'opzione -E.

Tuttavia, potrebbe essere difficile indovinare la data tra venti, trenta o ottanta giorni.

Per impostare la data di scadenza di un account tra cinquanta giorni , digita il seguente comando

$ date -d '+50days' +%F

Da lì, puoi facilmente impostare la data di scadenza su questo account.

$ chage -E <date> <user>

Impostazione della scadenza della password per un utente

Per impostare la scadenza della password per un utente, devi modificare il numero massimo di giorni prima che debba cambiare la sua password.

Per questo, devi usare l'opzione -M.

$ chage -M <days> <user>

Di conseguenza, la data di scadenza della password verrà impostata durante l'esecuzione del comando chage.

Blocco e sblocco di un account utente

In alcuni giorni, la scadenza della password semplicemente non è sufficiente.

Per motivi di sicurezza, potresti voler far scadere (o bloccare) un account utente completamente. Questo può essere utilizzato per impedire a un utente di accedere ai tuoi host quando non dovrebbe essere in grado di farlo.

Per bloccare un account utente, devi usare il comando usermod.

$ usermod -L <user>

Di conseguenza, l'utente non sarà in grado di connettersi all'account utente.

Per sbloccarlo, puoi usare il comando usermod con l'opzione -U.

Concessione di diritti privilegiati agli utenti

Su Linux, hai essenzialmente due modi per impostare i diritti privilegiati, ovvero sudo, sugli account utente.

Puoi usare il comando usermod per aggiungere utenti al gruppo sudo (su Debian) o al gruppo wheel (su Red Hat).

Per aggiungere rapidamente un utente a sudoers, esegui il comando seguente

$ sudo usermod -aG sudo <user>

O su Red Hat

$ sudo usermod -aG wheel <user>

Puoi anche modificare direttamente il file sudoers con il comando visudo.

Abbiamo già spiegato questi passaggi nei seguenti articoli:

  • Aggiunta di un utente a sudoers su Debian 10
  • Aggiunta di un utente a sudoer su RHEL 8 / CentOS 8

Conclusione

Nel tutorial di oggi, hai imparato di più sugli elementi essenziali dell'amministrazione degli utenti su Linux.

Hai appreso che puoi aggiungere, eliminare e modificare utenti e puoi anche modificare la politica della password per assicurarti di non lasciare falle di sicurezza nel tuo sistema.

Hai anche visto che puoi leggere file specifici sul filesystem per avere informazioni complete su utenti e gruppi.

Se stai cercando di elencare gli utenti su Linux, puoi leggere la seguente guida.

Inoltre, se sei curioso di conoscere l'amministrazione del sistema Linux, dovresti controllare tutte le guide che abbiamo già pubblicato in questa sezione.


Linux
  1. Che cos'è un utente Linux?

  2. Come creare più account utente in Linux

  3. Guida completa per l'utilizzo di AsciiDoc in Linux

  4. Installa Linux Mint 19 su VirtualBox:la guida completa

  5. Server Linux di amministrazione

Trova account utente con password vuota in Linux

Guida completa per installare OxygenOS su OnePlus One in Linux

Guida completa all'amministrazione degli utenti su Linux

Guida completa alla registrazione di Linux

Una guida completa per installare Tomcat su Linux

Comandi della directory Linux:una guida completa