Come faccio a stampare i nomi degli utenti attualmente connessi all’host/server UNIX / Linux corrente da un prompt dei comandi?
È necessario utilizzare uno dei seguenti strumenti a riga di comando per elencare gli utenti attualmente connessi su Linux o sistemi Unix-like.

Dettagli del tutorial
Difficoltà livello Facile
Privilegi di root
Requisiti w o il comando who su Linux e Unix
Tempo stimato di lettura Sì tempo di lettura 5m

I seguenti due file mantengono i record di login su Linux e sistemi Unix-like:

  • /var/run/utmp – Mantiene e permette di scoprire informazioni su chi sta attualmente utilizzando il sistema. Si prega di notare che ci possono essere più utenti Linux e Unix che stanno attualmente utilizzando il sistema, perché non tutti i programmi utilizzano il logging utmp. In altre parole, app scritte male, programmi nascosti, malware e altre cose cattive non saranno utili per elencare gli utenti loggati.
  • /var/log/wtmp – Registra tutti i login e i logout.

Non possiamo semplicemente leggere questi file usando il comando cat/grep/egrep poiché il file è in formato database binario. Quindi, usiamo i seguenti comandi per trovare gli utenti attualmente loggati in Linux e nei sistemi Unix-like.

Comando Linux per elencare gli utenti attualmente loggati

  1. comando w – Mostra informazioni sugli utenti attualmente sulla macchina, e sui loro processi.
  2. comando who – Mostra informazioni sugli utenti che sono attualmente loggati.
  3. comando users – Vede i nomi di login degli utenti attualmente sul sistema, in ordine ordinato, separati da spazio, su una singola linea. Legge tutte le informazioni dal file /var/run/utmp.

Come trovare gli utenti attualmente loggati in Linux

Apri un terminale (o accedi al server remoto usando il comando ssh) e digita i seguenti comandi.

Usare il comando w per elencare gli utenti attualmente loggati sotto Unix o Linux

Aprire l’applicazione terminale e poi digitare il comando w:
$ w

Fig.01: comando w in azione.

Fig.01: comando w in azione.

Comprensione degli output del comando w

Dalla Fig.01 vediamo quanto segue per ogni utente:

  • USER – Nome di login Linux o Unix.
  • TTY – Il nome della tty.
  • FROM L’host remoto o indirizzo IP.
  • @Login – Tempo di login.
  • IDEL – Tempo di inattività.
  • JCPU – Il tempo JCPU è il tempo utilizzato da tutti i processi collegati alla tty. Tuttavia, non include i lavori in background passati, ma include i lavori in background attualmente in esecuzione.
  • PCPU – Il tempo PCPU è il tempo utilizzato dal processo corrente, nominato nel campo “what”.
  • WHAT – La linea di comando del processo corrente dell’utente.

Per vedere le informazioni su un utente chiamato tom, inserire:
$ w tom
Direte al comando w non stampare l’intestazione:
$ w -h
$ w --no-header

Possiamo anche ignorare il nome utente del processo corrente passando il -u o –no-current al comando w:
$ w -u
$ w --no-current

Vuoi vedere il campo hostname remoto? Provate:
$ w -f
Mostra l’indirizzo IP invece dell’hostname per il campo from:
$ w -i
Possiamo anche un output vecchio stile. In altre parole i vecchi output stampano uno spazio vuoto per tempi di inattività inferiori a un minuto:
$ w -o

Visualizzare tutti gli utenti connessi usando il comando who

Il comando who funziona su tutti i sistemi operativi Unix come macOS, *BSD, Linux e così via. La sintassi è abbastanza semplice:
# who
Ecco cosa vediamo:

root pts/0 2013-03-12 15:10 (10.1.3.177)

Il comando who visualizza le seguenti informazioni:

  • root – Il nome utente
  • pts/0 – Tipo di terminale. In questo esempio, vediamo lo pseudoterminale pts/0 usato dall’utente root.
  • 2013-03-12 15:10 – Data e ora di login dell’utente.
  • (10.1.3.177) – L’indirizzo IP remoto da cui l’utente si è collegato a questo server.

Possiamo passare l’opzione -a al comando who come segue per vedere l’ora dell’ultimo avvio del sistema, visualizzare i processi morti, i processi di accesso al sistema, i processi attivi generati da init/systemd, stampare il runlevel corrente, stampare l’ultimo cambiamento dell’orologio di sistema, mostrare lo stato dei messaggi dell’utente, ed elencare gli utenti che hanno effettuato l’accesso a Linux o Unix box:
# who -a
Ecco l’output di un vecchio sistema Linux (pre Systemd):

 system boot 2013-03-02 04:10 run-level 3 2013-03-02 04:10LOGIN /dev/ttyS1 2013-03-02 04:11 7951 id=v/ttLOGIN tty2 2013-03-02 04:11 7953 id=2LOGIN tty1 2013-03-02 04:11 7950 id=1LOGIN tty3 2013-03-02 04:11 7955 id=3LOGIN tty4 2013-03-02 04:11 7957 id=4LOGIN tty5 2013-03-02 04:11 7959 id=5LOGIN tty6 2013-03-02 04:11 7961 id=6root + pts/0 2013-03-12 15:10 . 7451 (10.1.3.177) pts/1 2013-03-08 12:29 23510 id=ts/1 term=0 exit=0

Un esempio di output da un sistema Linux basato su Systemd:

Come trovare gli utenti attualmente loggati in LINUX

Per ottenere aiuto con il comando whois

È possibile passare le seguenti opzioni al comando who (prese dalla pagina man del comando who):

Just open a -a, --all same as -b -d --login -p -r -t -T -u -b, --boot time of last system boot -d, --dead print dead processes -H, --heading print line of column headings -l, --login print system login processes --lookup attempt to canonicalize hostnames via DNS -m only hostname and user associated with stdin -p, --process print active processes spawned by init -q, --count all login names and number of users logged on -r, --runlevel print current runlevel -s, --short print only name, line, and time (default) -t, --time print last system clock change -T, -w, --mesg add user's message status as +, - or ? -u, --users list users logged in --message same as -T --writable same as -T --help display this help and exit --version output version information and exit

comando users

Aprire un terminale o effettuare il login nella sessione ssh e inserire il seguente comando users:
$ users
Esce chi è attualmente loggato:

abhi charvi vivek vivek zcafe

Vivere gli utenti loggati con ultimo comando

Vuoi vedere un elenco degli ultimi utenti loggati? Usa l’ultimo comando per cercare il database binario chiamato /var/log/wtmp e visualizza un elenco di tutti gli utenti che hanno effettuato l’accesso (e l’uscita) da quando quel file è stato creato. Per esempio vedi la cronologia per l’utente chiamato ‘vivek’:
$ last vivek

vivek :1 :1 Sat Jan 16 10:19 still logged invivek :1 :1 Tue Jan 12 10:26 - 01:52 (3+15:26)vivek :1 :1 Mon Jan 11 12:52 - 03:54 (15:01)vivek :1 :1 Sun Jan 10 14:07 - down (13:20)vivek :1 :1 Sat Jan 9 09:10 - 02:50 (17:40)vivek :1 :1 Sat Jan 9 09:00 - down (00:08)vivek :1 :1 Thu Jan 7 17:35 - down (1+09:09)vivek :1 :1 Mon Jan 4 10:38 - down (3+06:44)vivek :1 :1 Sun Jan 3 12:16 - 02:41 (14:24)vivek :1 :1 Sat Jan 2 20:00 - 02:08 (06:08)vivek :1 :1 Sat Jan 2 09:11 - down (10:47)vivek :1 :1 Fri Jan 1 09:58 - 01:30 (15:31)vivek :1 :1 Fri Jan 1 02:32 - 04:17 (01:44)vivek :1 :1 Thu Dec 31 13:14 - 23:10 (09:55)vivek :1 :1 Thu Dec 31 00:12 - 02:37 (02:25)vivek :1 :1 Wed Dec 30 12:40 - 22:35 (09:54)vivek :1 :1 Wed Dec 30 00:05 - 03:13 (03:08)vivek :1 :1 Tue Dec 29 14:10 - 21:27 (07:17)vivek :1 :1 Mon Dec 28 09:02 - 00:38 (15:35)vivek pts/2 192.168.2.17 Fri Dec 25 23:46 - 15:02 (15:15)vivek :1 :1 Thu Dec 24 02:00 - 01:51 (3+23:50)vivek :1 :1 Wed Dec 23 12:57 - down (09:46)vivek :1 :1 Tue Dec 22 13:23 - down (12:19).......vivek :1 :1 Tue Dec 8 01:53 - down (01:15)vivek pts/4 192.168.2.25 Wed Dec 2 22:14 - 22:18 (00:03).................vivek :0 :0 Fri Oct 4 18:56 - 19:00 (00:04)vivek pts/0 192.168.2.25 Fri Oct 4 18:17 - 18:48 (00:31)vivek pts/0 192.168.2.25 Fri Oct 4 18:12 - 18:16 (00:03)vivek tty1 Fri Oct 4 18:12 - down (00:04) wtmp begins Fri Oct 4 18:11:35 2019

Vedi “Linux Find Out Last System Reboot Time and Date Command” per altri esempi.

Riassumendo

abbiamo imparato vari comandi che vedono i record di login memorizzati nei file utmp e wtmp. Suggerisco vivamente di dare un’occhiata alle seguenti pagine man:
man w
man who
man users
man last
man utmp

Vedi come tenere una traccia dettagliata di ciò che viene fatto sui tuoi sistemi Linux usando il comando ac.

🐧 Ricevi gli ultimi tutorial su Linux, Open Source & DevOps via RSS feed o newsletter settimanale via email.
🐧 14 commenti finora… aggiungine uno ↓

Categoria Elenco di comandi Unix e Linux
Gestione dei file cat
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
Utilità di rete dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
Package Manager apk – apt
Gestione dei processi bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – tempo
Ricerca grep – whereis – quale
Informazioni utente gruppi – id – lastcomm – last – lid/libuser-lid – logname – members – users – whoami – who – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

Categorie: Articles

0 commenti

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *