Aggiungere un utente è uno degli esercizi più fondamentali su qualsiasi sistema informatico; questo articolo si concentra su come farlo su un sistema Linux.
Prima di iniziare, voglio menzionare tre fondamentali da tenere a mente. In primo luogo, come con la maggior parte dei sistemi operativi, gli utenti Linux hanno bisogno di un account per essere in grado di accedere. Questo articolo riguarda specificamente gli account locali, non gli account di rete come LDAP. In secondo luogo, gli account hanno sia un nome (chiamato nome utente) che un numero (chiamato ID utente). In terzo luogo, gli utenti sono in genere inseriti in un gruppo. I gruppi hanno anche un nome e un ID di gruppo.
Come ci si aspetterebbe, Linux include un’utilità da riga di comando per l’aggiunta di utenti; si chiama useradd. Si può anche trovare il comando adduser. Molte distribuzioni hanno aggiunto questo collegamento simbolico al comando useradd per comodità.
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
Diamo un’occhiata a useradd.
Nota: i valori predefiniti descritti in questo articolo riflettono quelli di Red Hat Enterprise Linux 8.0. Si possono trovare sottili differenze in questi file e alcuni valori predefiniti su altre distribuzioni Linux o altri sistemi operativi Unix come FreeBSD o Solaris.
Comportamento predefinito
L’utilizzo di base di useradd è abbastanza semplice: un utente può essere aggiunto semplicemente fornendo il proprio nome utente.
$ sudo useradd sonny
In questo esempio, il comando useradd crea un account chiamato sonny. Viene creato anche un gruppo con lo stesso nome e sonny viene inserito in esso per essere utilizzato come gruppo primario. Ci sono altri parametri, come la lingua e la shell, che vengono applicati in base ai valori predefiniti e ai valori impostati nei file di configurazione /etc/default/useradd e /etc/login.defs. Questo è generalmente sufficiente per un singolo sistema personale o un piccolo ambiente aziendale con un solo server.
Mentre i due file sopra governano il comportamento di useradd, le informazioni dell’utente sono memorizzate in altri file che si trovano nella directory / etc, a cui farò riferimento in questo articolo.
File | Descrizione | Campi (in grassetto—set da useradd) |
---|---|---|
passwd | Memorizza i dettagli dell’account utente | nome utente:inutilizzati:uid:gid:commento:homedir:shell |
shadow | Negozi di account utente di dati di sicurezza | nome utente:password:lastchange:minimo:massimo:warn:inattivo:scadenza:inutilizzati |
gruppo | Negozi gruppo dettagli | nome:inutilizzati:gid:membri |
Comportamento personalizzabile
La riga di comando consente la personalizzazione per i momenti in cui un amministratore ha bisogno di un controllo più preciso, ad esempio per specificare il numero ID di un utente.
Numeri ID utente e gruppo
Per impostazione predefinita, useradd tenta di utilizzare lo stesso numero per l’ID utente (UID) e l’ID gruppo primario (GID), ma non ci sono garanzie. Anche se non è necessario che UID e GID corrispondano, è più facile per gli amministratori gestirli quando lo fanno.
Ho solo lo scenario da spiegare. Supponiamo di aggiungere un altro account, questa volta per Timmy. Confrontando i due utenti, sonny e timmy, mostra che sia gli utenti che i rispettivi gruppi primari sono stati creati utilizzando il comando getent.
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
Sfortunatamente, né l’UID degli utenti né il GID primario corrispondono. Questo perché il comportamento predefinito consiste nell’assegnare il prossimo UID disponibile all’utente e quindi tentare di assegnare lo stesso numero al gruppo principale. Tuttavia, se tale numero è già utilizzato, il prossimo GID disponibile viene assegnato al gruppo. Per spiegare cosa è successo, ipotizzo che un gruppo con GID 1001 esista già e inserisci un comando per confermare.
$ getent group 1001
book:x:1001:alan
Il libro di gruppo con l’ID 1001 ha causato la disattivazione dei GID di uno. Questo è un esempio in cui un amministratore di sistema avrebbe bisogno di prendere più controllo del processo di creazione dell’utente. Per risolvere questo problema, devo prima determinare il prossimo ID utente e gruppo disponibile che corrisponderà. I comandi getent group e getent passwd saranno utili per determinare il prossimo numero disponibile. Questo numero può essere passato con l’argomento-U.
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
Un altro buon motivo per specificare l’ID è per gli utenti che accedono ai file su un sistema remoto utilizzando il Network File System (NFS). NFS è più facile da amministrare quando tutti i sistemi client e server hanno lo stesso ID configurato per un determinato utente. Copro questo in un po ‘ più in dettaglio nel mio articolo sull’utilizzo di autofs per montare condivisioni NFS.
Più personalizzazione
Molto spesso, però, altri parametri di account devono essere specificati per un utente. Ecco alcuni brevi esempi delle personalizzazioni più comuni che potrebbe essere necessario utilizzare.
Commento
L’opzione commento è un campo di testo semplice per fornire una breve descrizione o altre informazioni utilizzando l’argomento-C.
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
Gruppi
A un utente può essere assegnato un gruppo primario e più gruppi secondari. L’argomento-g specifica il nome o GID del gruppo primario. Se non è specificato, useradd crea un gruppo primario con lo stesso nome dell’utente (come dimostrato sopra). L’argomento-G (maiuscolo) viene utilizzato per passare un elenco separato da virgole di gruppi in cui l’utente verrà inserito; questi sono noti come gruppi secondari.
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
Home directory
Il comportamento predefinito di useradd è quello di creare la home directory dell’utente in / home. Tuttavia, diversi aspetti della directory home possono essere sovrascritti con i seguenti argomenti. Il-b imposta un’altra directory in cui è possibile posizionare le case degli utenti. Ad esempio, /home2 invece del default / home.
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
Il-d consente di specificare una directory home con un nome diverso dall’utente.
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
La directory skeleton
Il-k indica alla nuova directory home del nuovo utente di essere popolata con qualsiasi file nella directory/etc / skel. Questi sono solitamente file di configurazione della shell, ma possono essere qualsiasi cosa che un amministratore di sistema vorrebbe rendere disponibile a tutti i nuovi utenti.
Shell
L’argomento-s può essere usato per specificare la shell. Il valore predefinito viene utilizzato se non viene specificato altro. Ad esempio, nel seguito, shell bash è definito nel file di configurazione predefinito, ma Wally ha richiesto zsh.
$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
Sicurezza
La sicurezza è una parte essenziale della gestione degli utenti, quindi ci sono diverse opzioni disponibili con il comando useradd. A un account utente può essere data una data di scadenza, nella forma AAAA-MM-GG, utilizzando l’argomento-E.
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
Un account può anche essere disabilitato automaticamente se la password scade. L’argomento-f imposterà il numero di giorni dopo la scadenza della password prima che l’account venga disabilitato. Zero è immediato.
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
Un esempio reale
In pratica, molti di questi argomenti possono essere utilizzati quando si crea un nuovo account utente. Ad esempio, se ho bisogno di creare un account per Perry, potrei usare il seguente comando:
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
Fare riferimento alle sezioni sopra per capire ogni opzione. Verificare i risultati con:
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
Alcuni consigli finali
Il comando useradd è un “must-know” per qualsiasi amministratore Unix (non solo Linux). È importante comprendere tutte le sue opzioni poiché la creazione dell’utente è qualcosa che si desidera ottenere la prima volta. Ciò significa avere una convenzione di denominazione ben congegnata che include un intervallo UID/GID dedicato riservato agli utenti in tutta l’azienda, non solo su un singolo sistema, in particolare quando si lavora in un’organizzazione in crescita.