一、查看Linux系統(tǒng)的歷史記錄指令
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的泗洪網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1、 使用w命令查看登錄用戶正在使用的進(jìn)程信息
w命令用于顯示已經(jīng)登錄系統(tǒng)的用戶的名稱,以及他們正在做的事。該命令所使用的信息來源于/var/run/utmp文件。w命令輸出的信息包括:
? 用戶名稱
? 用戶的機(jī)器名稱或tty號(hào)
? 遠(yuǎn)程主機(jī)地址
? 用戶登錄系統(tǒng)的時(shí)間
? 空閑時(shí)間(作用不大)
? 附加到tty(終端)的進(jìn)程所用的時(shí)間(JCPU時(shí)間)
? 當(dāng)前進(jìn)程所用時(shí)間(PCPU時(shí)間)
? 用戶當(dāng)前正在使用的命令
Exampl:
?
此外,可以使用who am i查看使用該命令的用戶及進(jìn)程,使用who查看所有登錄用戶進(jìn)程信息,這些查看命令大同小異;
2、使用pkill強(qiáng)制退出登錄的用戶
使用pkill可以結(jié)束當(dāng)前登錄用戶的進(jìn)程,從而強(qiáng)制退出用戶登錄,具體使用可以結(jié)合w命令;
首先:使用w查看當(dāng)前登錄的用戶,注意TTY所示登錄進(jìn)程終端號(hào)
其次:使用pkill –9 -t pts/1 結(jié)束pts/1進(jìn)程所對(duì)應(yīng)用戶登錄(可根據(jù)FROM的IP地址或主機(jī)號(hào)來判斷)
3、使用history指令查看歷史用戶操作指令
使用完W指令查看用戶的操作進(jìn)程后,使用history指令可以看到以往的用戶操作指令。
History使用參數(shù)
[neusoftadmin@server]# history [n] **:數(shù)字,要列出最近的 n 筆命令列表
[neusoftadmin@server]# history [-c] **:將目前的shell中的所有 history 內(nèi)容全部消除
[neusoftadmin@server]# history [-raw] histfiles
-a :將目前新增的history 指令新增入 histfiles 中,若沒有加 histfiles ,
則預(yù)設(shè)寫入 ~/.bash_history
-r :將 histfiles 的內(nèi)容讀到目前這個(gè) shell 的 history 記憶中
-w :將目前的 history 記憶內(nèi)容寫入 histfiles。
?
備注:
Linux系統(tǒng)當(dāng)你在shell(控制臺(tái))中輸入并執(zhí)行命令時(shí),shell會(huì)自動(dòng)把你的命令記錄到歷史列表中,一般保存在用戶目錄下的.bash_history文件中。默認(rèn)保存1000條,你也可以更改這個(gè)值。
如果你鍵入 history, history會(huì)向你顯示你所使用的前1000個(gè)歷史命令,并且給它們編了號(hào),你會(huì)看到一個(gè)用數(shù)字編號(hào)的列表快速?gòu)钠聊簧暇磉^。你可能不需要查看1000個(gè)命令中的所有項(xiàng)目, 當(dāng)然你也可以加入數(shù)字來列出最近的 n 筆命令列表。
linux中history命令不僅僅讓我們可以查詢歷史命令而已. 我們還可以利用相關(guān)的功能來幫我們執(zhí)行命令。
二、查看所有登錄用戶的操作歷史的代碼
通過在/etc/profile里面加入以下代碼就可以實(shí)現(xiàn):
**#this script records log of user,and records IP address .**
PS1="`whoami`@`hostname`:"'[$PWD]'
history
USER_IP=`who -u am i 2/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
if [ ! -d /tmp/Iprecords ]
then
mkdir /tmp/Iprecords
chmod 777 /tmp/Iprecords
fi
if [ ! -d /tmp/Iprecords/${LOGNAME} ]
then
mkdir /tmp/Iprecords/${LOGNAME}
chmod 300 /tmp/Iprecords/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date "+%Y-%m-%d_%H:%M:%S"`
export HISTFILE="/tmp/Iprecords/${LOGNAME}/${USER_IP} Iprecords.$DT"
chmod 600 /tmp/Iprecords/${LOGNAME}/*Iprecords* 2/dev/null
[neusoftadmin@server]# source /etc/profile ********執(zhí)行腳本
重啟之后,上面腳本在系統(tǒng)的/tmp新建個(gè)Iprecords目錄,記錄所有登陸過系統(tǒng)的用戶和IP地址(文件名),每當(dāng)用戶登錄/退出會(huì)創(chuàng)建相應(yīng)的文件,該文件保存這段用戶登錄時(shí)期內(nèi)操作歷史,可以用這個(gè)方法來監(jiān)測(cè)系統(tǒng)的安全性。
1、當(dāng)前登錄用戶信息
who:
用戶名、終端類型、登陸日期以及遠(yuǎn)程主機(jī)地址。
who /var/log/wtmp
可以查看自從wtmp文件創(chuàng)建以來的每一次登陸情況
-H:打印每列的標(biāo)題
users命令: 打印當(dāng)前登錄的用戶,從上面可以看到我自己從不同主機(jī)同時(shí)登錄,所以下面顯示2次。
2、查看命令歷史
每個(gè)用戶的命令歷史記錄保存在 ~/.bash_history 文件里,
或者在終端輸入: history
要想再執(zhí)行哪條,使用 !96 重新執(zhí)行該條命令。
3、last命令查看用戶登錄歷史
此命令會(huì)讀取 /var/log/wtmp文件;/var/log/btmp可以顯示遠(yuǎn)程登陸信息。
last默認(rèn)打印所有用戶的登陸信息。
如果想打印某個(gè)用戶的登陸信息,可以使用
last 用戶名
一些選項(xiàng):
(1)-x:顯示系統(tǒng)開關(guān)機(jī)以及執(zhí)行等級(jí)信息
(2)-a:將登陸ip顯示在最后一行
(3)-d:將IP地址轉(zhuǎn)換為主機(jī)名
(4)-t:查看指定時(shí)間的用戶登錄歷史
例如: 查看axing在
axing@ax:~$ last axing -a -t 20190201160000
4、lastlog命令查看所有用戶最近一次登錄歷史
讀取/var/log/lastlog文件;用戶排列順序按照/etc/passwd中的順序
一些選項(xiàng):
(1) -u:查看某用戶的最后一次登錄記錄
比如: lastlog -u axing
(2) -t:查看最近幾天之內(nèi)的用戶登錄歷史
比如: lastlog -t 1
查看最近1天之內(nèi)的登陸歷史
(3) -b:查看指定天數(shù)之前的用戶登錄歷史
例如: lastlog -b 60
查看60天之前的用戶登錄歷史
5、ac命令
根據(jù)/var/log/wtmp文件中的登陸和退出時(shí)間報(bào)告用戶連接的時(shí)間(小時(shí)),默認(rèn)輸出報(bào)告總時(shí)間
需要安裝:
(1)-p:顯示每個(gè)用戶的連接時(shí)間
(2)-d:顯示每天的連接時(shí)間
(3)-y:顯示年份,和-d配合使用
1、ls命令
cd /root
ls #顯示當(dāng)前目錄下所有的非隱藏文件
ls -a #顯示當(dāng)前目錄下所有文件,包含隱藏文件
ls -l #顯示當(dāng)前目錄下所有的非隱藏文件的詳情
ls -al #顯示當(dāng)前目錄下所有文件,包含隱藏文件 的詳情
ls -lh #以列表形式顯示當(dāng)前目錄下所有的非隱藏文件的大小(K M T)
ls -alh #以列表形式顯示所有文件,包含隱藏文件的文件大小(K M T)
常用的組合:
ls
ll #等價(jià)于 ls -l
ls /etc #顯示/etc目錄下的文件
2:pwd命令
用來顯示當(dāng)前所在的路徑
絕對(duì)路徑: 從/目錄開始的路徑
/root
/etc/sysconf
/opt/server/data-integration/libswt/win64
相對(duì)路徑: 相對(duì)當(dāng)前的路徑
3、mkdir命令
cd /root
mkdir mytest #在當(dāng)前目錄創(chuàng)建文件夾
mkdir -p 111/222/333 #一次創(chuàng)建多級(jí)文件夾
mkdir /root/mydemo #使用絕對(duì)路徑來創(chuàng)建
mkdir mydemo2 #使用相對(duì)對(duì)路徑來創(chuàng)建
4、rm命令
這個(gè)命令既可以刪除文件,也可以刪除目錄
刪文件:
cd /root
rm a.txt #刪除時(shí),會(huì)給出提醒確認(rèn),輸入y刪除,n不刪除
rm -f b.txt #強(qiáng)制刪除 等價(jià)于 rm -f /root/b.txt
rm ../dir2/b.txt
touch a.java b.java c.java
rm a.java b.java c.java #一次可以刪除多個(gè)文件
rm *.java -fr #可以刪除當(dāng)前目錄下的所有.java文件
cd dir
rm * -fr #刪除當(dāng)前目錄的所有內(nèi)容
刪目錄:
rm -r 111 #刪除目錄,依次提醒刪除
rm -rf mytest #強(qiáng)制刪除 等價(jià)于 rm mytest -fr
常用組合:
rm -fr 文件或目錄
5、cd命令
cd 命令可以進(jìn)入一個(gè)目錄,類似于對(duì)windows上的文件夾進(jìn)行雙擊
cd #直接cd 可以從任何一個(gè)目錄回到/root目錄
cd /root #進(jìn)入root目錄
cd /opt/server/data-integration/system/
cd .. #回到上一級(jí)目錄
cd ../.. #回到上上一級(jí)目錄
cd - #可以在最近的兩次目錄之間切換
cd /root
mdkir dir1 dir2
cd dir1
cd ../dir2 #使用相對(duì)路徑 /中國(guó)/廣東省/深圳市/寶安區(qū)/留仙二路/78號(hào)
6、歷史命令和table補(bǔ)全
使用上下方向鍵可以找出歷史命令
table鍵:
cd /opt/ #兩次table可以列出/opt目錄下所有的文件和子目錄
cd /opt/s #一次table可以自動(dòng)補(bǔ)全目錄內(nèi)容,前提是/opt目錄下只有一個(gè)s開頭的目錄
7、touch命令
cd /root
touch a.java #在當(dāng)前目錄創(chuàng)建a.txt文件
touch b.java c.java #創(chuàng)建多個(gè)文件
touch /root/d.java #通過絕對(duì)路徑創(chuàng)建
8、mv命令
移動(dòng):
1、mv 文件 目錄 #將文件移動(dòng)到目錄中區(qū)
cd /root/dir1
touch a.txt
mv a.txt /root/dir2 #等價(jià)于 mv a.txt ../dir2
2、 mv 目錄1 目錄2 #將目錄1移動(dòng)到目錄2下面(前提是目錄2必須存在)
cd /root
mv dir2 dir1 #將dir2移動(dòng)到dir1下面
重命名:
1、mv 文件1 文件2 #給文件重命名(文件2不能存在)
cd /root
mv a.txt aaa.txt #將a.txt 重命名為aaa.txt
2、mv 目錄1 目錄2 #給目錄重命名(目錄2不能存在)
cd /root
mv dir1 dirx #將dir1重命名為dirx
9、cat命令
顯示文件內(nèi)容
cd /root
cat user.txt
10、cp命令
復(fù)制文件
cd /root
cp user.txt user2.txt
cp user.txt /opt/ #將當(dāng)前目錄的user.txt 復(fù)制到/opt目錄,文件名保持不變
cp user.txt /opt.user2.txt #將當(dāng)前目錄的user.txt 復(fù)制到/opt目錄,文件名改為user2.txt
cp /opt/server/data-integration/pan.sh ./ #將指定目錄里的文件復(fù)制到當(dāng)前目錄(.后邊的/可以去掉)
cp /opt/server/data-integration/pan.sh ./dirx #將指定目錄里的文件復(fù)制到當(dāng)前目錄下的dirx目錄(.后邊的/比可以去掉)
cp /opt/server/data-integration/pan.sh /root/dirx #作用同上
11、解壓和壓縮
Linux的壓縮包后綴一般是: .tar.gz
解壓:
.tar.gz
將snappy-1.1.1.tar.gz上傳到/root/dir1目錄
tar -zxvf snappy-1.1.1.tar.gz #默認(rèn)解壓到當(dāng)前目錄
tar -xvf snappy-1.1.1.tar.gz #默認(rèn)解壓到當(dāng)前目錄
tar -xvf snappy-1.1.1.tar.gz -C /opt #將壓縮包解壓到/opt目錄
.zip格式
unzip mysql-connector-java-8.0.13.zip #默認(rèn)解壓到當(dāng)前目錄
unzip -d /opt mysql-connector-java-8.0.13.zip #解壓到指定目錄
壓縮:
.tar.gz
tar -czvf snappy-1.1.1.tar.gz snappy-1.1.1 #將snappy-1.1.1文件夾進(jìn)行打包壓縮
tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1
.zip格式
zip -r mysql-connector-java-8.0.13.zip mysql-connector-java-8.0.13/
12、find命令
用來實(shí)現(xiàn)文件的查找
find / -name 'a.txt' #從/目錄開始查找a.txt文件
find / -name 'ins*' #從/目錄開始查找以ins開頭的文件
find / -type f -size +100M #查找/目錄下文件大小大于100M的文件
13、grep命令
grep lang anaconda-ks.cfg #從anaconda-ks.cfg文件中查找包含lang的內(nèi)容
14、ps命令
ps #查看依賴終端的進(jìn)程
ps -ef #查看Linux系統(tǒng)中所有的進(jìn)程
15、kill命令
kill -9 進(jìn)程的pid #每次啟動(dòng)進(jìn)程時(shí),pid會(huì)發(fā)生變化,但是進(jìn)程運(yùn)行期間pid不會(huì)變化
16、管道 |
管道就是把前邊命令的結(jié)果作為后邊命令的輸入
ps -ef | grep mysql #查找和mysql相關(guān)的進(jìn)程
ll /etc | grep java #在/etc目錄中查找java相關(guān)的文件
17、用戶的操作
用戶創(chuàng)建和密碼設(shè)置
useradd itheima #創(chuàng)建新用戶itheima
passwd itheima #設(shè)置用戶itheima密碼
用戶刪除
userdel -r itheima #刪除用戶itheima
18、文件的權(quán)限
所屬用戶: root 文件的創(chuàng)建者
所屬用戶組: root 和文件創(chuàng)建者在一個(gè)組的用戶
其他用戶: itcast 既不是文件創(chuàng)建者,也和文件創(chuàng)建者不在同一組
r: 可讀
w:可寫
x: 可執(zhí)行
chmod命令:
方式1:
chmod u+rw a.txt #在所屬用戶之前的權(quán)限基礎(chǔ)上添加可讀和可寫權(quán)限
chmod u=rw a.txt #將所屬用戶的權(quán)限直接修改為可讀,可寫
chmod +x #給所屬用戶,所屬用戶組和其他用戶全部加上可執(zhí)行權(quán)限
方式2:
chmod 777 a.txt #給所有用戶加上所有權(quán)限
19、clear命令
用來清屏
快捷鍵: ctrl + l
20、history命令
用來查看所有的歷史命令
21:vi編輯器的使用
vi a.txt #打開a.txt文件
vim a.txt #vim是vi的增強(qiáng)
22、網(wǎng)絡(luò)管理命令
hostname :查看主機(jī)名
修改主機(jī)名: /etc/hostname
ifconfig :查看ip地址
修改ip地址: /etc/sysconfig/network-scripts/ifcfg-ens33
服務(wù)問題:
service network restart
很多情況下我們需要記錄用戶執(zhí)行過的命令,不管是root還是其他普通用戶,我們可以通過以下方式來記錄。
PROMPT_COMMAND會(huì)在命令執(zhí)行前執(zhí)行。
$(who am i |awk '{print \$2,\$5}') 會(huì)輸出登錄用戶用的tty和登錄服務(wù)器的遠(yuǎn)程電腦IP或者主機(jī)名。
$PWD 是內(nèi)建變量,顯示當(dāng)前執(zhí)行命令的工作目錄。
history 1 | { read x cmd; echo ${cmd}; 會(huì)輸出最后一條歷史命令中的執(zhí)行信息。
為了不讓用戶修改變量,使用 declare -rx 命令定義了只讀環(huán)境變量。這里要注意使用 readonly 命令也可以定義只讀變量,但是用戶用env命令看不到,只有用 export PROMPT_COMMAND 命令將變量設(shè)置為環(huán)境變量后才能看到。
變量加到 /etc/bashrc 是因?yàn)橛脩舻卿浐髸?huì)加載這里的配置,包括 sudo sudo su sudo su - su root su - root 。如果加到其他文件里則部分命令后就不會(huì)加載變量,自行嘗試。
修改rsyslog是可以自定義日志輸出的文件路徑和名字,用 logger -p 這個(gè)命令配合使用。
新增logrotate配置則是需要切割日志,防止單個(gè)日志文件太大,以及做好切割備份,方便查詢。
【一】
在 /etc/profile 最后添加如下行,則日志會(huì)直接輸出到 messages 日志里。
這種方式:不定義日志格式,直接將日志寫到messages日志文件里,和其他日志放一起,但是可以指定日志標(biāo)簽,方便檢索。
缺點(diǎn)是(1)會(huì)導(dǎo)致日志增大,并且用戶提權(quán)后因-t標(biāo)簽的存在,導(dǎo)致不會(huì)記錄提權(quán)前的用戶。(2)不能自定義日志路徑。
【二】
缺點(diǎn):用戶可以刪除日志文件。
因?yàn)槠胀ㄓ脩艉蛂oot都要往日志文件里寫,所以需要給普通用戶加一個(gè)附加組;并且如果日志文件不存在,普通用戶登錄后也需要新建,所以普通用戶必須有日志文件父目錄的寫權(quán)限。為了能讓所有普通用戶都可以寫,就給Command目錄加了SGID權(quán)限以及修改目錄屬組為audit。這樣普通用戶在這個(gè)目錄下創(chuàng)建的日志文件的屬組會(huì)自動(dòng)繼承Command目錄的屬組,也就是audit。 (umask 002 touch $HISTORY_FILE) 命令則是因?yàn)閞oot用戶生成的日志文件權(quán)限是644,屬組沒有寫權(quán)限。所以這里用 啟動(dòng)子shell并修改umask的方式生成日志文件。這樣就不會(huì)修改root默認(rèn)的 0022 的umask。
其他審計(jì)軟件:
免費(fèi)2個(gè)月
如何查看Linux中各個(gè)用戶的歷史操作命令
1.要查看用戶名為test的歷史操作命令
cat /home/test/.bash_history
2.由于非系統(tǒng)管理員用戶以及非屬主用戶是沒權(quán)限讀的,需要用root【系統(tǒng)管理原賬戶】來看這個(gè)文件。
系統(tǒng)管理員擁有所有賬戶家目錄的查看權(quán)限
需要注意的是.bash_history不包含當(dāng)前會(huì)話所執(zhí)行的命令,執(zhí)行過的命令在關(guān)機(jī)時(shí)才會(huì)寫入文件,除非執(zhí)行命令history -w
3.可以使用history命令查詢目前內(nèi)存內(nèi)的所有 history 歷史記錄,只限當(dāng)前用戶
1."linux查看歷史命令,為您提供linux查看歷史命令圖文信息,打開linux客戶端。
2.點(diǎn)擊連接linux按鈕。
3.輸入用戶名,主機(jī)ip地址。
4.輸入密碼。
5.顯示連接成功,就可以進(jìn)行操作。
6.輸入history命令,即可返回命令的歷史記錄。