linux 当前活动用户,如何在Linux上自动记录所有用户的终端会话活动
如何在Linux上自動記錄所有用戶的終端會話活動
不久前,我們寫了一篇文章,使用script命令記錄Linux終端會話活動。
今天,我們還將討論相同的主題。
但是,本教程允許您自動記錄所有用戶的終端會話活動。
我建議管理員將此功能作為關鍵任務服務器上安全檢查表的一部分包含在內。
如果任何用戶活動導致服務器出現問題,這將幫助您立即解決問題。
通過檢查特定用戶的會話活動文件,您可以輕松地確定他/她所做的事情。
而且,它可以幫助您隨時獲取命令輸出,也可以保留它以備將來參考。
默認情況下,每個人都希望使用history命令來查看終端中先前輸入的命令。是的,它很好,但是不幸的是它沒有顯示以前執行的命令的輸出。
可以使用script命令來完成。這樣做,將以下腳本添加到/etc/profile文件中。每當用戶登錄時,它將自動開始記錄用戶的終端會話。
什么是腳本命令
腳本是一個UNIX命令行應用程序,它記錄一個終端會話(換句話說,它記錄了終端上顯示的所有內容)。
它將輸出作為文本文件存儲在當前目錄中,默認文件名是typescript。
什么是scriptreplay
該程序使用時間信息來重放打字稿,以確保輸出以與記錄腳本時最初出現的速度相同的速度發生。
如何檢查Linux上是否安裝了腳本命令
該腳本是Linux Core應用程序的一部分,默認情況下已安裝在大多數Linux發行版中。
在基于RHEL的系統上,腳本命令是“ util-linux-ng”軟件包的一部分,在基于Debian的系統上,腳本命令是“ bsdutils”軟件包的一部分。
對于基于RHEL的系統,請使用rpm命令
# rpm -qf /usr/bin/script
util-linux-2.32.1-8.el8.x86_64
# rpm -qf /usr/bin/scriptreplay
util-linux-2.32.1-8.el8.x86_64
對于基于Debian的系統,請使用dpkg命令
# dpkg -S /usr/bin/script
bsdutils: /usr/bin/script
# dpkg -S /usr/bin/scriptreplay
bsdutils: /usr/bin/scriptreplay
什么是/etc/profile文件?
在Linux上有什么用該/etc/profile文件用于將全局Linux系統環境變量設置到用戶的外殼程序。每當用戶輸入bash shell登錄名時,該文件將自動執行。使用您喜歡的文本編輯器打開“ /etc/profile”文件,然后添加以下代碼。
# vi /etc/profile
#Script to Record the User's Terminal Session
if [ "x$session_record" = "x" ]
then
timestamp=`date "+%m%d%Y%H%M"`
output=/var/log/session/session.$USER.$$.$timestamp
session_record=started
export session_record
script -t -f -q 2>${output}.timing $output
exit
fi
確保/var/log/session系統上已經存在輸出路徑目錄。如果沒有,請創建它。
# mkdir /var/log/session
將/var/log/session目錄許可權更改為777,這將允許所有用戶在會話目錄中寫入其會話活動。要了解有關Linux文件權限的更多信息。
# chmod 777 /var/log/session
如何檢查此腳本是否按預期工作?
完成所有前提條件后,我們將在終端中運行一些命令以檢查此實驗。
讓我們假設你有三個用戶:daygeek,magi,和tanisha。我們將在每個會話中運行一些命令以驗證此測試。
我們以daygeek用戶身份運行以下命令。
$ uname -a
$ arch
$ hostname -I
$ exit
我們以magi用戶身份運行以下命令。
$ w
$ date
$ whoami
$ cat /etc/centos-release
$ exit
我們以tanisha用戶身份運行以下命令。
$ rpm -q kernel
$ history
$ last reboot
$ exit
我們以root用戶身份運行以下命令。
# whoami
# pwd
# host 2daygeek.com
# host magesh.co.in
# exit
如何使用script命令在Linux上列出記錄的會話
我們已經從所有用戶會話中成功執行了一些命令。使用ls命令查看記錄的會話(ls代表列表目錄內容)。
# ls -lh /var/log/session
total 32K
-rw-rw-r-- 1 daygeek daygeek 2.0K Jul 24 17:16 session.daygeek.26452.072420191715
-rw-rw-r-- 1 daygeek daygeek ?784 Jul 24 17:16 session.daygeek.26452.072420191715.timing
-rw-rw-r-- 1 magi ? ?magi ? ? 835 Jul 24 17:14 session.magi.26394.072420191713
-rw-rw-r-- 1 magi ? ?magi ? ? 591 Jul 24 17:14 session.magi.26394.072420191713.timing
-rw-r--r-- 1 root ? ?root ? ? 957 Jul 24 17:18 session.root.26499.072420191717
-rw-r--r-- 1 root ? ?root ? ? 864 Jul 24 17:18 session.root.26499.072420191717.timing
-rw-rw-r-- 1 tanisha tanisha ?555 Jul 24 17:20 session.tanisha.26545.072420191718
-rw-rw-r-- 1 tanisha tanisha ?528 Jul 24 17:20 session.tanisha.26545.072420191718.timing
是的,所有用戶的終端會話操作都已成功注冊,并且已存儲在/var/log/session目錄下。
如何使用script命令在Linux上查看記錄的會話
我可以說一切都按預期進行,沒有任何問題,因為它創建了所有用戶的文件。
現在,是時候一個接一個地查看用戶記錄的所有會話數據,以確保腳本捕獲了我們已實現的所有內容。
查找daygeek用戶的會話輸出。
# more session.daygeek.26452.072420191715
Script started on Mon 24 Jul 2019 05:15:13 PM EDT
[daygeek@vps1 ~]$ uname -a
Linux vps1.daygeek.com 2.6.32-754.el6.x86_64 #1 SMP Tue Jun 19 21:26:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[daygeek@vps1 ~]$ arch
x86_64
[daygeek@vps1 ~]$ hostname -I
66.70.189.137
[daygeek@vps1 ~]$ exit
exit
查找magi用戶的會話輸出。
# more session.magi.26394.072420191713
Script started on Mon 24 Jul 2019 05:13:10 PM EDT
[magi@vps1 ~]$ w
17:13:13 up 3 days, ?7:17, ?4 users, ?load average: 0.00, 0.00, 0.00
USER ? ? TTY ? ? ?FROM ? ? ? ? ? ? ?LOGIN@ ? IDLE ? JCPU ? PCPU WHAT
root ? ? pts/0 ? ?103.5.134.167 ? ?17:00 ? ?4:13 ? 0.29s ?0.24s top -c
root ? ? pts/1 ? ?103.5.134.167 ? ?17:09 ? 27.00s ?0.01s ?0.01s -bash
magi ? ? pts/2 ? ?103.5.134.167 ? ?17:13 ? ?0.00s ?0.00s ?0.00s -bash
magi ? ? pts/3 ? ?- ? ? ? ? ? ? ? ?17:13 ? ?0.00s ?0.00s ?0.00s w
[magi@vps1 ~]$ date
Mon Jul 24 17:13:24 EDT 2019
[magi@vps1 ~]$ whoami
magi
[magi@vps1 ~]$ cat /etc/centos-release
CentOS release 6.10 (Final)
[magi@vps1 ~]$ exit
exit
查找tanisha用戶的會話輸出。
# more session.tanisha.26545.072420191718
Script started on Mon 24 Jul 2019 05:18:49 PM EDT
[tanisha@vps1 ~]$ rpm -q kernel
kernel-2.6.32-754.el6.x86_64
[tanisha@vps1 ~]$ history
1 ?rpm -q kernel
2 ?history
[tanisha@vps1 ~]$ last reboot
reboot ? system boot ?2.6.32-696.6.3.e Fri Jul 21 09:55 - 17:20 (3+07:24)
wtmp begins Fri Jul 21 09:54:02 2019
[tanisha@vps1 ~]$ exit
exit
查找root用戶的會話輸出。
# more session.root.26499.072420191717
Script started on Mon 24 Jul 2019 05:17:41 PM EDT
[root@vps1 ~]# whoami
root
[root@vps1 ~]# pwd
/root
[root@vps1 ~]# host 2daygeek.com
2daygeek.com has address 104.27.157.177
2daygeek.com has address 104.27.156.177
2daygeek.com has IPv6 address 2400:cb00:2048:1::681b:9db1
2daygeek.com has IPv6 address 2400:cb00:2048:1::681b:9cb1
2daygeek.com mail is handled by 0 dc-7dba4d3ea8cd.2daygeek.com.
[root@vps1 ~]# host magesh.co.in
magesh.co.in has address 103.212.204.46
magesh.co.in mail is handled by 10 e46f668a62df45920a71fc97ebe479.pamx1.hotmail.com.
[root@vps1 ~]# exit
exit
以上所有輸出清楚地表明,所有內容均已記錄,沒有任何問題。
如何重播通過scriptreplay命令記錄的會話
您可以在scriptreplay命令的幫助下重播記錄的會話,因為腳本也已捕獲了定時文件。這樣做,如下所述運行文件。
# scriptreplay --timing=session.daygeek.26452.072420191715.timing session.daygeek.26452.072420191715
?著作權歸作者所有,如需轉載,請注明出處,否則將追究法律責任
總結
以上是生活随笔為你收集整理的linux 当前活动用户,如何在Linux上自动记录所有用户的终端会话活动的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux如何根据端口看进程,linux
- 下一篇: linux7双网卡设置,Centos 7