# 本章习题

请按照以下的方式来建立你的系统重要文件指纹膜,并每日对比此重要工作

  1. /etc/{passwd,shadow,group} 以及系统上所有的 SUID/SGID 文件建立文件列表,命名为 important.file

    [root@study ~]# ls /etc/{passwd,shadow,group} > important.file
    # 将 SUID/SGID 文件追加写入到文件中
    [root@study ~]# find /usr/sbin/ /usr/bin -perm /6000 >> important.file 
    
    1
    2
    3
  2. 通过这个文档名列表,建立 md5.checkfile.sh 脚本,并将该指纹码文件 finger1.file 设置为不可修改属性

    [root@study ~]# vim md5.checkfile.sh
    #!/bin/bash
    for filename in $(cat /root/important.file)
    do
    	md5sum $filename >> finger1.file
    done
    
    [root@study ~]# sh md5.checkfile.sh
    [root@study ~]# chattr +i finger1.file
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  3. 通过相同的机制去建立后续的分析数据为 finger_new.file ,并将两者进行对比,若有问题则提供 email 给 root 查询

    [root@study ~]# vim md5.checkfile.sh
    #!/bin/bash
    if [ "$1" === "new" ]; then
      for filename in $(cat /root/important.file)
      do
        md5sum $filename >> finger1.file
      done
      echo "New file finger1.file is created."
      exit 0
    fi
    
    if [ ! -f finger1.file ]; then
    	echo "file: finger1.file NOT exist."
    	exit 1
    fi
    
    [ -f finger_new.file ] && rm finger_new.file
    for filename in $(cat /root/important.file)
      do
        md5sum $filename >> finger_new.file
      done
    fi
    
    testing=$(diff finger1.file finger_new.file)
    if [ "$testing" != "" ]; then
    	diff finger1.file finger_new.file | mail -s 'finger trouble..' root
    fi
    
    [root@study ~]# vim /etc/crontab
    30 2 * * * root cd /root; sh md5.checkfile.sh
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30

    以上脚本则可以自动分析这些文件是否有改动