我写了一个脚本,它检查给定文件夹内的所有php文件,以便每小时更改一次,以便我可以检测到可能的代码注入和它们的完整性。 到目前为止,我的方法似乎有点慢,并且分解了太多的进程。 代码如下:
/usr/bin/find /home/www -name "*.php" -exec ls -l \{} \;
有没有更好的办法?
请注意我至less需要每个文件的完整path,权限,所有者,组和修改时间。
谢谢!
查找有一个内置的行动“-ls”应该做你所需要的(见下文)。 如果这不是您所追求的信息,您也可以使用-printf和format指令来精确控制打印的内容。
james@Brindle:/tmp/blah$ time /usr/bin/find . -name "*.php" -exec ls -l \{} \; -rw-r--r-- 1 james wheel 0 8 Jul 08:50 ./other.php -rw-r--r-- 1 james wheel 0 8 Jul 08:50 ./thing.php real 0m0.015s user 0m0.005s sys 0m0.008s james@Brindle:/tmp/blah$ time find . -ls 1631212 0 drwxr-xr-x 4 james wheel 136 8 Jul 08:50 . 1631215 0 -rw-r--r-- 1 james wheel 0 8 Jul 08:50 ./other.php 1631213 0 -rw-r--r-- 1 james wheel 0 8 Jul 08:50 ./thing.php real 0m0.006s user 0m0.002s sys 0m0.003s
使用: find /home/www/ -type f -mmin -60 -iname '*.php'
-type f会加速检查,因为它只限于文件。
-mmin -60是在60分钟前修改的所有文件。
如果你需要更多的信息,你可以用类似下面的方法传给xargs : find /home/www/ -type f -mmin -60 -iname '*.php' | xargs stat find /home/www/ -type f -mmin -60 -iname '*.php' | xargs stat
你可能想看看助手 。 它正是你正在描述,并带来更多的function。