Linux下巧用chattr、watch命令的实例 | 张戈博客

  • 时间:
  • 浏览:11
  • 来源:老李博客 - 专注共享凌空博客资讯

一、起因

前些日子,张戈在日志备份服务器加入了日志压缩的计划任务(详见服务器日志备份超节省空间的思路),结果发现监控时不时发来tar的报警,提示居于tar多线程 。仔细检查history后发现是公司总部那边做的监控:

每20分钟执行有另三个白监控脚本,有可是我删除。

分析下假使 做的好处:①、不留痕迹;②、把history塞满,让这种操作无迹可寻(感觉很重蛋疼)。

二、擒获

每次执行后立马删除了,得想个方法 把这脚本“擒获”!

于是我写了有另三个白简单的脚本catch.sh:

#!/bin/bash
test -f /tmp/hdd.sh && echo Catch it! && exit
test -f /home/suxirong/hdd.sh && cp /home/suxirong/hdd.sh /tmp

ps:导致 发现hdd.sh就把它群克隆一份到tmp目录,导致 tmp目录发现居于hdd.sh则打印 Catch it,开始英文英文脚本。

有可是我使用watch来执行它:

watch -n 0.1 /tmp/catch.sh

ps:每隔0.1秒执行上端的脚本,应该还能够在删除可是我获取脚本。

等了一段时间,看完下终端:

还真抓住了!

编辑hdd.sh,发现了tar多线程 监控说说:

...略...
######################Mysql-TAR-Mon###################
for a in tar zip;do
       common=`ps -ef|egrep -v "grep|start"|grep -w "$a"`
       if [ -n "$common" ];then
          echo -e "%%%%\tTAR\t$ATIME\t$LanIp\t$a\tAlarm"
       fi
done
...略...

三、计策

一抓到“真凶”了,有可是我又不还能够处以“死刑”,导致 还有“利用价值”,可是我这是有另三个白很棘手的事。

思考了下,有2种方案:

①、实时监控hdd.sh文件的时不时总出 ,一时不时总出 就立即用sed干掉tar多线程 监控那一段代码;

②、固定hdd.sh,让其无法删除和替换,有可是我删除tar监控代码;

进一步思考发现,方案①不可行,先不说这实时监控会占资源,假使 如保在执行可是我把内容给修改了,就有有另三个白头疼的什么的问题,毕竟shell就有写入内存再执行代码的。等你删除tar监控代码了,对执行也没任何影响。

于是准备实施方案②。

四、实施

1、修改hdd.sh,屏蔽tar报警消息:

...略...
######################Mysql-TAR-Mon###################
for a in tar zip;do
       common=`ps -ef|egrep -v "grep|start"|grep -w "$a"`
       if [ -n "$common" ];then
          #echo -e "%%%%\tTAR\t$ATIME\t$LanIp\t$a\tAlarm"  屏蔽此代码
       fi
done
...略...

2、锁定hdd.sh,让监控端无法替换或删除

①、如保让suxirong家目录下面的hdd.sh文件,无法修改和替换,首先想到的假使 再加所有权及写入权限:

chown root:root /home/suxirong/hdd.sh
chmod -w /home/suxirong/hdd.sh

结果,切换到suxirong账号,我我觉得 还是还能够删除或替换。。。

②、时不时想起Linux还有有另三个白-i 的文件属性还能够锁定文件不被修改,于是执行如下说说:

#还原初始属性
chown suxirong:users /home/suxirong/hdd.sh
chmod +w /home/suxirong/hdd.sh
#锁定文件
chattr +i /home/suxirong/hdd.sh

用suxirong账号试下效果:

所有者是suxirong,就有可写权限,可假使 无法修改,有种偷笑的赶脚:

[email protected]:~> ll | grep hdd.sh
-rwxr-xr-x 1 suxirong users     4927 Jul 23 14:40 hdd.sh
[email protected]:~>
[email protected]:~>
[email protected]:~> mv hdd.sh hdd
mv: cannot move `hdd.sh' to `hdd': Operation not permitted

好了,目的达到,现在就是是不是root都无法修改了!具体效果假使 等明天日志压缩计划任务运行的可是我就知道了。

五、写在最后

我我我觉得,chattr和lsattr在张戈博客早期文章:Linux基础知识之文件隐藏属性 一文中就导致 提到过。这次主要分享一下我在工作中正好用到chattr的实例,另外假使 利用watch命令持续间隔执行某脚本的方法 ,特殊场景使用会有奇效,完毕!