linux下查看文件被哪个进程读写

一台服务器被写入了一个ddos木马,会在/root下生成一个conf.n的文件,删除后很快又会自动生成,用lsof没办法查出来谁在读写这个文件。此时可以使用stap来监控。
1、df
/dev/xvda1      20509308 10556432   8888020  55% /
找到对应目录挂载的磁盘
2、ls -al /dev/xvda1
brw-rw—- 1 root disk 2021 Dec 20 15:33 /dev/xvda1
找到磁盘在系统中对应的序号
3、stat -c '%i'  conf.n
920087
找到要监视的文件对应的系文件系统ID
4、wget https://raw.githubusercontent.com/soarpenguin/systemtap-script/master/inodewatch.stp
下载需要用到的脚本
5、stap inodewatch.stp 202 1 920087
开始监控指定文件
测试:cat conf.n
cat(25149) vfs_read 0xca00001/920087
cat(25149) vfs_read 0xca00001/920087
可以看到哪个命令、进程号访问了指定的文件

执行stap时,如果报错,错误内容为找不到系统debug库之类的,需要安装debuginfo库:

echo "deb http://ddebs.ubuntu.com $(lsb_release -cs) main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-updates main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-security main restricted universe multiverse
deb http://ddebs.ubuntu.com $(lsb_release -cs)-proposed main restricted universe multiverse
" | sudo tee -a /etc/apt/sources.list.d/ddebs.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 428D7C01
apt-get updateapt-get install linux-image-$(uname -r)-dbgsym
centos下:
yum install systemtap kernel-devel debuginfo-install kernel

发表评论

电子邮件地址不会被公开。 必填项已用*标注