enero 29, 2022

Cómo ver qué están haciendo los usuarios en Linux

Si está administrando un servidor Linux, es bueno estar listo con una serie de comandos que puede usar para verificar la actividad de los usuarios: cuándo inician sesión y con qué frecuencia, a qué grupos pertenecen, cuánto espacio en disco consumen, qué comando ejecutan, cuánto espacio en disco ocupan, si leen su correo y más.

En esta publicación, veremos una serie de comandos que pueden ayudarlo a comprender quién es su usuario y cómo funcionan.

finger

Un comando práctico para obtener un perfil de usuario es finger. Le permite ver quién ha iniciado sesión o centrarse en un solo usuario para ver su último inicio de sesión, desde dónde inició sesión, cuánto tiempo ha estado inactivo (cuánto tiempo desde que ejecutó un comando), etc. En este comando, estamos viendo al usuario nemo.

$ finger nemoLogin: nemo Name: Nemo DemoDirectory: /home/nemo Shell: /bin/bashOn since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6 7 minutes 47 seconds idleNew mail received Wed Jun 17 18:31 2020 (EDT) Unread since Sat Jun 13 18:03 2020 (EDT)No Plan.

Podemos ver el nombre completo, el directorio personal y el shell de nemo. También podemos ver la actividad de inicio de sesión y correo electrónico más reciente de nemo. Los números de teléfono de oficina, de oficina y de casa solo se incluyen si están definidos en el archivo/etc / passwd en el campo nombre completo. Por ejemplo:

nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).

La salida anterior también indica que nemo no tiene un «plan», pero esto solo significa que no ha creado un .planifique el archivo y ponga algo de texto en él; esto no es nada inusual.

Sin argumentos, finger mostrará una lista de inicios de sesión actuales en el formato que se muestra a continuación. Puede ver cuándo se conectaron, la dirección IP desde la que se conectaron, el pseudo terminal en uso (p. ej., pts/1) y cuánto tiempo han estado inactivos.

$ fingerLogin Name Tty Idle Login Time Office Office Phonenemo Nemo Demo pts/1 1:24 Jun 19 12:58 (192.168.0.6)shs Sandra Henry-Stocker pts/0 Jun 19 12:57 (192.168.0.60

w

El comando w también proporciona una lista bien formateada de usuarios activos actualmente, incluido el tiempo de inactividad y qué comando ejecutaron más recientemente. También muestra en la línea superior cuánto tiempo ha estado activo el sistema y proporciona promedios de carga que indican cuán ocupado está el sistema. En este caso (0,00 para los últimos 1, 5 y 15 minutos), el sistema está en gran parte inactivo.

$ w 14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATshs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s wnemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash

id

Con el comando id, puede ver el ID numérico y el ID de grupo de un usuario junto con los grupos de los que es miembro el usuario. Esta información se extrae de los archivos/etc /passwd y/etc / group. Sin argumentos, id informa la información de su cuenta.

$ iduid=1000(shs) gid=1000(shs) groups=1000(shs),4(adm),11(admin),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),128(sambashare),500(devops)$ id nemouid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)

auth.log

Puede extraer información de / var/log / auth.archivo de registro con comandos como grep. Para mostrar la actividad de inicio de sesión más reciente mediante autenticación.datos de registro, puede ejecutar un comando como este:

$ grep "New session" /var/log/auth.log | awk '{print ,,,}' | tail -5Jun 17 17:22:38 shs.Jun 17 17:58:43 gdm.Jun 17 18:09:58 shs.Jun 19 12:57:36 shs.Jun 19 12:58:44 nemo.

last

El último comando es probablemente el mejor para ver los inicios de sesión recientes de todos los usuarios o de una persona. Solo recuerde que last muestra la actividad más reciente primero, ya que esta es la información en la que la mayoría de los administradores están más interesados.

$ last | head -5nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged inshs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)reboot system boot 5.4.0-37-generic Wed Jun 17 17:58 still runningshs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)$ last nemo | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 - 16:21 (03:22)
nemo pts/2 192.168.0.6 Sat Jun 13 17:49 - 19:05 (01:16)
nemo pts/1 192.168.0.6 Thu Jun 4 17:33 - 17:44 (00:10)
nemo pts/1 192.168.0.19 Mon May 11 19:04 - 19:57 (00:52)
nemo pts/1 192.168.0.19 Tue May 5 12:46 - 17:49 (05:02)

du

El comando du reportará cuánto espacio está utilizando el directorio personal de cada usuario si se ejecuta contra cada directorio en / home de esta manera:

$ sudo du -sk /home/*289 /home/dorothy116 /home/dory88 /home/eel28 /home/gino28 /home/jadep12764 /home/nemo732 /home/shark418046 /home/shs108 /home/tadpole

De forma predeterminada, los tamaños se informan en unidades de 1024 bytes.

ps e historial

Para los usuarios que han iniciado sesión, siempre puede usar comandos como ps-ef / grep ^nemo para ver qué comandos y procesos está ejecutando actualmente un usuario. Para ver los comandos ejecutados anteriormente, puede intentar buscar en los archivos de historial de los usuarios (p. ej., .bash_history), pero tenga en cuenta que los usuarios pueden configurar sus cuentas para que ciertos comandos no se capturen en sus archivos de historial, y también pueden editar estos archivos si así lo desean.

contando inicios de sesión

Si desea ver cuántas veces ha iniciado sesión cada uno de sus usuarios desde la última vez que se volcó el archivo /var/log/wtmp, puede usar un comando como este:

$ for USER in `ls /home`> do> cnt=`last $USER | grep ^$USER | wc -l` # count logins> echo $USER: $cnt # show login count> done

La salida se verá algo como esto:

dorothy: 0dory: 0eel: 8gino: 0jadep: 102nemo: 39shark: 50shs: 105tadpole: 0

Si desea más detalles, puede crear un script más complejo que pueda agregar información adicional, como detalles de inicio de sesión y formato.

#!/bin/bashsepline="===================="for USER in `ls /home`do len=`echo $USER | awk '{print length()}'` # get length of username echo $USER sep="${sepline:1:$len}" # set separator echo $sep # print separator cnt=`last $USER | grep ^$USER | wc -l` # count logins echo logins: $cnt # show login count last $USER | grep ^$USER | head -5 # show most recent logins echodone

El script anterior limita los datos mostrados a los cinco inicios de sesión más recientes, pero puede cambiarlo fácilmente si lo desea. Así es como se formatearían los datos de un usuario:

shs===logins: 105shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged inshs pts/0 192.168.0.6 Wed Jun 17 18:10 - 18:42 (00:32)shs pts/2 192.168.0.6 Wed Jun 17 17:22 - 17:57 (00:34)shs pts/0 192.168.0.25 Wed Jun 17 17:20 - 17:57 (00:36)shs pts/1 192.168.0.6 Wed Jun 17 15:19 - 17:57 (02:38)

comprobación de intentos de sudo

Si desea ver si alguno de sus usuarios está intentando usar sudo cuando no está configurado para tener este privilegio, puede ejecutar un comando como este:

$ grep "NOT in sudoers" /var/log/auth.log | awk '{print }'nemo

Si alguna vez ha intentado usar sudo en una situación en la que no está autorizado a elevar sus privilegios y el sistema lo amenazó con «el nombre de usuario no está en el archivo sudoers». Se informará de este incidente: «Puede que le guste saber que esta entrada de registro es la esencia de ese informe. A menos que el administrador haga un esfuerzo para buscar transgresiones sudo, pasarán desapercibidas.

Wrap-up

Hay muchos comandos en los sistemas Linux que pueden ayudarlo a verificar la actividad del usuario. Espero que algunos de los presentados en este post sean útiles.

Cómo usar el comando bmon: Consejos para Linux de 2 minutos

Deja una respuesta

Tu dirección de correo electrónico no será publicada.