Un comando per elencare tutti gli utenti? E come aggiungere, eliminare, modificare utenti?


856

Ho bisogno di un comando per elencare tutti gli utenti nel terminale. E come aggiungere, eliminare, modificare utenti dal terminale.

Ciò potrebbe aiutare ad amministrare facilmente i tuoi account tramite terminale.


3
sed rispostased 's/:.*//' /etc/passwd
Avinash Raj,

2
elenco utenti:awk -F: '{ print $1 }' /etc/passwd
saviour123

Risposte:


1143

Elencare

Per elencare tutti gli utenti locali è possibile utilizzare:

cut -d: -f1 /etc/passwd

Per elencare tutti gli utenti in grado di autenticarsi (in qualche modo), inclusi quelli non locali, vedere questa risposta .

Alcuni comandi di gestione degli utenti più utili (limitati anche agli utenti locali ):

Aggiungere

Per aggiungere un nuovo utente è possibile utilizzare:

sudo adduser new_username

o:

sudo useradd new_username

Vedi anche: Qual è la differenza tra adduser e useradd?

Per rimuovere / cancellare

Per rimuovere / eliminare un utente, è innanzitutto possibile utilizzare:

sudo userdel username

Quindi potresti voler eliminare la home directory per l'account utente eliminato:

sudo rm -r / home / nome utente

Si prega di utilizzare con cautela il comando sopra!

Modificare

Per modificare il nome utente di un utente:

usermod -l new_username old_username

Per modificare la password per un utente:

sudo passwd username

Per modificare la shell per un utente:

sudo chsh username

Per modificare i dettagli per un utente (ad esempio il nome reale):

sudo chfn username

Per aggiungere un utente al sudogruppo:

adduser username sudo

o

usermod -aG sudo username

E, naturalmente, si veda anche: man adduser, man useradd, man userdel... e così via.


12
Radu ha dimenticato di menzionare sudo chfn <username>quali modifiche ai dettagli dell'utente (ad esempio il nome reale). Ho provato ad aggiungere questo come commento, ma ho riscontrato un errore nel dirmi che devo avere +50 reputazione per farlo.
Mikaela,

2
Penso che dovrebbe essere sottolineato che la risposta corretta alla domanda collegata è askubuntu.com/a/381646/16395 --- altrimenti devi prendere in considerazione le politiche Ubuntu GID / UID a mano. La risposta accettata non è così chiara.
Rmano,

sudo userdel DOMAIN \\ johndoe mi dà l'errore: "userdel: impossibile rimuovere la voce 'DOMAIN \ johndoe' da / etc / passwd - Ho guardato in / etc / passwd e non sono nemmeno lì, probabilmente perché è un" dominio "account?
00fruX

1
@ 00fruX Sì ... Se stai utilizzando un database utenti centralizzato, dovrai occupartene direttamente.
Oli


87

Premi Ctrl+ Alt+ Tsulla tastiera per aprire Terminale. Quando si apre, esegui i seguenti comandi:

cat /etc/passwd

O

less /etc/passwd
more /etc/passwd

Puoi anche usare awk: awk

awk -F':' '{ print $1}' /etc/passwd

come aggiungere utenti per comando?
nux,

È possibile utilizzare il comando useradd .
Mitch

@nux Un po 'tardi alla festa, ma dall'uso della riga di comando adduser, useradddovrebbe essere limitato agli script in cui l'autore sa davvero cosa sta facendo.
flindeberg,

64

Il modo più semplice per ottenere questo tipo di informazioni è getent: consultare la manpage per il getentcomandoIcona Manpage . Mentre quel comando fornisce lo stesso output cat /etc/passwdche è utile ricordare perché ti darà elenchi di diversi elementi nel sistema operativo.

Per ottenere un elenco di tutti gli utenti digitati (poiché gli utenti sono elencati in /etc/passwd)

getent passwd

Per aggiungere un utente newuser al sistema è necessario digitare

sudo adduser newuser

per creare un utente a cui sono state applicate tutte le impostazioni predefinite.

Bonus: per aggiungere qualsiasi utente (ad esempio anyuser ) a un tipo di gruppo (ad esempio cdrom )

sudo adduser anyuser cdrom

Si elimina un utente (ad esempio obsoleto ) con

sudo deluser obsolete

Se vuoi cancellare anche la sua home directory / mail scrivi

sudo deluser --remove-home obsolete

E

sudo deluser --remove-all-files obsolete

rimuoverà l'utente e tutti i file di proprietà di questo utente sull'intero sistema.


8
È utile ricordare che getent non stampa solo l'output degli utenti in / etc / passwd ma tutti gli utenti in tutti i backend userdb configurati su un determinato sistema, che sia / etc / passwd o LDAP, ecc.
Marcin Kaminski,

@MarcinKaminski ha ragione, stampa anche l'installazione degli utenti nei sistemi SSO che hanno accesso al server. questa risposta è la migliore, con getent passwdil comando giusto
ulkas,

@MarcinKaminski da tutti enumerabili backend userdb
jrw32982


27

Ciò dovrebbe ottenere, nelle situazioni più normali , tutti gli utenti normali (non di sistema, non strani, ecc.):

awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd

Questo funziona da:

  • leggendo da /etc/passwd
  • usando :come delimitatore
  • se il terzo campo (il numero ID utente) è maggiore di 1000 e non 65534, viene stampato il primo campo (il nome utente dell'utente).

Questo perché su molti sistemi Linux, i nomi utente sopra 1000 sono riservati agli utenti non privilegiati (si potrebbe dire normali). Alcune informazioni su questo qui :

Un ID utente (UID) è un numero intero positivo univoco assegnato da un sistema operativo simile a Unix a ciascun utente. Ogni utente viene identificato nel sistema dal suo UID e i nomi utente vengono generalmente utilizzati solo come interfaccia per l'uomo.

Gli UID sono memorizzati, insieme ai rispettivi nomi utente e altre informazioni specifiche dell'utente, nel file / etc / passwd ...

Il terzo campo contiene l'UID e il quarto campo contiene l'ID gruppo (GID), che per impostazione predefinita è uguale all'UID per tutti gli utenti ordinari.

Nei kernel Linux 2.4 e versioni successive, gli UID sono numeri interi a 32 bit senza segno che possono rappresentare valori da zero a 4.294.967.296. Tuttavia, è consigliabile utilizzare solo valori fino a 65.534 al fine di mantenere la compatibilità con i sistemi che utilizzano kernel o filesystem meno recenti che possono contenere solo UID a 16 bit.

L'UID di 0 ha un ruolo speciale: è sempre l'account root (ovvero l'utente amministrativo onnipotente). Sebbene il nome utente possa essere modificato su questo account e sia possibile creare account aggiuntivi con lo stesso UID, nessuna azione è saggia dal punto di vista della sicurezza.

L'UID 65534 è comunemente riservato a nessuno, un utente senza privilegi di sistema, al contrario di un utente ordinario (cioè non privilegiato). Questo UID viene spesso utilizzato per le persone che accedono al sistema in remoto tramite FTP (protocollo di trasferimento file) o HTTP (protocollo di trasferimento ipertestuale).

Gli UID da 1 a 99 sono tradizionalmente riservati agli utenti di sistemi speciali (a volte chiamati pseudo-utenti), come wheel, daemon, lp, operator, news, mail, ecc. Questi utenti sono amministratori che non hanno bisogno di poteri di root totali, ma che svolgono alcune attività amministrative e quindi necessitano di più privilegi rispetto a quelli assegnati agli utenti ordinari.

Alcune distribuzioni Linux (ovvero versioni) iniziano UID per utenti non privilegiati a 100. Altri, come Red Hat, li iniziano a 500, e altri ancora, come Debian, li avviano a 1000. A causa delle differenze tra le distribuzioni, il manuale l'intervento può essere necessario se più distribuzioni sono utilizzate in una rete in un'organizzazione.

Inoltre, può essere conveniente riservare un blocco di UID per gli utenti locali, come da 1000 a 9999, e un altro blocco per gli utenti remoti (ad esempio, gli utenti in altri punti della rete), come da 10000 a 65534. L'importante è decidere su uno schema e aderire ad esso.

Tra i vantaggi di questa pratica di riservare blocchi di numeri per particolari tipi di utenti è che è più conveniente cercare nei registri di sistema attività sospette degli utenti.

Contrariamente alla credenza popolare, non è necessario che ogni voce nel campo UID sia unica. Tuttavia, gli UID non univoci possono causare problemi di sicurezza e pertanto gli UID devono essere mantenuti univoci nell'intera organizzazione. Allo stesso modo, il riciclaggio degli UID degli ex utenti dovrebbe essere evitato il più a lungo possibile.


1
Quasi una risposta perfetta, ma IMO è più pulito da usare getentinvece di leggere direttamente /etc/passwde cercare UID_MIN/ UID_MAXinvece di codificare i valori:getent passwd | awk -F: "{if (\$3 >= $(awk '/^UID_MIN/ {print $2}' /etc/login.defs) && \$3 <= $(awk '/^UID_MAX/ {print $2}' /etc/login.defs)) print \$1}"
Max Truxa

17

elenco di tutti gli utenti che possono accedere (nessun utente di sistema come: bin, deamon, mail, sys, ecc.)

awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow

aggiungi nuovo utente

sudo adduser new_username

o

sudo useradd new_username

elimina / rimuovi nome utente

sudo userdel username

Se si desidera eliminare la directory home (impostazione predefinita directory / home / nome utente)

sudo deluser --remove-home username

o

sudo rm -r /path/to/user_home_dir

Se si desidera eliminare tutti i file dal sistema da questo utente (non solo la directory home)

sudo deluser --remove-all-files

1
Forse dovresti spiegare la differenza tra addusere useradd. Un aggiunge anche sudo-prefix al primo comando. Il file shadow della password può essere letto solo come root.
s3lph,

1
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadowmi ha mostrato tutti gli utenti inclusi bin, demone, ecc. e ha lanciato questo avviso: sequenza escape \$' treated as plain $ 'Ho trovato questo post stackoverflow.com/a/25867768/847954 e ho aggiunto un altro backslash e ha funzionato bene:awk -F':' '$2 ~ "\\$" {print $1}' /etc/shadow
jeff musk

8

Ok, ecco un trucco che ti aiuterà a risolvere questo problema. Il terminale ha il completamento automatico se si digita l'utente e si preme due volte il tasto Tab che elencherà tutti i comandi esistenti con l'utente come i primi 4 caratteri.

user (tab tab)

mi dà le opzioni possibili useradd userdel usermod utenti users-admin
se vuoi saperne di più su un comando google o digita man man useradd dà useradd - crea un nuovo utente o aggiorna le informazioni predefinite di un nuovo utente ... ...

per elencare gli utenti dovresti andare con quello che ha detto Mitch.

Spero che mi aiuti ad amare il completamento delle schede in bash mi salva dal ricordare le cose.


6

Per scoprire gli utenti che hanno directory home nella cartella / home sul computer, eseguire i comandi seguenti

cd /home
ls 

È quindi possibile visualizzare gli utenti che dispongono dell'autorizzazione per accedere al server. Se vogliamo esaminare i file di tutti gli utenti, devi essere l'utente root.


8
Questo mostra solo il contenuto di /home. Mentre Ubuntu mette lì le directory degli utenti per impostazione predefinita, non è in alcun modo obbligatorio.
David Foerster,

ls /homepuò contenere anche directory utenti di utenti eliminati.
Suraj,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.