1 /var

/var 包括系统运行时要改变的数据。其中包括每个系统是特定的,即不能够与其他计算机共享的目录,如/var/log,/var/lock,/var/run。有些目录还是可以与其他系统共享,如/var/mail, /var/cache/man, /var/cache/fonts,/var/spool/news。var目录存在的目的是把usr目录在运行过程中需要更改的文件或者临时生成的文件及目录提取出来,由此可以使usr目录挂载为只读的方式。隐含要求var目录必须挂载为可以读写的方式。

通过对于该目录的分析注意如下的需要

1) 各个目录存在的目的以及作用。

2) 通过目录中的信息能够获得什么信息,如何对于该信息进行访问。

3) 对于目录中的文件操作是否安全。

/var/account/pact

目的:该目录保存系统中使用的进程记录。当一个进程终止时,把每个进程向统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。该文件可以通过数据的工具(sa,ac)进行分析。

使用:进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须 用root身份来运行。accton命令的形式accton file,file必须先存在。如果不存在则先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton: accton /var/account/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。

pact文件不可用cat直接读取其中的内容。

注意:该文件会大量增长,需要注意维护(删除,转储)

/var/crash

目的:系统崩溃时转储的文件,可以通过该文件分析down机的原因。

使用: crash工具对于该目录中的文件进行分析。参考文档linux-2.6.20.6/Documentation/kdump/kdump.txt

crash -S /boot/System.map-2.6.18-53.el5PAE /boot/vmlinuz-2.6.18-53.el5PAE /var/crash/xxxx

/var/cache

目的:存放应用程序的缓存数据,保存在该目录中的数据应用程序可以再生成,所以该目录中的数据丢失后不会影响系统。

/var/empty

/var/games

/var/lib

该目录保存系统或者某个应用程序运行过程中的状态信息。用户不允许更改该目录下的文件。

/var/mail

邮件存储文件的目录,在CGS中链接到/var/spool/mail。在fhs文档中明确提出把它从/var/spool/mail提取出来以便于多主机多个应用程序共同使用。

/var/opt

add-on application在该目录下存放变量,在/opt下存放静态变量。

/var/tmp

应用程序产生的临时文件,可以定时整理。/usr/tmp -> ../var/tmp。

/var/lock

许多程序遵循在/var/lock 中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件,将不试图使用这个设备或文件。注意该目录不可以随便更改。

/var/run

保存着自系统启动后的在该系统中正在运行的进程pid号,并非所有的进程都在该目录下存在pid文件。每个pid文件的作用与其应用程序相关,基本的作用就是标志该进程已经运行,且标志出该进程的pid号。在/var/run/subsys/目录中有对应的文件。当系统启动后不用删除其中的文件,系统启动后会清除该目录中的文件。/var/run/utmp是一个二进制文件,记录当前登录系统的用户信息。可用如who、w、users、finger命令显示当中的内容。该日志文件并不能包括所有精确的信息,因为某些突发错误会终止用户登录会话,而系统没有及时更新utmp记录,因此该日志文件的记录不是百分之百值得信赖的。

/etc/init.d/sendmail文件对于/var/run和/var/lock/subsys目录中的文件的有使用事例

/var/spool

保存某些需要后续进程继续处理的数据。当进程处理完成保存的数据文件后,会把该文件删除。该目录中的数据不要人工进行删除。

查找给目录中各个子目录的归属方法(以目录/var/spool/voice为例):

[root@localhost spool]# rpm -qf /var/spool/voice

mgetty-voice-1.1.33-9.fc6

由此可以找出/var/spool/voice目录与mgetty-voice包相关,从而可以使用如下命令来分析mgetty-voice包的命令及其作用。

/var/local

存放/usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。

/var/preserve

编辑器存放的临时文件

/var/log

/var/log/boot.log

该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息。Redhat决定淘汰对initlog的使用,所以在/etc/init.d/functions中将所有调用initlog的命令给注释起来了,由此该文件为空。

/var/log/cron

该日志文件记录crontab守护进程crond所派生的子进程的动作。格式如下:

Aug 17 07:40:01 localhost crond[9434]: (root) CMD (/usr/lib/sa/sa1 1 1)

/var/log/maillog

该日志文件记录了每一个发送到系统或从系统发出的电子邮件的活动。它可以用来查看用户使用哪个系统发送工具或把数据发送到哪个系统。

/var/log/syslog

​ 默认RedHatLinux不生成该日志文件,但可以配置/etc/syslog.conf让系统生成该日志文件。它和/etc/log/messages日志文件不同,它只记录警告信息,常常是系统出问题的信息,所以更应该关注该文件。要让系统生成该日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog该日志文件能记录当用户登录时login记录下的错误口令、Sendmail的问题、su命令执行失败等信息。

/var/log/lastlog

​ 该日志文件记录最近成功登录的事件和最后一次不成功的登录事件,由login生成。在每次用户登录时被查询,该文件是二进制文件,需要使用lastlog命令查看,根据UID排序显示登录名、端口号和上次登录时间。如果某用户从来没有登录过,就显示为”Neverloggedin“。该命令只能以root权限执行。

/var/log/wtmp

​ 该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。因此随着系统正常运行时间的增加,该文件的大小也会越来越大,增加的速度取决于系统用户登录的次数。该日志文件可以用来查看用户的登录记录,last命令就通过访问这个文件获得这些信息,并以反序从后向前显示用户的登录记录,last也能根据用户、终端tty或时间显示相应的记录。

​ /var/run/utmp 见/var/run目录

​ 以上提及的3个文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系统的关键文件,都记录了用户登录的情况。这些文件的所有记录都包含了时间戳。这些文件是按二进制保存的,故不能用less、cat之类的命令直接查看这些文件,而是需要使用相关命令通过这些文件而查看。

/var/log/xferlog

​ 该日志文件记录FTP会话,可以显示出用户向FTP服务器或从服务器拷贝了什么文件。该文件会显示用户拷贝到服务器上的用来入侵服务器的恶意程序,以及该用户拷贝了哪些文件供他使用。

​ 该文件的格式为:第一个域是日期和时间,第二个域是下载文件所花费的秒数、远程系统名称、文件大小、本地路径名、传输类型(a:ASCII,b:二进制)、与压缩相关的标志或tar,或”_”(如果没有压缩的话)、传输方向(相对于服务器而言:i代表进,o代表出)、访问模式(a:匿名,g:输入口令,r:真实用户)、用户名、服务名(通常是ftp)、认证方法(l:RFC931,或0),认证用户的ID或”*”。

/var/log/Xfree86.x.log

​ 该日志文件记录了X-Window启动的情况。

2 /usr

/usr目录的来源

在 linux 文件结构中,有一个很神奇的目录 —— /usr。

讨论中,大部分观点认为:

  • usr 是 unix system resources 的缩写;
  • usr 是 user 的缩写;
  • usr 是 unix software resources 的缩写。

/usr usually contains by far the largest share of data on a system. Hence, this is one of the most important directories in the system as it contains all the user binaries, their documentation, libraries, header files, etc…. X and its supporting libraries can be found here. User programs like telnet, ftp, etc…. are also placed here. In the original Unix implementations, /usr was where the home directories of the users were placed (that is to say, /usr/someone was then the directory now known as /home/someone). In current Unices, /usr is where user-land programs and data (as opposed to ’system land’ programs and data) are. The name hasn’t changed, but it’s meaning has narrowed and lengthened from “everything user related” to “user usable programs and data”. As such, some people may now refer to this directory as meaning ‘User System Resources’ and not ‘user’ as was originally intended.(via 1,2)

根据资料显示,/usr目录是Unix系统资源目录的缩写。

/usr目录结构

  1. /usr/bin : 所有可执行文件,如 gcc,firefox 等(指不包含在 /sbin 和 /bin 内的);
  2. /usr/include : 各种头文件,编译文件等时需要使用;
  3. /usr/include/’package-name’ : 程序特定的头文件;
  4. /usr/lib : 所以可执行文件所需要的库文件;
  5. /usr/local : /usr 通常只包含系统发行时自带的程序,而 /usr/local 则是本地系统管理员用来自由添加程序的目录;
  6. /usr/X11R6 : x 系统的二进制文件,库文件,文档,字体等。它不等同于 /usr 的作用,只有 x 才能调用这些库文件等,其他程序不读取或者使用。因为 linux 没有原生图形界面,而且 linux 大部分情况下是 for server 的,所以图形界面没有意义;其中 X11R6 代表 version 11 release 6;
  7. /usr/X11R6/bin : x 的二进制文件,包含运行 x 的必须文件;
  8. /usr/X11R6/include : x 相关的头文件;
  9. /usr/X11R6/lib : x 库文件;
  10. /usr/X11R6/lib/modules : x 的模块,启动时加载。缺少 video4linux, DRI and GLX 和 输入输出设备 模块,将工作不正常;
  11. /usr/X11R6/lib/X11/fonts : x font server 的字体文件;
  12. /usr/doc : 文档。实际是 /usr/share/doc 的软链接;
  13. /usr/etc : 一个极少用到的配置文件存放地;
  14. /usr/games : 曾经包含游戏等文件,现在很少用到;
  15. /usr/info : 系统相关信息,是 /usr/share/info 的软链接;
  16. /usr/man : man 手册,已经移至 /usr/share/man;
  17. /usr/sbin : 类似 /sbin,root 可以执行。但此目录不包含在环境变量 $PATH 中,它包含的程序类似于 chroot, useradd, in.tftpd and pppconfig;
  18. /usr/share : 它包含了各种程序间的共享文件,如字体,图标,文档等。(/usr/local 对应的目录是 /usr/loca/share);
  19. /usr/share/doc : 类似应用程序的 man 手册。它包含程序的说明文件,默认配置文件等;
  20. /usr/share/info : 不常用,已经被 man 代替;
  21. /usr/share/man : app 的 manual;
  22. /usr/share/icons : 应用程序的图标等文件,分为 png,svg 等多种格式;
  23. /usr/share/fonts : 字体文件,系统范围内可使用,~/.fonts 仅当前用户可用;
  24. /usr/src : linux 内核的源码和说明文档等;
  25. /usr/src/linux : linux 源代码;
  26. /usr/src/linux/.config : 内核编译过程产生的文件;通常由命令 ‘make config’ , ‘make menuconfig’ 或 ‘make xconfig’ 执行后产生;
  27. /usr/src/linux/.depend, /usr/src/linux/.hdepend : ‘make dep’ 检测编译依赖时需要的文件,由 /usr/src/linux/.config 产生;
  28. /usr/src/linux/COPYING : GNU license;
  29. /usr/src/linux/Makefile : 编译内核所需的 Makefile;
  30. /usr/src/linux/Rules.make : 当有多个 Makefile 时,根据它的规则执行 make;
  31. /usr/tmp : 已经被众多发行版抛弃的临时文件夹。

3 /etc

4 /home

5 /bin

6 /sbin

7 /lib

8 /lib64

9 /mnt

10 /opt

11 /tmp

12 /run

13 /proc

14 /sys

15 /dev

16 boot

Reference

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号