Nếu đang sử dụng một Linux server, bạn có thể sử dụng một số lệnh sau để kiểm tra hoạt động của người dùng - khi người dùng hệ thống đăng nhập và tần suất sử dụng, họ thuộc nhóm nào, dung lượng ổ đĩa họ đang tiêu thụ, họ đang chạy lệnh gì, chiếm bao nhiêu dung lượng ổ đĩa,...
Lệnh finger
Một lệnh tiện dụng để theo dõi hoạt động người dùng là finger. Lệnh này cho phép bạn xem ai đã đăng nhập hoặc chỉ tập trung vào thông tin hoạt động của một người dùng, xem lần cuối đăng nhập là khi nào, đăng nhập từ đâu, v.v. Trong ví dụ này, chúng ta sẽ theo dõi hoạt động của người dùng tên nemo.
$ finger nemo
Login: nemo Name: Nemo Demo
Directory: /home/nemo Shell: /bin/bash
On since Fri Jun 19 12:58 (EDT) on pts/1 from 192.168.0.6
7 minutes 47 seconds idle
New mail received Wed Jun 17 18:31 2020 (EDT)
Unread since Sat Jun 13 18:03 2020 (EDT)
No Plan.
Chúng ta có thể thấy tên đầy đủ, thư mục chính và shell của nemo. Chúng ta cũng có thể thấy hoạt động đăng nhập và email gần đây nhất của nemo. Văn phòng, điện thoại văn phòng và điện thoại nhà chỉ xuất hiện nếu chúng được xác định trong tệp /etc/passwd với trường tên đầy đủ. Ví dụ:
nemo:x:1001:1001:Nemo Demo,11,540-222-2222,540-333-3333:/home/nemo:/bin/bash).
Output ở trên cũng chỉ ra rằng nemo không có "plan" nào cả, nhưng điều này chỉ có nghĩa người dùng này đã không tạo tệp .plan và đặt một số văn bản vào đó; không có gì khác thường.
Không có đối số, lệnh finger sẽ hiển thị danh sách các thông tin đăng nhập hiện tại theo định dạng hiển thị bên dưới. Bạn có thể thấy khi họ đăng nhập, địa chỉ IP họ đã dùng, terminal đang sử dụng (ví dụ: pts/1)
$ finger
Login Name Tty Idle Login Time Office Office Phone
nemo 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
Lệnh w
Lệnh w cũng cung cấp một danh sách được định dạng độc đáo của người dùng hiện đang hoạt động bao gồm cả thời gian trống và lệnh nào họ chạy gần đây nhất. Nó cũng hiển thị thời gian hệ thống đã hoạt động ở dòng trên cùng và cung cấp mức trung bình tải để biết mức độ hoạt động của hệ thống. Trong trường hợp này (0,00 cho đến cuối phút 1, 5 và 15), hệ thống phần lớn sẽ là để không.
$ w
14:23:19 up 1 day, 20:24, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
shs pts/0 192.168.0.6 12:57 0.00s 0.14s 0.01s w
nemo pts/1 192.168.0.6 12:58 1:24m 0.03s 0.03s -bash
Lệnh id
Với lệnh id, bạn có thể xem số ID của người dùng và ID nhóm (ID của từng thành viên trong nhóm). Thông tin này được lấy từ các file /etc/passwd và /etc/group. Không có đối số, lệnh id báo cáo thông tin cho tài khoản của bạn.
$ id
uid=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 nemo
uid=1001(nemo) gid=1001(nemo) groups=1001(nemo),16(fish)
Lệnh auth.log
Bạn có thể lấy thông tin từ file /var/log/auth.log bằng các lệnh như grep. Để hiển thị hoạt động đăng nhập gần đây nhất bằng dữ liệu auth.log, dùng một lệnh như sau:
$ grep "New session" /var/log/auth.log | awk '{print $1,$2,$3,$11}' | tail -5
Jun 17 17:22:38 shs.
Jun 17 17:58:43 gdm.
Jun 17 18:09:58 shs.
Jun 19 12:57:36 shs.
Lệnh last
Lệnh last là phương pháp tốt nhất để xem các lần đăng nhập gần đây của tất cả người dùng hoặc một cá nhân. Hãy nhớ rằng hoạt động gần đây nhất sẽ được hiển thị đầu tiên vì đây là thông tin mà hầu hết các quản trị viên quan tâm nhất.
$ last | head -5
nemo pts/1 192.168.0.6 Fri Jun 19 12:58 still logged in
shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged in
shs 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 running
shs 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)
Lệnh du
Lệnh du sẽ báo cáo mỗi thư mục home directory của người dùng đang sử dụng bao nhiêu dung lượng nếu chạy riêng từng mục trong /home như thế này:
$ sudo du -sk /home/*
289 /home/dorothy
116 /home/dory
88 /home/eel
28 /home/gino
28 /home/jadep
12764 /home/nemo
732 /home/shark
418046 /home/shs
108 /home/tadpole
Theo mặc định, kích thước được báo cáo theo đơn vị 1024 byte.
Lệnh ps và history
Đối với người dùng hiện đang đăng nhập, bạn luôn có thể sử dụng các lệnh như ps -ef | grep ^nemo để xem những lệnh và quy trình nào mà người dùng hiện đang chạy. Để xem các lệnh đã chạy trước đó, bạn có thể thử xem các file history của người dùng (ví dụ: .bash_history), nhưng lưu ý rằng người dùng có thể thiết lập tài khoản của mình để các lệnh nhất định không xuất hiện trong file history và họ cũng có thể chỉnh sửa các file này nếu muốn.
Đếm số đăng nhập
Nếu bạn muốn xem số lần mỗi người dùng của bạn đã đăng nhập kể từ khi file /var/log/wtmp chạy lần cuối, hãy sử dụng một lệnh như thế này:
$ for USER in `ls /home`
> do
> cnt=`last $USER | grep ^$USER | wc -l` # count logins
> echo $USER: $cnt # show login count
> done
Output sẽ trông giống như thế này:
dorothy: 0
dory: 0
eel: 8
gino: 0
jadep: 102
nemo: 39
shark: 50
shs: 105
tadpole: 0
Nếu muốn biết thêm chi tiết, bạn có thể đặt một tập lệnh phức tạp hơn, có thể thêm một số thông tin bổ sung như chi tiết đăng nhập và định dạng.
#!/bin/bash
sepline="===================="
for USER in `ls /home`
do
len=`echo $USER | awk '{print length($0)}'` # 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
echo
Script ở trên đang giới hạn dữ liệu được hiển thị trong năm lần đăng nhập gần đây nhất, nhưng có thể dễ dàng thay đổi điều đó nếu muốn. Đây là cách dữ liệu cho một người dùng sẽ được định dạng:
shs
===
logins: 105
shs pts/0 192.168.0.6 Fri Jun 19 12:57 still logged in
shs 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)