Como imprimo os nomes dos utilizadores actualmente ligados ao actual UNIX / Linux host / server a partir de um prompt de comando?
Precisa de utilizar qualquer uma das seguintes ferramentas de linha de comando para listar os utilizadores actualmente ligados ao Linux ou sistemas do tipo Unix.

Prerrogativas de root

Pormenores tutoriais
Dificuldade level Easy
Sim>/td>
Requisitos w ou quem comanda no Linux e Unix
Est. tempo de leitura 5m

Os dois ficheiros seguintes mantêm registos de login em sistemas do tipo Linux e Unix:

  • /var/run/utmp – Guarda e permite-nos descobrir informação sobre quem está actualmente a utilizar o sistema. Por favor note que pode haver mais utilizadores de Linux e Unix a utilizar actualmente o sistema, porque nem todos os programas utilizam o registo de utmp. Por outras palavras, uma aplicação mal escrita, programas ocultos, malware, e outras coisas más não serão úteis para listar os utilizadores registados.
  • /var/log/wtmp – Mantém registos de todos os logins e logouts.

Não podemos simplesmente ler estes ficheiros usando o comando cat/grep/comandoegrep pois o ficheiro está em formato de base de dados binários. Assim, utilizamos os seguintes comandos para encontrar utilizadores actualmente registados em sistemas Linux e semelhantes ao Unix.

Linux Command To List Current Logged In Users

  1. w command – Mostra informação sobre os utilizadores actualmente na máquina, e os seus processos.
  2. comando who – Mostra informação sobre os utilizadores que estão actualmente ligados.
  3. comando users – Ver os nomes de login dos utilizadores actualmente no sistema, em ordem ordenada, espaço separado, numa única linha. Lê toda a informação de /var/run/utmp file.

Como encontrar os utilizadores actualmente registados em Linux

Abrir um terminal (ou iniciar sessão num servidor remoto usando o comando ssh) e digitar os seguintes comandos.

Usando o comando w para listar os utilizadores actualmente registados em Unix ou Linux

Abrir a aplicação terminal e depois digitar o comando w:
$ w
>/p>

Fig.01w comando em acção.

Fig.01: w comando em acção.

Entendendo w comandos de saída

Da Fig.01 vemos o seguinte para cada utilizador:

  • USER – Linux ou nome de login Unix.
  • TTY – The tty name.
  • FROM The remote host or IP address.
  • @Login – Login time.
  • IDEL – Idle time.
  • JCPU – O tempo JCPU é o tempo utilizado por todos os processos ligados ao tty. No entanto, não inclui trabalhos anteriores, mas inclui actualmente trabalhos em background.
  • PCPU – O tempo PCPU é o tempo utilizado pelo processo actual, nomeado no campo “o quê”.
  • O QUE – A linha de comando desse processo actual dos utilizadores.

Para ver informações sobre um utilizador nomeado tom, digite:
$ w tombr>Tell w comando not print header:
$ w -h
$ w --no-header
br> Também podemos ignorar o nome de utilizador do processo actual passando o -u ou –no-current para o comando w:
$ w -u
$ w --no-current
br>Quer ver o campo do hostname remoto? Try:
$ w -fbr>Show IP address instead than hostname for from field:
$ w -ibr> Também podemos ver a saída em estilo antigo. Por outras palavras, as saídas antigas imprimem espaço em branco para tempos de inactividade inferiores a um minuto:
$ w -o

Mostrar todos os utilizadores registados usando o comando who

O comando who funciona em todos os sistemas operativos Unix como macOS, *BSD, Linux e assim por diante. A sintaxe é bastante simples:
# whobr>br>Aqui está o que vemos:

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

O comando who exibe a seguinte informação:

  • root – O nome de utilizador
  • pts/0 – Tipo do dispositivo terminal. Neste exemplo, vemos pseudoterminal pts/0 utilizado pelo utilizador root.
  • 2013-03-12 15:10 – Data e hora de login do utilizador.
  • (10.1.3.177) – O endereço IP remoto a partir do qual o utilizador iniciou sessão neste servidor.

Podemos passar a opção -a quem comanda da seguinte forma para ver a hora da última inicialização do sistema, exibir processos mortos, processos de login do sistema, processos activos gerados pelo init/systemd, imprimir o nível de execução actual, imprimir a última mudança de relógio do sistema, mostrar o estado da mensagem do utilizador, e listar os utilizadores com sessão iniciada em Linux ou Unix box:
# who -abr>aqui é a saída do sistema Linux mais antigo (pré 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

Exemplos de saídas do sistema Linux baseado no Systemd:
COMO ACOMPANHAR COMO CONCLUIR CURRENTALMENTE EM USUÁRIOS EM LINUXh4>Recebendo ajuda com o comando whois

P>Pode passar as seguintes opções para o comando who (retirado da página who man):

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

Abrir um terminal ou login durante a sessão ssh e introduzir o seguinte comando users:
$ usersbr>Saída quem está actualmente registado:

abhi charvi vivek vivek zcafe

Vieing utilizadores registados com o último comando

Quer ver uma lista dos últimos utilizadores registados? Utilize o último comando para consultar uma base de dados binária chamada /var/log/wtmp e mostra uma lista de todos os utilizadores registados (e não registados) desde que esse ficheiro foi criado. Por exemplo, ver histórico para o utilizador chamado ‘vivek’:
$ last vivek

div>>div>>

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

Ver “Linux Find Out Last System Reboot Time and Date Command” para mais exemplos.

Summing up

Aprendemos vários comandos que vêem registos de login armazenados em ficheiros utmp e wtmp. Sugiro vivamente que olhe para as seguintes páginas man:
man w
man who
man users
man last
man utmp
br>>Ver como manter uma pista de auditoria detalhada do que está a ser feito nos seus sistemas Linux usando o comando ac.

>br>

🐧 Obtenha os últimos tutoriais sobre Linux, Open Source & DevOps via RSS feed ou Weekly email newsletter.
🐧 14 comentários até agora… adicionar um ↓

Categoria Lista de comandos Unix e Linux
Gestão de ficheiros cat
Firewall Alpine Awall – CentOS 8 – OpenSUSE – RHEL 8 – Ubuntu 16.04 – Ubuntu 18.04 – Ubuntu 20.04
Utilitários de rede dig – host – ip – nmap
OpenVPN CentOS 7 – CentOS 8 – Debian 10 – Debian 8/9 – Ubuntu 18.04 – Ubuntu 20.04
Package Manager apk – apt
Process Management bg – chroot – cron – disown – fg – jobs – killall – kill – pidof – pstree – pwdx – time
Searching grep – whereis – which
Informação do utilizador grupos – id – lastcomm – último – tampa/libuser-tampa – logname – membros – utilizadores – whoami – quem – w
WireGuard VPN Alpine – CentOS 8 – Debian 10 – Firewall – Ubuntu 20.04

Categorias: Articles

0 comentários

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *