目錄
shell的命令歷史記錄 需求
相關引數
實現步驟
>>>系統需要乙個目錄用來記錄所有使用者的命令歷史記錄,來做安全保護。
>>>建立乙個目錄/var/history,該目錄會建立檔案記錄所有登入使用者的歷史命令,
檔案以 username-userid.log 格式命名;(預設用於記錄使用者歷史命令的檔案是當前使用者家目錄下的.bash_history)
>>>所有使用者執行過的命令都會被追加到對應的檔案中 ,並且不能刪除和修改 ——>特殊屬性a
>>>使用者輸入的命令要實時刷入硬碟 ——>特殊屬性s
目錄格式如下:
[bei@localhost ~]$ ls -al /var/history/
dr-xr-xrwx. 2 root root 4096 aug 7 22:43 .
drwxr-xr-x. 22 root root 4096 jul 22 00:05 ..
-rw-------. 1 bei bei 76219 sep 18 20:18 bei-507.log
-r--------. 1 root root 12815 sep 18 20:17 root-0.log
檔案格式如下:
[bei@localhost ~]$ cat -n /var/history/bei-507.log | tail -5
4363 ls -al
4364 #1537327334
4365 history
4366 #1537327341
4367 ifconfig
引數
描述
histfile
用於指定儲存命令歷史記錄的路徑及檔名稱(預設~/.bash_history)
histfilesize
用於指定儲存命令記錄檔案中的最大行數(預設值500,建議設定為null)
histsize
命令歷史記錄中的記錄的命令最大行數(預設值500,建議設定為100000)
定義了history命令輸出的行數
histtimeformat
在歷史記錄檔案中,使用注釋符來區分時間戳和相關命令
可設定history命令顯示的歷史記錄條目關聯的時間戳輸出格式
例:readonlyhisttimeformat="%f %t `who -u am i 2>/dev/null| awk ''|sed -e 's/[{}]//g' ` `whoami ` "
history命令輸出為:
[bei@localhost ~]$ history | tail -5
2188 2018-09-18 20:22:14 (192.168.20.***) bei history
2189 2018-09-18 20:22:21 (192.168.20.***) bei ifconfig
2190 2018-09-18 20:22:49 (192.168.20.***) bei cat -n /var/history/bei-507.log | tail -5
2191 2018-09-18 20:27:45 (192.168.20.***) bei history | tail -10
2192 2018-09-18 20:27:51 (192.168.20.***) bei history | tail -5
histcontrol
控制命令在歷史列表中記錄方式
ignorespace:以空格開頭的行不會記錄在歷史中
ignoredups:忽略重複的命令
ignoreboth:引數ignorespace和ignoredups同時生效
關於readonly
變數前寫上readonly,非root使用者變數不可更改
>>>建立目錄/var/history——> mkdir /var/history
給目錄/var/history賦予所有人的寫許可權——> chmod a+w /var/history
給目錄/var/history賦予特殊屬性a——> chattr +a /var/history
>>>編輯/etc/profile修改shell命令記錄的引數
readonlyhistfile=/var/history/$user-$uid.log#設定儲存命令歷史記錄的路徑及檔名稱
readonlyhistsize=null
readonlyhistfilesize=500000
readonlyhisttimeformat="%f %t `who -u am i 2>/dev/null| awk ''|sed -e 's/[{}]//g' ` `whoami ` "
乙個使用者可以同時開啟多個終端
readonlyprompt_command="history -a"#實時追加當前歷史命令到history檔案
if [ "$histcontrol" = "ignorespace" ] ; then
exporthistcontrol=ignoreboth
else
exporthistcontrol=ignoredups
fiexport histsize histcontrol
說明:
>>>以上內容是本人學習的總結
>>>亦可分享自己的想法,互相學習
linux shell程式設計之 if語句
一 語句格式 一行中的寫法 if test commands then consequent commands fi 多行的寫法 if 條件 then command else command fi 基本語法記住亮點 1 按照漢語的方式記憶 如果 if 那麼 then 就 否則 else 就 2 記...
Linux shell程式設計之awk sed用法詳解
awk的用法 1.awk的使用 呼叫方式 1.命令列方式 2.將所有awk命令插入乙個檔案,並使awk程式可執行,然後使awk命令直譯器作為指令碼的首行,以便通過鍵入指令碼名稱來呼叫它。3.將所有的awk命令插入乙個單獨檔案,然後呼叫。選項說明 f 域符號 預設為空格 f 指明awk指令碼 2.模式...
LINUX SHELL程式設計之遠端拷貝
使用expect,進行遠端拷貝 1.首先確認你的系統安裝有expect which expect 如果顯示如下,說明已經安裝完expect,如果沒有執行2 usr bin expect 2.yum install expect 3.遠端拷貝 usr bin expect f set password...