Linux記錄命令執行的使用者IP地址和時間等資訊
背景
有時候不知道誰的機器遠端執行了什麼命令
遇到問題不好分析
上一套監控系統又有一些過於重.
所以想到一個簡單方法進行處理
當然了只防君子不防小人
方式方法
利用history的命令方式進行處理.
記錄遠端使用者的 ip 時間, 以及執行的命令
記錄到一個文字檔案中.
需要說明, 暫時為考慮檔案大小和被人刪除的情況.
僅是進行一下基本的歷史記錄功能
修改檔案
vim /etc/bashrc
# 注意這個檔案是控制 bash的顯示資訊的, 也可以用來執行部分命令
設定 bash 登入時顯示 時間和ip地址
export MYIP=$(who -m | awk '{print $NF}' | sed 's/[()]//g')
PS1='[\u@\h \W $(date +"%F %T") $MYIP]\$ '
設定 bash 能夠記錄 執行命令的先關資訊
log_command() {
local cmd=$(history 1 | { read x y; echo $y; })
echo "$(whoami) $MYIP $cmd" >> ~/.command_history
}
export PROMPT_COMMAND="log_command"
這樣之後可以在特定使用者的 ~/.command_history 裡面記錄
遠端使用者ip地址, 執行命令的時間 以及記錄具體命令.
一鍵設定
cat >>/etc/bashrc <<'EOF'
export MYIP=$(who -m | awk '{print $NF}' | sed 's/[()]//g')
PS1='[\u@\h \W $(date +"%F %T") $MYIP]\$ '
PROMPT_COMMAND='history -a; history -c; history -r'
log_command() {
local cmd=$(history 1 | { read x y; echo $y; })
echo "$(whoami) $MYIP $cmd" >> ~/.command_history
}
export PROMPT_COMMAND="log_command"
EOF
注意, 可以透過給上面的EOF 增加單引號來避免
cat 內部要增加的檔案的變數進行替換.
方法比較高效.
關於配置檔案的解釋
在 Linux 系統中,.bashrc 和 .vimrc 等檔案中的 rc 是指 “run commands” 或 “runtime configuration”。
這些檔案用於配置和定製相應的軟體或 shell 的行為。以下是對 .bashrc 和 .vimrc 檔案的詳細解釋:
.bashrc
檔案位置: 通常位於使用者的主目錄下,如 ~/.bashrc。
用途: 當使用者啟動一個互動式的非登入 Shell 時,Bash 會讀取並執行 .bashrc 檔案中的命令。
這些命令通常用於設定環境變數、定義別名、配置命令提示符和其他 Shell 行為。
示例:
# Set a custom prompt
PS1='[\u@\h \W]\$ '
# Alias definitions
alias ll='ls -la'
alias gs='git status'
.vimrc
檔案位置: 通常位於使用者的主目錄下,如 ~/.vimrc。也可以在 /etc/vimrc(系統範圍配置)中找到。
用途: 用於配置 Vim 文字編輯器的行為和外觀。
使用者可以在 .vimrc 檔案中設定各種 Vim 選項、對映快捷鍵、定義函式等。
示例:
# Enable syntax highlighting
syntax on
# Set line numbers
set number
# Set tabs to spaces
set expandtab
set tabstop=4
set shiftwidth=4
rc 的歷史
rc 的使用可以追溯到 Unix 的早期。
最初的 Unix 系統使用 rc 檔案來自動執行一系列初始化命令。
rc 是 “runcom” 的縮寫,起源於 MIT 的 CTSS 系統,
在 Unix 世界中被採納用於指代指令碼或配置檔案,這些檔案在系統啟動或程式執行時被執行。
總結
.bashrc: Bash Shell 的配置檔案,用於設定 Shell 環境。
.vimrc: Vim 文字編輯器的配置檔案,用於定製 Vim 的行為和外觀。
rc: “run commands” 或 “runtime configuration” 的縮寫,
用於表示這些檔案包含的命令或配置將在某個時間點自動執行,通常是程式啟動時。