sync echo 3 > /proc/sys/vm/drop_caches
# 安裝工具 sudo yum install inotify-tools.x86_64 nohup inotifywait -m -r -e access,create,move,delete /home/vince --timefmt '%d/%m/%H:%M' --format '%T %w %f %e' & <<COMMENT 輸出 Setting up watches. Beware: since -r was given, this may take a while! Watches established. 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ sas CREATE 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ ACCESS,ISDIR 09/08/10:41 /home/aurora/ sas DELETE COMMENT
sudo pkill -kill -t pts/0
# 遠程ssh,第一行添加 /etc/pam.d/sshd # 終端,第一行添加 /etc/pam.d/login auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=1200 # 查看用戶錯誤登錄次數,使用pam_tally2 pam_tally --user tom pam_tally2 --user tom # 重置用戶錯誤登錄次數 pam_tally2 --user tom --reset
# 列出當前登陸主機的用戶列表 users # 查看系統運行了多長時間 uptime
# 默認間隔時間2秒 watch 'ls' watch -n 5 'ls -l'
yum provides */nslookup apt search ifconfig
cat message | wall # 向指定用戶發送消息 write hz pts/1 Hello world! # 目錄/dev/pts中包含着與每一位系統終端中登陸用戶所對應的字符設備
# logrotate 的配置目錄位於/etc/logrotate.d # 爲本身的日誌文件(好比/var/log/program.log)編寫一個特定的配置 $ cat /etc/logrotate.d/program /var/log/program.log { missingok notifempty size 30k compress weekly rotate 5 create 0600 root root } # logger命令默認把日誌輸出到/var/log/message中 # logger This is a test log line
# 查看電量使用狀況 powertop # 生成html報表 powertop --html
fsck /dev/sdb3
rsync - a fast, versatile, remote (and local) file-copying tool # 將源目錄複製到目的端 rsync -avz /home/slynux/data slynux@192.168.0.6:/home/backups/data # -a 歸檔模式 # -v 顯示進度,詳細內容 # -z 傳輸時壓縮文件 # 在更新 rsync 備份時,刪除不存在的文件(默認狀況下, rsync 並不會在目的端刪除那些在源端已不存在的文件) rsync -avz SOURCE DESTINATION --delete # 按期進行備份(10小時備份一次) crontab -e 0 */10 * * * rsync -avz /home/code user@IP_ADDRESS:/home/backups
# 彈出光盤 eject # 合上光盤 eject -t
# 錄製(record) script -t 2> timing.log -a output.session # 回放(replay) scriptreplay timing.log output.session
ssh-keygen -t rsa # 修改受權文件權限 chmod 600 authorized_keys
vim /etc/motd
# /proc 是一個在內存中的僞文件系統(pseudo filesystem)。在運行時訪問內核內部數據結構、改變內核設置的機制。 # 它只存在內存當中,而不佔用外存空間。它以文件系統的方式爲訪問系統內核數據的操做提供接口。 # 在/proc下還有三個很重要的目錄:net,scsi和sys。 # 系統中每個運行的進程在 /proc 中都有一個對應的目錄。目錄名和進程ID相同。
#!/bin/bash # 文件名: watchdir.sh # 用途: 監視目錄訪問,安裝inotify-tools path=$1 # 將目錄或文件路徑做爲腳本參數 inotifywait -m -r -e access,create,move,delete $path
#!/bin/bash #文件名:intruder_detect.sh #用途:入侵報告工具,以auth.log做爲日誌文件 AUTHLOG=/var/log/auth.log if [[ -n $1 ]]; then AUTHLOG=$1 echo Using Log file : $AUTHLOG fi LOG=/tmp/valid.$$.log grep -v "invalid" $AUTHLOG > $LOG users=$(grep "Failed password" $LOG | awk '{ print $(NF-5) }' | sort | uniq) printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s\n" "Sr#" "User" "Attempts" "IP address" "Host_Mapping" "Time range" ucount=0; ip_list="$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" $LOG | sort | uniq)" for ip in $ip_list; do grep $ip $LOG > /tmp/temp.$$.log for user in $users; do grep $user /tmp/temp.$$.log> /tmp/$$.log cut -c-16 /tmp/$$.log > $$.time tstart=$(head -1 $$.time); start=$(date -d "$tstart" "+%s"); tend=$(tail -1 $$.time); end=$(date -d "$tend" "+%s") limit=$(( $end - $start )) if [ $limit -gt 120 ]; then let ucount++; IP=$(egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" /tmp/$$.log | head -1 ); TIME_RANGE="$tstart-->$tend" ATTEMPTS=$(cat /tmp/$$.log|wc -l); HOST=$(host $IP | awk '{ print $NF }' ) printf "%-5s|%-10s|%-10s|%-10s|%-33s|%-s\n" "$ucount" "$user" "$ATTEMPTS" "$IP" "$HOST" "$TIME_RANGE"; fi done done rm/tmp/valid.$$.log/tmp/$$.log $$.time/tmp/temp.$$.log 2>/dev/null
#!/bin/bash #用戶名: active_users.sh #用途:查找活躍用戶 log=/var/log/wtmp if [[ -n $1 ]]; then log=$1 fi printf "%-4s %-10s %-10s %-6s %-8s\n" "Rank" "User" "Start" "Logins" "Usage hours" last -f $log | head -n -2 > /tmp/ulog.$$ cat /tmp/ulog.$$ | cut -d' ' -f1 | sort | uniq> /tmp/users.$$ ( while read user; do grep ^$user /tmp/ulog.$$ > /tmp/user.$$ minutes=0 while read t do s=$(echo $t | awk -F: '{ print ($1 * 60) + $2 }') let minutes=minutes+s done< <(cat /tmp/user.$$ | awk '{ print $NF }' | tr -d ')(') firstlog=$(tail -n 1 /tmp/user.$$ | awk '{ print $5,$6 }') nlogins=$(cat /tmp/user.$$ | wc -l) hours=$(echo "$minutes / 60.0" | bc) printf "%-10s %-10s %-6s %-8s\n" $user "$firstlog" $nlogins $hours done< /tmp/users.$$ ) | sort -nrk 4 | awk '{ printf("%-4s %s\n", NR, $0) }' rm /tmp/users.$$ /tmp/user.$$ /tmp/ulog.$$