• Linux下var目录介绍


    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启动的情况。

    sysklogd

    syslogd可以简单地被称为记录系统活动的一个daemons。比如可以记录谁,在什么时间,在哪里,做了什么事情;也可以记录系统曾经发生过什么事情,比如什么时候重新引导过、软硬件的错误信息等;当然也记录着您系统上运行着的服务的信息。通常,syslog 接受来自系统的各种功能的信息,每个信息都包括重要级。/etc/syslog.conf 文件决定 syslogd 如何根据设备和信息重要级别来报告信息。

    /usr/include/sys/syslog.h

    处理流程

                                

              /etc/syslog.conf

    /etc/syslog.conf 文件使用下面的形式

                  facility.level    action

    空白行和以#开头的行可以忽略。Facility.level 字段也被称做 seletor。应该使用一次或多次 tab 键分隔 facility 和 action。大部分 Linux 使用这些空格为分隔符。

    facility

           facility 指定 syslog 功能,主要包括以下这些:

                  auth    认证系统,如login或su,即询问用户名和口令

                  cron    系统执行定时任务时发出的信息

                  daemon    某些系统的守护程序的 syslog,如由in.ftpd产生的log

                  kern    内核的信息

                  lpr     打印机的信息

                  mail    处理邮件的守护进程发出的信息

                  mark    定时发送消息的时标程序

                  news    新闻组的守护进程的信息

                  user    本地用户的应用程序的信息

                  uucp    uucp子系统的信息

                  local0----local7   与自定义程序使用,例如使用 local5 做为 ssh 功能

                  *     表示所有可能的信息来源

    level

           与每个功能对应的优先级是按一定顺序排列的,emerg 是最高级,其次是 alert,依次类推。缺省时,在 /etc/syslog.conf 记录中指定的级别为该级别和更高级别。如果希望使用确定的级别可以使用两个运算符号!(不等)和=。

    user.=info

    表示告知 syslog 接受所有在 info 级别上的 user 功能信息。

    syslog 级别如下:

    emerg 或 panic   该系统不可用

    alert            需要立即被修改的条件

    crit             阻止某些工具或子系统功能实现的错误条件

    err             阻止工具或某些子系统部分功能实现的错误条件

    warning         预警信息

    notice           具有重要性的普通条件

    info             提供信息的消息

    debug           不包含函数条件或问题的其他信息

    none            没有重要级,通常用于排错

    *               所有级别,除了none

    action

           action字段所表示的活动具有许多灵活性,特别是,可以使用名称管道的作用是可以使 syslogd 生成后处理信息。

    syslog 主要支持以下活动

    file     指定文件的绝对路径

    terminal 或 print    完全的串行或并行设备标志符

    @host   远程的日志服务器

    username  发送信息到使用 write 的指定用户中

    named pipe  指定使用 mkfifo 命令来创建的 FIFO 文件的绝对路径。

    由于 syslogd 在系统非常繁忙时,可能会丢失信息,所以,可以用 cyclog 替换 syslog。

    logrotate

    rpm -ql logrotate

           man logrotate

           /etc/logrotate.conf

    [root@localhost log]# cat /etc/logrotate.conf

    # see "man logrotate" for details

    # rotate log files weekly

    weekly

    # keep 4 weeks worth of backlogs

    rotate 4

    # create new (empty) log files after rotating old ones

    create

    # uncomment this if you want your log files compressed

    #compress

    # RPM packages drop log rotation information into this directory

    include /etc/logrotate.d

    # no packages own wtmp -- we'll rotate them here

    /var/log/wtmp {

        monthly

        create 0664 root utmp

        rotate 1

    }

    # system-specific logs may be also be configured here.

    运行时机:

    [root@localhost log]# rpm -ql logrotate

    /etc/cron.daily/logrotate

    /etc/logrotate.conf

    /etc/logrotate.d

    /usr/sbin/logrotate

    /usr/share/doc/logrotate-3.7.4

    /usr/share/doc/logrotate-3.7.4/CHANGES

    /usr/share/man/man8/logrotate.8.gz

    /var/lib/logrotate.status

    /etc/logrotate.d/

    [root@localhost log]# cat /etc/logrotate.d/yum

    /var/log/yum.log {

        missingok

        notifempty

        size 30k

        create 0600 root root

    }

    [root@localhost log]# rpm -qf /etc/logrotate.d/yum

    yum-3.0.5-1.el5.centos.5

    参考文档《Filesystem Hierarchy Standard》

    http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part1/

    http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part2/index.html

    http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part3/

  • 相关阅读:
    Source Insight技巧收集
    宝贝,祝你生日快乐!
    【转载】C++中的extern C
    Meego
    source insight增加新类型方法
    点操作符和箭头操作符的异同
    【转载】mtk编译命令
    margin和padding的用法与区别以及bug处理方式
    js数组
    随机验证码,颜色同时刷新
  • 原文地址:https://www.cnblogs.com/zhouhbing/p/4516522.html
Copyright © 2020-2023  润新知