第二十二章、软件安装:原始码与 Tarball
最近升级日期:2009/09/15

大标题的图示重点回顾
  • 原始码其实大多是纯文字档,需要透过编译器的编译动作后,才能够制作出 Linux 系统能够认识的可运行的 binary file ;
  • 开放原始码可以加速软件的升级速度,让软件效能更快、漏洞修补更即时;
  • 在 Linux 系统当中,最标准的 C 语言编译器为 gcc ;
  • 在编译的过程当中,可以藉由其他软件提供的函式库来使用该软件的相关机制与功能;
  • 为了简化编译过程当中的复杂的命令输入,可以藉由 make 与 makefile 守则定义,来简化程序的升级、编译与连结等动作;
  • Tarball 为使用 tar 与 gzip/bzip2 压缩功能所打包与压缩的,具有原始码的文件;
  • 一般而言,要使用 Tarball 管理 Linux 系统上的软件,最好需要 gcc, make, autoconfig, kernel source, kernel header 等前驱软件才行,所以在安装 Linux 之初,最好就能够选择 Software development 以及 kernel development 之类的群组;
  • 函式库有动态函式库与静态函式库,动态函式库在升级上具有较佳的优势。动态函式库的扩展名为 *.so 而静态则是 *.a ;
  • patch 的主要功能在升级原始码,所以升级原始码之后,还需要进行重新编译的动作才行;
  • 可以利用 ldconfig 与 /etc/ld.so.conf 来制作动态函式库的连结与缓存!
  • 透过 MD5 的编码可以判断下载的文件是否为原本厂商所释出的文件。

大标题的图示本章习题
实作题部分:
情境模拟题部分:
  • 请依照底下的方式来建置你的系统的重要文件指纹码,并每日比对此重要工作。

    1. 将 /etc/{passwd,shadow,group} 以及系统上面所有的 SUID/SGID 文件创建文件列表,该列表档名为『 important.file 』;
      [root@www ~]# ls /etc/{passwd,shadow,group} > important.file
      [root@www ~]# find /bin /sbin /usr/sbin /usr/bin -perm +6000 \
      > >> important.file
      

    2. 透过这个档名列表,以名为 md5.checkfile.sh 的档名去创建指纹码,并将该指纹码文件『 finger1.file 』配置成为不可修改的属性;
      [root@www ~]# vim md5.checkfile.sh
      #!/bin/bash
      for filename in $(cat important.file)
      do
              md5sum $filename >> finger1.file
      done
      
      [root@www ~]# sh md5.checkfile.sh
      [root@www ~]# chattr +i finger1.file
      

    3. 透过相同的机制去创建后续的分析数据为 finger_new.file ,并将两者进行比对,若有问题则提供 email 给 root 查阅:
      [root@www ~]# vim md5.checkfile.sh
      #!/bin/bash
      if [ "$1" == "new" ]; then
          for filename in $(cat 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 important.file)
      do
          md5sum $filename >> finger_new.file
      done
      
      testing=$(diff finger1.file finger_new.file)
      if [ "$testing" != "" ]; then
          diff finger1.file finger_new.file | mail -s 'finger trouble..' root
      fi
      
      [root@www ~]# vim /etc/crontab
      30 2 * * * root cd /root; sh md5.checkfile.sh
      
      如此一来,每天系统会主动的去分析你认为重要的文件之指纹数据,然后再加以分析,看看有没有被更动过。 不过,如果该变动是正常的,例如 CentOS 自动的升级时,那么你就得要删除 finger1.file , 再重新建置一个新的指纹数据库才行!否则你会每天收到有问题信件的回报喔!

大标题的图示参考数据与延伸阅读

 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室