English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Gestione degli Utenti e dei Gruppi di Utenti di Linux

Il sistema operativo Linux è un sistema operativo a più utenti e a più compiti di tipo timesharing, e qualsiasi utente che desidera utilizzare le risorse del sistema deve prima chiedere un account all'amministratore di sistema e poi accedere al sistema con questo account.

L'account utente può aiutare l'amministratore di sistema a monitorare gli utenti che utilizzano il sistema e controllare l'accesso ai risorse del sistema; allo stesso tempo, può anche aiutare gli utenti a organizzare i file e fornire protezione della sicurezza.

Ogni account utente ha un nome utente unico e una password personale.

Dopo aver inserito il nome utente e la password corretti durante il login, l'utente può accedere al sistema e alla sua directory principale.

Per implementare la gestione degli account utente, è necessario completare i seguenti compiti principali:

  • Aggiunta, rimozione e modifica degli account utente.

  • Gestione delle password utente.

  • Gestione dei gruppi utente.

Prima sezione: gestione degli account utente del sistema Linux

La gestione degli account utente riguarda principalmente l'aggiunta, la modifica e la rimozione degli account utente.

Aggiungere un account utente significa creare un nuovo account nel sistema e assegnare risorse come il numero utente, il gruppo utente, la directory principale e lo Shell di login. Gli account appena aggiunti sono bloccati e non possono essere utilizzati.

1、Aggiungere un nuovo account utente utilizzando il comando useradd, la sintassi è la seguente:

useradd opzione nome utente

Spiegazione dei parametri:

  • Opzioni:

    • -c commento Specificare una descrizione descrittiva.

    • -d directory Specificare la directory principale dell'utente, se questa directory non esiste, utilizzare anche l'opzione -m per creare la directory principale.

    • -g gruppo utente Specificare il gruppo utente di appartenenza dell'utente.

    • -G gruppo, gruppo utente Specificare i gruppi aggiuntivi di appartenenza dell'utente.

    • -s file Shell Specificare il file Shell di login dell'utente.

    • -u numero utente Specificare il numero utente dell'utente, se è presente anche l'opzione -o, può essere utilizzato il numero identificativo di altri utenti.

  • Nome utente:

    Specificare il nome utente del nuovo account.

Esempio 1

# useradd –d  /home/sam -m sam

Questo comando ha creato un utente sam, tra cui le opzioni -d e -m vengono utilizzate per generare una directory principale per il nome utente sam  /home/sam(/home è il percorso del padre della directory principale utente predefinita).

Esempio 2

# useradd -s /bin/sh -g group –G adm,root gem

Questo comando ha creato un utente gem, che ha lo Shell di login /bin/sh, appartiene al gruppo utente group, e anche ai gruppi utente adm e root, dove il gruppo utente group è il gruppo principale.

Ecco come potrebbe essere creato un nuovo gruppo: #groupadd group e groupadd adm

Aggiungere un account utente significa aggiungere una registrazione per il nuovo utente nel file /etc/passwd e aggiornare altri file di sistema come /etc/shadow, /etc/group, ecc.

Linux fornisce lo strumento di gestione del sistema integrato userconf, che può essere utilizzato per gestire gli account utente in modo uniforme.

2、Eliminare l'account

Se un account utente non viene più utilizzato, può essere eliminato dal sistema. Eliminare l'account utente significa eliminare la registrazione dell'utente nei file di sistema come /etc/passwd e altri, e Necessarymente anche la directory principale dell'utente.

Eliminare un account utente esistente utilizzando il comando userdel, il formato è il seguente:

userdel opzione nome utente

Le opzioni comuni sono -r, che ha il ruolo di eliminare anche la directory principale dell'utente.

Ad esempio:

# userdel -r sam

Questo comando elimina la registrazione dell'utente sam nei file di sistema (principalmente /etc/passwd, /etc/shadow, /etc/group, ecc.) e elimina anche la directory principale dell'utente.

3、Modificare l'account

Modificare l'account utente significa modificare le proprietà correlate dell'utente in base alla situazione reale, come il numero utente, la directory principale, il gruppo utente, lo Shell di login, ecc.

Modificare le informazioni degli utenti esistenti utilizzando il comando usermod, il formato è il seguente:

usermod opzione nomeutente

Le opzioni comuni includono -c, -d, -m, -g, -G, -s, -u e -o, tra le quali il significato è lo stesso dell'opzione del comando useradd, può specificare nuovi valori di risorse per l'utente.

Inoltre, alcuni sistemi possono utilizzare l'opzione: -l nuovo nome utente

Questa opzione specifica un nuovo account, ovvero cambia il nome utente originale in un nuovo nome utente.

Ad esempio:

# usermod -s /bin/ksh -d /home/z –g developer sam

Questa comando modifica il login Shell dell'utente sam in ksh, il percorso principale diventa /home/z, il gruppo diventa developer.

4、Gestione delle password degli utenti

Una parte importante della gestione degli utenti è la gestione delle password degli utenti. Quando viene creato un account utente, non c'è una password, ma è bloccato dal sistema e non può essere utilizzato. È necessario specificare una password per poter essere utilizzato, anche se è una password vuota.

Il comando Shell utilizzato per specificare e modificare le password degli utenti è passwd. Il superutente può specificare le password per sé stesso e altri utenti, mentre l'utente comune può solo usarlo per modificare la propria password. La forma del comando è:

passwd opzione nomeutente

Opzioni disponibili:

  • -l Blocca la password, ovvero disabilita l'account.

  • -u sblocca la password.

  • -d Rende l'account senza password.

  • -f Obbliga l'utente a modificare la password la prossima volta che accede.

Se non viene specificato il nome utente predefinito, viene modificata la password dell'utente corrente.

Ad esempio, supponiamo che l'utente corrente sia sam, quindi il seguente comando modifica la password dell'utente sam:

$ passwd 
Vecchia password:****** 
Nuova password:******* 
Riinserisci la nuova password:*******

Se si è il superutente, è possibile specificare la password di qualsiasi utente con la seguente forma:

# passwd sam 
Nuova password:******* 
Riinserisci la nuova password:*******

Quando un utente comune modifica la propria password, il comando passwd chiede prima la password originale per verificare, poi richiede all'utente di inserire due volte la nuova password; se le due password inserite sono le stesse, questa password viene assegnata all'utente; mentre il superutente, quando assegna una password agli utenti, non deve sapere la password originale.

Per motivi di sicurezza del sistema, l'utente dovrebbe scegliere una password complessa, ad esempio meglio utilizzare una password di lunghezza di 8 caratteri, che contenga lettere maiuscole, minuscole e numeri, e dovrebbe essere diversa dal nome, dalla data di nascita e così via.

Quando si specifica una password vuota per un utente, eseguire il comando nella seguente forma:

# passwd -d sam

Questa comando elimina la password dell'utente sam, quindi il sistema non permetterà all'utente sam di accedere la prossima volta che si connette.

Il comando passwd può anche essere utilizzato con l'opzione -l (blocco) per bloccare un utente specifico, impedendogli di accedere, ad esempio:

# passwd -l sam

Secondo, la gestione dei gruppi utente nel sistema Linux

Ogni utente ha un gruppo utente, il sistema può gestire tutti gli utenti di un gruppo utente in modo centralizzato. I sistemi Linux differiscono nell'indicazione dei gruppi utente, come nel Linux, l'utente appartiene al gruppo utente con lo stesso nome, che viene creato contemporaneamente al creazione dell'utente.

La gestione del gruppo utente coinvolge l'aggiunta, la rimozione e la modifica dei gruppi utente. L'aggiunta, la rimozione e la modifica dei gruppi in realtà sono aggiornamenti del file /etc/group.

1、Aggiungi un nuovo gruppo utente utilizzando il comando groupadd. La sua forma è la seguente:

groupadd opzione gruppo utente

Opzioni disponibili includono:

  • -g GID specifica l'ID identificativo del gruppo (GID) del nuovo gruppo utente.

  • -o di solito viene utilizzato insieme all'opzione -g, significa che il GID del nuovo gruppo utente può essere lo stesso del GID di un altro gruppo utente esistente nel sistema.

Esempio 1:

# groupadd group1

Questo comando aggiunge un nuovo gruppo group1 al sistema, l'ID identificativo del nuovo gruppo è 1 più grande dell'ID identificativo del gruppo più grande esistente.

Esempio 2:

# groupadd –g 101 group2

Questo comando aggiunge un nuovo gruppo group2 al sistema, contemporaneamente specificando che l'ID identificativo del gruppo è 101.

2、Per eliminare un gruppo utente esistente, utilizzare il comando groupdel, la sua forma è la seguente:

groupdel gruppo utente

Ad esempio:

# groupdel group1

Questo comando elimina il gruppo group1 dal sistema.

3、Modifica le proprietà del gruppo utente utilizzando il comando groupmod. La sintassi è la seguente:

groupmod opzione gruppo utente

Opzioni comuni includono:

  • -g GID assegna un nuovo ID identificativo di gruppo al gruppo utente.

  • -o può essere utilizzato insieme all'opzione -g, il nuovo GID del gruppo utente può essere lo stesso del GID di un altro gruppo utente esistente nel sistema.

  • -n nuovo gruppo utente cambia il nome del gruppo utente in un nuovo nome

Esempio 1:

# groupmod –g 102 group2

Questo comando cambia l'ID identificativo del gruppo group2 in 102.

Esempio 2:

# groupmod –g 10000 –n group3 group2

Questo comando cambia l'ID identificativo del gruppo group2 in 10000 e modifica il nome del gruppo in group3.

4、Se un utente appartiene a più gruppi utente, può passare da un gruppo utente all'altro per avere i permessi di altri gruppi utente.

L'utente può utilizzare il comando newgrp per passare a un altro gruppo utente dopo il login, il parametro del comando è il gruppo utente di destinazione. Ad esempio:

$ newgrp root

Questo comando cambia l'utente corrente al gruppo di utenti root, a condizione che il gruppo di utenti root sia il gruppo principale o aggiuntivo dell'utente. Allo stesso modo della gestione dell'account utente, la gestione del gruppo utente può essere completata tramite gli strumenti di gestione del sistema integrati.

Terza sezione: File di sistema relativi agli account utente

Ci sono molte modalità per completare il lavoro di gestione degli utenti, ma in effetti, ogni metodo modifica i file di sistema pertinenti.

Le informazioni relative agli utenti e ai gruppi utente sono memorizzate in alcuni file di sistema, tra cui /etc/passwd, /etc/shadow, /etc/group.

Di seguito, esamineremo il contenuto di questi file.

1. Il file /etc/passwd è uno dei file più importanti coinvolti nella gestione degli utenti.

Ogni utente del sistema Linux ha una riga corrispondente nel file /etc/passwd, che registra alcune proprietà di base dell'utente.

Questo file è leggibile da tutti gli utenti. Il suo contenuto è simile al seguente esempio:

# cat /etc/passwd
root:x:0:0:Superutente:/:
daemon:x:1:1:Demone di sistema:/etc:
bin:x:2:2:Proprietario dei comandi di sistema:/bin:
sys:x:3:3:Proprietario dei file di sistema:/usr/sys:
adm:x:4:4:Contabilità di sistema:/usr/adm:
uucp:x:5:5:Amministratore UUCP:/usr/lib/uucp:
auth:x:7:21:Amministratore di autenticazione:/tcb/files/auth:
cron:x:9:16:Demone Cron:/usr/spool/cron:
listen:x:37:4:Demone di rete:/usr/net/nls:
lp:x:71:18:Amministratore stampante:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh

Dall'esempio sopra, possiamo vedere che ogni riga di /etc/passwd corrisponde a un utente, ogni riga è separata da due punti (:) in 7 campi, il formato e il significato specifici sono come segue:

Nome utente:parola d'ordine:identificatore utente:identificatore gruppo:descrizione commento:directory principale:Shell di login

1) "Nome utente" è una stringa che rappresenta l'account utente.

Di solito non supera i 8 caratteri e è composto da lettere maiuscole e/ou minuscole e/ou numeri. Il nome utente non può contenere due punti (:) perché qui sono i separatori.

Per la compatibilità, è meglio che il nome utente non contenga il carattere punto (.) e non utilizzi trattini (-) e plus (+) all'inizio.

2) La "password" in alcuni sistemi contiene la stringa di crittografia della password dell'utente.

Anche se questo campo contiene solo la stringa di crittografia della password dell'utente, non il testo chiaro, poiché il file /etc/passwd è leggibile da tutti gli utenti, quindi è una potenziale sicurezza. Pertanto, molti sistemi Linux (come SVR4) utilizzano la tecnologia shadow, archiviando la password crittografata effettiva nel file /etc/shadow, e nel campo delle password del file /etc/passwd viene memorizzato un carattere speciale, ad esempio "x" o "*".

3) Il "numero di identificatore dell'utente" è un intero utilizzato dal sistema interno per identificare l'utente.

Di solito è corrispondente al nome utente. Se diversi nomi utente corrispondono allo stesso numero di identificatore utente, il sistema interno li considera come lo stesso utente, ma possono avere diverse password, diverse directory principali e diversi Shell di login.

Di solito, l'intervallo di valori del numero di identificatore dell'utente è 0-65 535. 0 è l'identificatore dell'utente superuser root, 1-99 sono riservati dal sistema come account di gestione, e l'identificatore dell'utente comune parte da 100. Nel sistema Linux, questo limite è 500.

4) Il campo "identificatore di gruppo" registra il gruppo di appartenenza dell'utente.

Corrisponde a una registrazione nel file /etc/group.

5) Il campo "descrittivo" registra alcune informazioni personali dell'utente.

Ad esempio, il nome reale dell'utente, il numero di telefono, l'indirizzo e così via, questo campo non ha alcun uso pratico. Nei diversi sistemi Linux, il formato di questo campo non è uniforme. In molti sistemi Linux, questo campo contiene un testo descrittivo casuale, utilizzato come output del comando finger.

6) La "directory principale" è anche detta directory di lavoro iniziale dell'utente.

È la directory in cui si trova l'utente dopo aver effettuato il login nel sistema. Nella maggior parte dei sistemi, le directory principali degli utenti sono organizzate nella stessa directory specifica, e il nome della directory principale dell'utente è il nome di login dell'utente. Gli utenti hanno i permessi di lettura, scrittura ed esecuzione (ricerca) per la loro directory principale, mentre l'accesso degli altri utenti a questa directory è configurato in base alla具体情况.

7) Dopo il login dell'utente, deve essere avviato un processo responsabile di trasmettere le operazioni dell'utente al kernel, questo processo è l'interprete dei comandi o un programma specifico che viene eseguito dopo il login dell'utente nel sistema, ossia il Shell.

Shell è l'interfaccia tra l'utente e il sistema Linux. Shell di Linux sono molte, ognuna con caratteristiche diverse. Tra i più comuni ci sono sh (Bourne Shell), csh (C Shell), ksh (Korn Shell), tcsh (TENEX/TOPS-20 type C Shell), bash (Bourne Again Shell) e così via.

L'amministratore di sistema può assegnare una shell specifica agli utenti in base alla situazione del sistema e alle abitudini degli utenti. Se non viene specificata la shell, il sistema utilizza sh come shell di login predefinita, ovvero il valore di questo campo è /bin/sh

La shell di login dell'utente può anche essere specificata come un programma specifico (questo programma non è un interprete di comando)

Utilizzando questa caratteristica, possiamo limitare l'utente a eseguire solo applicazioni specifiche, e l'utente viene automaticamente disconnesso dal sistema alla fine dell'esecuzione dell'applicazione. Alcuni sistemi Linux richiedono che solo i programmi registrati nel sistema possano apparire in questo campo

8) C'è una categoria di utenti chiamati utenti pseudo (pseudo users)

Questi utenti hanno anche una registrazione nel file /etc/passwd, ma non possono accedere perché la loro shell di login è vuota. La loro esistenza è principalmente per facilitare la gestione del sistema e soddisfare i requisiti dei processi di sistema per il proprietario del file

Gli utenti pseudo comuni sono elencati di seguito:

Significato degli utenti pseudo 
bin Ha i file di comandi eseguibili dell'utente 
sys Ha i file di sistema 
adm Ha i file di account 
uucp Utilizzato da UUCP 
lp Utilizzato dal sottosistema lp o lpd 
nobody Utilizzato da NFS

Ha i file di account

1) Oltre agli utenti pseudoelencati sopra, ci sono molti utenti standard pseudo, come ad esempio: audit, cron, mail, usenet, che sono necessari per i relativi processi e file

Poiché il file /etc/passwd è leggibile da tutti gli utenti, se la password dell'utente è troppo semplice o se la sequenza è chiaramente evidente, un computer comune può facilmente decifrare la password. Pertanto, i sistemi Linux che richiedono un'alta sicurezza separano la versione criptata della password e la conservano in un file separato, che è il file /etc/shadow Solo gli utenti superuser possono leggere il file, il che garantisce la sicurezza delle password degli utenti

2) La riga dei record in /etc/shadow corrisponde alla riga in /etc/passwd, viene generata automaticamente dal comando pwconv in base ai dati di /etc/passwd

Il formato del file è simile a /etc/passwd, composto da vari campi, separati da ":". Questi campi sono:

Nome utente: password criptata: ultima modifica: intervallo minimo: intervallo massimo: tempo di avviso: tempo inattivo: data di scadenza: flag
  • "Nome utente" è identico al nome utente nel file /etc/passwd

  • "口令" campo contiene la versione criptata della password dell'utente, lunga 13 caratteri. Se è vuoto, corrisponde a un utente senza password, non è necessario inserire la password durante il login; se contiene caratteri che non appartengono alla集合 { ./0-9A-Za-z }, l'utente non può accedere.

  • Il campo "Ultima modifica" indica il numero di giorni dal momento in cui l'utente ha modificato l'ultima password. Il punto di partenza può variare da sistema a sistema. Ad esempio, in SCO Linux, il punto di partenza è il 1 gennaio 1970.

  • Il campo "Minimo intervallo di tempo" indica il numero minimo di giorni richiesti tra due modifiche della password.

  • Il campo "Massimo intervallo di tempo" indica il numero massimo di giorni per cui la password rimane valida.

  • Il campo "Tempo di avviso" indica il numero di giorni tra il momento in cui il sistema avvisa l'utente e la scadenza ufficiale della password.

  • Il campo "Tempo di inattività" indica il numero massimo di giorni per cui l'utente non ha avuto attività di login ma l'account rimane valido.

  • Il campo "Data di scadenza" indica un numero di giorni assoluti, se utilizzato, indica la durata di vita dell'account corrispondente. Alla scadenza, l'account non è più valido e non può essere utilizzato per il login.

  • Di seguito è riportato un esempio di /etc/shadow:

    # cat /etc/shadow
    root:Dnakfw28zf38w:8764:0:168:7:::
    daemon:*::0:0::::
    bin:*::0:0::::
    sys:*::0:0::::
    adm:*::0:0::::
    uucp:*::0:0::::
    nuucp:*::0:0::::
    auth:*::0:0::::
    cron:*::0:0::::
    listen:*::0:0::::
    lp:*::0:0::::
    sam:EkdiSECLWPdSa:9740:0:0::::

    3. Tutte le informazioni sui gruppi utente sono memorizzate nel file /etc/group.

    Il raggruppamento degli utenti è uno strumento di gestione degli utenti e di controllo degli accessi nel sistema Linux.

    Ogni utente appartiene a un gruppo utente; un gruppo può avere più utenti, e un utente può appartenere a più gruppi.

    Quando un utente è membro di più gruppi, il gruppo principale registrato nel file /etc/passwd è il gruppo di default al momento del login, mentre gli altri gruppi sono chiamati gruppi aggiuntivi.

    Quando un utente deve accedere ai file di un gruppo aggiuntivo, deve prima utilizzare il comando newgrp per diventare membro del gruppo da accedere.

    Tutte le informazioni sui gruppi utente sono memorizzate nel file /etc/group. Il formato di questo file è simile a quello del file /etc/passwd, separato da due punti (:), e i campi sono i seguenti:

    Nome del gruppo: password: ID del gruppo: elenco degli utenti del gruppo
  • "Nome del gruppo" è il nome del gruppo utente, composto da lettere o numeri. Come il nome di accesso in /etc/passwd, il nome del gruppo non dovrebbe essere ripetuto.

  • "Password" campo contiene la parola chiave criptata dell'utente del gruppo. Di solito, i gruppi di utenti del sistema Linux non hanno password, quindi questo campo è generalmente vuoto o è *.

  • "ID del gruppo" è simile all'ID utente, è un intero utilizzato dal sistema interno per identificare il gruppo.

  • "Lista utenti del gruppo" è la lista di tutti gli utenti di questo gruppo /b],e gli utenti sono separati da virgole (,). Questo gruppo utente può essere il gruppo principale dell'utente o un gruppo aggiuntivo.

  • Ecco un esempio reale del file /etc/group:

    root::0:root
    bin::2:root,bin
    sys::3:root,uucp
    adm::4:root,adm
    daemon::5:root,daemon
    lp::7:root,lp
    users::20:root,sam

    Quattro: Aggiungi utenti in massa

    Aggiungere e rimuovere utenti è un compito semplice per ogni amministratore di sistema Linux, ma può diventare complicato quando devi aggiungere decine, centinaia o persino migliaia di utenti. Non è probabile che tu debba usare useradd per aggiungere uno per uno, quindi è necessario trovare un metodo semplice per creare un gran numero di utenti. Il sistema Linux offre strumenti per creare utenti in massa, che ti permettono di creare immediatamente un gran numero di utenti, come segue:

    (1) Prima di tutto, edita un file di testo utente.

    Ogni colonna deve essere scritta secondo il formato del file di password /etc/passwd. Devi notare che il nome utente, l'UID e la directory utente di ogni utente non possono essere uguali, mentre la sezione della password può essere lasciata vuota o inserire il numero x. Ecco un esempio di contenuto del file user.txt:

    user001::600:100:user:/home/user001:/bin/bash
    user002::601:100:user:/home/user002:/bin/bash
    user003::602:100:user:/home/user003:/bin/bash
    user004::603:100:user:/home/user004:/bin/bash
    user005::604:100:user:/home/user005:/bin/bash
    user006::605:100:user:/home/user006:/bin/bash

    (2) Esegui il comando /usr/sbin/newusers come root per importare i dati dal file utente creato user.txt e creare utenti:

    # newusers < user.txt

    Poi puoi eseguire il comando vipw o vi /etc/passwd per verificare se il file /etc/passwd contiene già i dati degli utenti e se sono stati creati i directory utente.

    (3) Esegui il comando /usr/sbin/pwunconv.

    Decodifica le password shadow generate da /etc/shadow, quindi scrivile indietro in /etc/passwd e elimina la colonna delle password shadow di /etc/shadow. Questo è per facilitare il lavoro di conversione delle password successivo, ossia disabilitare la funzione shadow password.

    # pwunconv

    (4) Modifica il file di corrispondenza delle password di ciascun utente.

    Il formato è:

    Nome utente:Password

    Il contenuto dell'esempio del file passwd.txt è il seguente:

    user001:123456
    user002:123456
    user003:123456
    user004:123456
    user005:123456
    user006:123456

    (5) Esegui il comando /usr/sbin/chpasswd come root.

    Crea la password dell'utente, chpasswd scriverà la password codificata tramite il comando /usr/bin/passwd nella colonna delle password di /etc/passwd.

    # chpasswd < passwd.txt

    (6) Dopo che la password è stata codificata e scritta nella colonna delle password di /etc/passwd.

    Esegui il comando /usr/sbin/pwconv per codificare le password come password shadow e scrivere i risultati in /etc/shadow.

    # pwconv

    Così è stato completato la creazione di un gran numero di utenti, dopo di che puoi controllare i permessi delle directory degli utenti宿 in /home per vedere se sono impostati correttamente e accedere per verificare se la password degli utenti è corretta.