分类: LINUX
2006-08-18 23:09:16
./mbmon-d
Using VIA686 HWM directly!!
* VIA Chip VT
上面内容表示显示主板芯片是威盛的VT
./mbmon
Temp.= 42.1, 33.0, 24.2; Rot.= 5357, 0, 0
Vcore = 1.78, 3.11; Volt. = 3.41, 4.93, 12.19, 0.00, 0.00
上面显示了中央处理器温度为42.1,电源温度为33.0,主板温度为24.2;CPU风扇转速为5357转/分钟;CPU核心电压为1.78伏特,输入电压为12.19伏特、3.41伏特, 4.93伏特。缺省情况下,以上内容五秒钟更新一次记录。
Mbmon在X窗口下运行,运行结果如图1所示。
./xmbmon
图1 mbmon在X窗口下运行
4.远程监控
Mbmon最新版本还提供远程监控的功能:
./mbmon-p 22
其中“-P
硬盘磁道检测
硬盘物理坏道是硬盘的所有Linux硬件故障中最让人头痛的。它轻则使你的Linux计算机频频死机,重则让你的所有数据化为乌有。现在出厂的硬盘(1993年以后)基本上都支持SMART(Self Monitoring Analysis and Reporting Technology)自动检测分析及报告技术。SMART技术可以对硬盘的磁头单元、盘片电机驱动系统、硬盘内部电路以及盘片表面介质材料等进行监测。当SMART监测并分析出硬盘可能出现问题时,会及时向用户报警以避免计算机数据受损失。SMART技术必须在主板支持的前提下才能发生作用,而且 SMART技术也不能保证能预报所有可能发生的硬盘故障。SMART(SFF-8035i)是硬盘生产商们建立的一个工业标准。这个标准就是在硬盘上保存一个跟执行情况、可靠程度、读找错误率等属性的表格。所有属性都有一个1byte(大小范围1-253)的标准化值,还包含另一个1byte的关键阶段值。如果属性表格内某个数据接近小于或达到关键阶段值,表明硬盘工作不正常了。
Smartmontools是一个Linux下硬盘检测工具,主页为http: //smartmontools.sourceforge.net,下载链接:ftp: //fr2.rpmfind.net/linux/sourceforge/smartmontools/smartmontools-5.1-18.i386.rpm。
1.软件安装:
rpm-ivh/smartmontools-5.1-18.i386.rpm
软件安装后会在/usr/local/ 目录下产生程序:smartctl,先检测硬盘和主板是否支持SMART技术(见图2)。
smartctl -i /dev/hda7
图2 检测硬盘是否支持SMART
图2显示笔者的硬盘支持SMART,型号是:ST
2.全面检测硬盘
运行以下硬盘检测命令:
smartctl -A /dev/hda7
图3 硬盘物理逻辑状态
图3是检测到的硬盘信息,其显示的信息根据你的硬盘厂商不同而不同,其中1-202行代表硬盘的不同物理性能,纵列代表硬盘的逻辑状态。
FLAG是标记,标准数值(VALUE)应当小于或等於关键值(THRESH)。WHEN_FAILED 代表错误信息,图3中的WHEN_FAILED纵行是空行,说明硬盘没有故障。如果WHEN_FAILED显示数字,表明硬盘磁道可能有比较大的坏道。
Smartctl有十几个参数,详细情况可以下面的命令查看:
smartctl --help
3.高级应用
我们可以用crontab命令实现每天定时的扫描:
(1)首先建立一个文件,文件名称Linuxect(名称自己设定):
#crontab -e
(2) 文件内容:
05 16 * * 5 smartctl -A /dev/hda7
用vi编辑后存盘退出。使用crontab命令添加到任务列表中:
#crontab Linuxect
这样系统内所有用户在每个星期五的16点05分会自动进行扫描。
内存检测
通常我们会觉得内存出错损坏的几率不大,并且认为如果内存盗耍?敲此?遣豢赡芡ü?靼?IOS的开机自检程序的。事实上这个自检程序的功能很少,而且只是检测容量速度而已,许多内存出错的问题并不能检测出来。如果你在运行程序时不时有某个程序莫名其妙地失去响应;打开文件时偶尔提示文件损坏,但稍后打开又没问题……那你应该考虑检测一下你的内存了。
1.使用Linux命令检测
(1)在命令行使用“Free”命令可以监控内存使用情况
#free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 175420
Swap: 522072 0 522072
上面给出了一个256MB的RAM和512MB交换空间的系统情况。
(2)使甩vmstat命令监视虚拟内存使用情况:
# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 0 63692 10704 101008 0 0 239 42 126 105 48 45 7 0
Vmstat()命令是一个通用监控程序,是Virtual Meomory Statistics(虚拟内存统计)的缩写。如果使用Vmstat命令的时候没有使用它的任何命令行参数,你将得到一个一次性的报告。Vmstat命令报咨的主要的活动类型有进程(procs)、内存(以千字节为单位)、交换分区 (以千字节为单位)、来自块设备(硬盘驱动器)的输入输出量、系统中断(每秒钟发生的次数)、中央处理单元(CPU)分配给用户系统和空闲时所分别占用比例。
2.使用工具软件检测
Memtest86是一款免费的内存测试软件,测试准确度比较高,内存的隐性问题也能检查出来。可以到页面下载它的最新3.0版本。
下载链接:memtest86-3.0.tar.gz
软件安装:
# tar xzvf memtest86-2.5.tar.gz
# cd memtest86-2.5
# make
然后,将一张
# make install
另外也可以下载memtest86-3.0.iso.gz 文件,解压后是一个IOS文件,刻录到光盘,再来启动计算机。
重新启动计算机,在BIOS中设定用软驱启动即可,软件运行界面见图4。
图4 Memtest86软件运行界面
图4中可以看到当前系统所采用的处理器型号:AMD-Duron和频率:1056,以及CPU的一级缓存(128k)和二级缓存 (64k),系统物理内存的容量(64)和速度(315MB/s)。最后显示的是主板所采用的芯片组类型。在系统信息的右侧显示的是测试的进度。 “Pass”显示的是主测试进程完成进度。“Test”显示的是当前测试项目的完成进度。“Test #
设定检测选项:我们可以单击“C”键打开Memtest86的设置菜单,接着单击数字键“2”选择“Test Selection”选项,再单击数字键“3”选择“All Test”选项打开完全测试模式(如图5所示)。
图5 设定检测选项
主要的内存突发问题(比如“死亡”位)将在几秒钟内检测出来。如果是由特定位模式触发的故障,则需要长时间测试才能检测出来。如果你的内存容量比较大,就需要有耐心等待检测结果。笔者使用的测试内存容量是64MB,PC133。使用完全检测模式使用的时间是24分钟。
小结
中央处理器、硬盘、内存是Linux系统的核心。Linux 负有盛名的特点之一是其非凡的稳定性。如果您的硬件有缺陷或配置不正确,那么系统内的数据的安全就危险了,所以实时检测它们的状态是重要的。
红联Linux论坛:
__________________
希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐
---------------------------------------------
http://tzhsuccess.itpub.net
向版主反映这个帖子 查看tzhsuccess 的IP地址
96楼 旧帖 06-07-17 23:28
[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复
tzhsuccess
高级会员
注册日期: 2004 Apr
来自: 太?系-?子座
技术贴数:7934
论坛积分:31670
论坛排名:67
论坛徽章:23
会员2006贡献徽章 行业板块每日发贴之星 每日论坛发贴之星 ERP板块每日发贴之星
解读Linux文件权限的设置方法
Windows系统其实和Linux系统有相似的地方,Windows系统文件、目录的属性有只读、隐藏,而Linux也一样。
Linux中,每一个文件都具有特定的属性。主要包括文件类型和文件权限两个方面。可以分为5种不同的类型:普通文件、目录文件、链接文件、设备文件和管道文件。
所谓的文件权限,是指对文件的访问权限,包括对文件的读、写、删除、执行。Linux 是一个多用户操作系统,它允许多个用户同时登录和工作。因此Linux将一个文件或目录与一个用户或组联系起来。
访问控制列表(ACL:Access Control List)为计算机提供更好的访问控制,它的作用是限制包括root用户在内的所有用户对文件、资源或者套接字的访问。下面就来教大家简单的设置方法。
步骤1 检查系统核心
首先检查你的Linux系统的核心是否有支持ACL的功能。因为Linux系统并不是每一个版本的核心都有支持ACL的功能,而最简单的方法就是检查系统目前的核心能否支持:
[root@mail /]# cat /boot
/config-kernel-version | grep -i ext3
CONFIG_EXT3_FS=m
CONFIG_EXT3_IDEX=y
CONFIG_EXT3_FS_XATTR_SHARING=y
CONFIG_EXT3_FS_XATTR_USER=y
CONFIG_EXT3_FS_XATTR_TRUSTED=y
CONFIG_EXT3_FS_ACL=y
此时如果能看到上面的几项则表示已经编译到核心中,ext3文件系统已支持ACL功能,这些功能在编译核心选项中都可以找到。如果编译时找不到,可以到ACL的官方网站来安装Kernel()。
步骤2 挂载分区
你可以用下列的方式挂载分区并启用ACL:
#mount -t ext3 -o acl /dev/sda1 /fs1
你也可以直接写在/etc/fstab文件中,这样就可以在开机后支持ACL功能:
#vi /etc/fstab
步骤3 设置ACL权限
ACL常常针对个别用户来进行设置,下面是多个不同的例子:
例如需要创建test1、test2、test3三个用户,可以先用root身份登录系统,然后执行以下命令分别创建三个用户名和密码:
[root@mail root]#adduser test1
[root@mail root]#adduser test2
[root@mail root]#adduser test3
[root@mail root]#passwd test1
[root@mail root]#passwd test2
[root@mail root]#passwd test3
然后mount一个ext3文件到目录/fs1:
[root@mail root]#mount -t
ext3 -o acl /dev/sda1 /fs1
再将test1 建立的文件设置读写的权限给test2 :
[root@mail root]#chmod -R 777 /fs1
让所有的用户都能增加文件到目录的权限:
先用test1登录系统,执行命令:
[test1@mail test1]# cd /fs1
[test1@mail fs1]
# echo "Create by test1" > test1.txt
[test1@mail fs1]
# chmod go-r test1.txt
[test1@mail fs1]
# ll test1.txt
-rw------- 1 test1 test1 17
Jul 14 22:11 test1.txt
而如下操作则可以让除了test1有读写的权限外其他人没有读写test1.txt的权限(root除外),先用test2 登录系统后执行以下命令:
[test2@mail test2]# cd /fs1
[test2@mail fs1]# cat test1.txt
cat : test1.txt Permission denied
接着用test1登录系统,执行如下命令:
[test1@mail fs1]# setfacl -m u:
test2:rw test1.txt
这样就修改权限允许test2 有这个文件的读写权限。再看一下它的文件属性的变化:
[test1@mail fs1]# ll
-rw-rw-r--+ 1 test1 test1 10
Feb 16 13:52 test1.txt
会看到后面多了一个“+”,表示这个文件使用ACL的属性设置,再用命令getfacl来看ACL的文件属性设置:
[test1@mail fs1]
# getfacl test1.txt
# file: test1.txt
# owner: test1
# group: test1
user::rw-
user:test2:rw-
group::rw-
mask::rw-
other::r--
可以看到test2有权限读写这个文件。我们再用test2登录系统执行以下命令,看看发生了什么?
[test2@mail test2]
# cd /fs1
[test2@mail fs1]
# cat test1.txt
Create by test1
原来test2可以读取test1.txt文件了。
[test2@mail fs1]
# echo "Modify by test2" >> test1.txt
[test2@mail fs1]
# cat test1.txt
Create by test1
Modify by test2
现在test2也可以修改test1.txt文件了。
接着用test3 登录系统:
[test3@mail test3]
# cd /fs1
[test3@mail fs1]
# cat test1.txt
cat : test1.txt Permission denied
除了test1、test2外没有其他用户有读写test1.txt的权限(root 除外)。
看着虽然有点晕,其实命令就是这么一两条,主要是把各种情况给大家讲清楚,这样,大家在使用Linux中才会发现,比起脆弱的Windows的权限防护,Linux实在是做得相当不错!
红联Linux论坛:
__________________
希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐
---------------------------------------------
http://tzhsuccess.itpub.net
向版主反映这个帖子 查看tzhsuccess 的IP地址
97楼 旧帖 06-07-17 23:28
[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复
tzhsuccess
高级会员
注册日期: 2004 Apr
来自: 太?系-?子座
技术贴数:7934
论坛积分:31670
论坛排名:67
论坛徽章:23
会员2006贡献徽章 行业板块每日发贴之星 每日论坛发贴之星 ERP板块每日发贴之星
解析Linux特殊文件
Linux下可以用ls ?l 命令来判断文件类型,如上 图所示。可以依据第一列中的10个字符来判断。
• -rw-r?r?指明了1.txt文件是一个普通文件,1.txt和myprog04文件都是普通文件。以”-“开头的都是普通文件,而以”d”开头的是目录文件。
• brw-rw---- 指明了/dev/sda1是一个块设备(Block Device)文件。以”b”开头的文件都是块设备文件。•
• crw-rw----指明了/dev/lp0是一个字符设备(Chartacter Device)文件,以”c”开头的文件都是字符设备文件。
• srwxrwxrwx 指明了/var/lib/mysql/mysql.sock是一个socket文件。以””开头的文件都是socket文件。
• prwxr?r--指明了了mypipe 是一个管道文件。管道文件的一个属性是”p”。
• lrwxrwxrwx 指明了softlinkof1.txt 是一个软链接文件(或称符号链接文件),该文件指向了1.txt。以”l”开头的文件是软链接文件。
• -rw-r?r?开头的hard_link_of_1.txt看上去是个普通文件,但它实际上是一个硬链接文件。
• -rwsr-xr-x指明了myprog01是一个setUid的可执行文件,这是根据第四个字符”s”判断的。
• -rwxr-sr-x指明了myprog03是一个setGid的可执行文件,这是根据第七个字符中的”s”判断的。
• -rwsr-sr-x指明了myprog02是一个setUid加setGid的可执行文件,这是根据第四个和第七个字符中的”s”判断的。
• drwxrwxrwt 中的第一个”d”字指明了tmp文件是一个目录,最后一个字符”t”指明了该目录被设置了粘着位。
一、设备文件
Linux下的/dev 目录中有大量的设备文件。主要是块设备文件和字符设备文件。
块设备文件
在过去,在添加新磁盘后,往往需要手动增加块设备文件。现在通常我们不需要手动增加块设备文件,运行一下service kudzu start ,系统就会自动为您配置相应的设备。块设备的主要特点是可以随机读写,而最常见的块设备就是磁盘,如/dev/hda1 、/dev/sda2、/dev/fd0等。
字符设备文件
同块设备一样,我们一般都可以用service kudzu start命令来自动增加、删除或修改字符设备。最常见的字符设备是打印机和终端,他们可以接受字符流。
/dev/null是一个非常有用的字符设备文件,送入这个设备的所有东西都被忽略。如果将任何程序的输出结果重定向到/dev/null,则看不到任何输出信息。甚至于,您可以将某一用户的shell指向/dev/null 以禁止其登陆。
管道设备文件
管道设备文件有时候也被叫做FIFO文件(FIFO是先进先出的意思),从字面上理解,管道设备文件就是从一头流入,从另一头流出。通常我们会在其中做一些工作,以达到我们“吃的是草,挤出来的是奶”的目的,管道文件也有其妙用。
以前,Unix系统对文件的最大用量用2GB的限制,虽然现在新版本的Linux、Solaris、FreeBSD等不再有此限制,但处理大文件的需求仍然存在,假设您想用镜像(dd命令)的方式来备份一个容量为20GB分区的分区,就会产生一个20GB的文件,根据您磁盘实际的使用状况,这个文件在压缩后可能只有数MB到数GB,我们可以建立一个管道文件来自动实现这个压缩过程。
[root@linux236 root]# mknod mypipe p
[root@linux236 root]# ls -l mypipe
prw-r--r-- 1 root root 0 Aug 5 23:27 mypipe
[root@linux236 root]#
在这里,我们建立了一个叫mypipe的管道文件,用ls -l 命令可以看到它的属性是prw-r--r--,用下面的组合命令实现镜像和压缩:
[root@linux236 root]# compress < mypipe > sda6.img.Z &
[root@linux236 root]# dd if=/dev/sda6 of=mypipe
[root@linux236 root]# ls sda6.img.Z
sda6.img.Z
第一个命令使得从mypipe管道中流出的文件被压缩为sda.img.Z文件,注意这个命令的结尾必须使用"&"符号。第二个命令将/dev/sda6分区中的资料道入管道文件mypipe,换句话说,/dev/sda6分区中的数据进入管道,而压缩文件sda6.img.Z文件从管道中流出。
在导出Oracle、DB2等大型数据库时等经常会生成很大的文件,熟练的数据库管理员往往会选择通过管道进行压缩的方式,对于Oracle数据库,我们可以使用下边的组合命令:
这样,就会将Oracle导出的内容直接压缩成为expdat.dmp.Z文件。
compress < mypipe > expdat.dmp.Z &
exp userid=system file=mypipe owner=scott
第二章 链接文件
链接文件有点类似于Windows 的所谓快捷方式,但并不完全一样。链接有两种方式,软链接和硬链接。
软链接文件
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
[yaoyao@linux236 yaoyao]$ ls -l
total 0
lrwxrwxrwx 1 yaoyao yaoyao 5 Aug 6 17:39 1.txt -> 3.txt
lrwxrwxrwx 1 yaoyao yaoyao 5 Aug 6 17:38 2.txt -> 1.txt
lrwxrwxrwx 1 yaoyao yaoyao 5 Aug 6 17:39 3.txt -> 2.txt
上面的三个文件形成了一个递归,实质上没有任何作用。系统管理员应该避免系统出现断链或循环链接。
用ln -s 命令可以生成一个软连接,如下:
[root@linux236 test]# ln -s source_file softlink_file
在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
硬链接文件
info ln 命令告诉您,硬链接是已存在文件的另一个名字(A "hard link" is another name for an existing file),这多少有些令人困惑。硬连接的命令是
ln -d existfile newfile
硬链接文件有两个限制
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了愿有的内容。这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
三、setUid、setGid文件和带粘着位的目录文件
在Linux/Unix下,有一种可执行文件被setUid,这使得任意使用者在执行该文件时,都绑定了文件拥有者的权限。就好像文件带了一把尚方宝剑一样,setUid文件通常用来提升使用者的权限.最有代表性的su命令.普通用户可以可以执行该命令,使自己升级为root。setUid命令的用法是:
chmod 4755 your_program
setGid 文件和setUid文件非常类似,它使得这使得任意使用者在执行该文件时,都绑定了文件所有组的权限.单独setGid的文件非常少用,通常都是即setUid又setGid。不过和您猜想的可能有点不同。setUid+setGid通常并不是用来提升权限的,而是为了绑定某个特殊用户及其组的特殊权限,例如qmail 的外围软件vpopmail,就使用了一个setUid+setGid的程序vchkpw来校验用户名和密码。这个道理和Apache常常以nobody用户运行一样。其目的是为了更加安全。
setGid 命令的用法为
chmod 2755 your_program
通常使用命令
chmod 6755 yourprogram
来使得某可执行程序同时setUid和setGid
全能的root用户当然可以任意setUid和setGid。但尚方宝剑不能用来假传圣旨,普通用户只能给属于自己的文件配置setUid或setGid。由于setUid或setGid文件会使普通用户提升权限,谨慎的系统管理员通常会留意系统中有setUid或setGid文件的变化。减少安全隐患。
在Linux下,/tmp是一个存放临时文件的目录,要求是对所有用户可写。但每个用户都只能删除自己拥有的文件。这种情况下,就可以把目录加一个粘着位。
[root@yaoyao /]# ls -l |grep tmp
drwsrwsrwt 9 root root 4096 8月7 10:50 tmp
注意第是个字符"t",它代表了这个目录被设置了粘着位。
我们自行建立一个abc的目录,使之具有和/tmp相同的特点
chmod 777 abc
chmod +t abc
上述的个两个命令组合等同于下边的一个命令:
chmod 1777 abc
用ls ?l 看abc 目录的属性如下:
[root@yaoyao test]# ls -l
总用量 4
drwsrwsrwt 2 root root 4096 8月 7 11:32 abc
和/tmp目录相同的需求往往在ftp服务器的upload 目录中也存在。可以用相同的方式处理。
四、socket 文件
socket文件类似于管道,但它是在网络上面工作的。您到计算机就是靠它来做网络处理的。您可能听说过“Winsock”,那是 Windows 的套接口。我们在这里不深入谈有关套接口,因为如果您不写程序,您不会用到它,但如果您看到您系统里有个文件类型是s,您知道它是什么就行了。
比如说mysql 运行的时候通常会产生一个socket文件。
[root@yaoyao tmp]# ls -l /tmp/mysql.sock
srwxrwxrwx 1 mysql mysql 08月 7 10:03 mysql.sock
/tmp目录下还有一些socket文件,多半是运行Xwindows的时候产生的。
五、疑难杂症--删除不掉的文件
“为什么有些文件以讨厌的减号("-")开头做文件名,无论如何都删除不掉,这到底为什么?",您可能听过您临桌的新手这样的叫喊过,希望同样的事情不会发生在您的身上,这个非常容易解决,您只要用带路径的方法就可以把他们删除了,假定一个文件名为"-abc",您可以用:
rm ./-abc 或者
rm /home/yaoyao/-abc
命令将其轻松删除,另外您也可以用相同的方式用vi或者其他工具对他们进行修改。
另一些文件看上去可能一切正常,但当您尝试删除的时候,居然也会报错,就象下边一样:
[root@linux236 root]# ls -l 1.txt
-rw-r--r-- 1 root root 0 Aug 5 23:00 1.txt
[root@linux236 root]# rm -rf 1.txt
rm: cannot unlink `1.txt': Operation not permitted
您是全能root用户,居然系统告诉您操作不允许,是Linux疯了么?当然不是,如果您会用lsattr命令,问题就有了答案。
[root@linux236 root]# lsattr
---i---------- ./1.txt
-------------- ./weiqi.ldif
-------------- ./qi.schema
秘密终于暴露了,在lsattr命令下,这个1.txt文件带有一个"i"的属性,所以才不可以删除。您现在可以用下边的一系列命令:
[root@linux236 root]# lsattr 1.txt
---i---------- 1.txt
[root@linux236 root]# chattr -i 1.txt
[root@linux236 root]# rm -rf 1.txt
[root@linux236 root]#
成功了,这个属性专门用来保护重要的文件不被删除,通常的情况下,懂得用这几个命令的通常系统管理员有能力判断这个文件是否可以被删除。 如果您想给一个文件多加点保护,可以使用下边的命令:
chattr +i filename
命令,这样一来,想要删除这个文件就要多一个步骤。同时,这样的文件也是不可以编辑和修改的。只有root用户才能使用chattr命令。此命令可以在Linux ext2或ext3系统上使用。
类似于Dos和Windows文件系统,不能随意删除的文件多半都有其道理,即使您知道如何删除,都应该三思而后行。
总结
Linux/Unix系统管理是个复杂的工作,掌握和理解Linux/Unix文件类型是必备的基础之一。学习Linux/Unix没有捷径,必需通过大量的实践和努力学习。
红联Linux论坛:
__________________
希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐
---------------------------------------------
http://tzhsuccess.itpub.net
向版主反映这个帖子 查看tzhsuccess 的IP地址
98楼 旧帖 06-07-17 23:28
[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复
tzhsuccess
高级会员
注册日期: 2004 Apr
来自: 太?系-?子座
技术贴数:7934
论坛积分:31670
论坛排名:67
论坛徽章:23
会员2006贡献徽章 行业板块每日发贴之星 每日论坛发贴之星 ERP板块每日发贴之星
精打细算用Linux
序言
所有的操作系统都要求"给我更多!"-- 它们要求更多的磁盘空间,更多的内存,很
高的cpu工作频率--令人欣慰的是拯救我们这些没有最新硬件的人的救世主出现了,是的
,我说的是Linux。
虽然Linux作为网络操作系统很出色,但实际上,作为单用户的操作系统,工作在未
连网的家庭PC上,它也是非常不错的。
考虑到这种情况,你有很多方法可以从你的系统中挤出更多的资源,甚至在一台象
仅有
现在请记住你需要以 root 身份登录到系统来做下面的所有事情,我们的目的将有
两个分支:使内存的使用量最小,和节省磁盘空间。
节省内存!
重新编译内核
内核在没有安装到你的机器里以前就已经被编译好了,但是它是一个带有所有功能
的内核,把每样东西都编译了进去。这就意味着它比你要专用的大。如果你从内核源代
码编译一个你自己的内核的话,它会比缺省的vmlinuz的内核小100kB以上。此外,这还
有助于你了解如何编译内核。实际上,这十分简单。你要首先设置,就是说你的内核里
都需要什么功能。然后编译它就行了。
Linux已经发展到了一个很高的阶段,以至于它内核的设置可以是图形化的。内核的
源代码通常在这里:/usr/src/linux。要运行图形界面的设置程序,执行这个命令 mak
e menuconfig (这个是基于文本菜单的),或者执行 make xconfig (这个是在X中的
图形界面),你将会看到一个很长的设置选项列表,在做选择以前,建议你仔细看看每
一项所带的帮助提示。这些提示总是会给出合理的建议,你应该遵循它。如此,你将会
确切的得到那些你需要编译进你的内核的东西,而不包含其他。我也建议你读一读源码
路径下的README文件。一旦你设置好了,退出X(如果你运行了它),在文本模式下编译
它,这样做没有笨重的X运行可以有更多的内存可用,编译起来快一些。
执行 make dep ; make zImage ,然后去喝杯咖啡,做完这些,README文件会很通
俗的解释你应如何使用这个新内核,我不再赘述。
停止某些服务!
当Linux系统运行的时候,通常会有很多后台作业在运行,这些作业都是有特殊功能
的,它们叫做deamon。例如 sendmail,是邮件的daemon,它处理所有邮件的发送和邮件
递送安排。有许多这样的daemon在系统启动的时候开始运行,系统中有几个runlevel,
它们是一些启动和停止的服务的组合。例如,在通常的Linux系统的runlevel 1上,(这
是单用户模式),就会明显地比多用户模式的runlevel 3需要较少的服务。
缺省情况下,Linux 启动进入 runlevel 3。现在它会启动很多服务在这个runleve
l上,它们中的一些对未连网的家庭PC来说没用。例如,你显然不想运行sendmail来浪费
宝贵的内存。是的,它可以把邮件在root@localhost和someuser@localhost两个本地用
户间发来发去,但是这会消耗系统资源,而且没有丝毫用处。
如何从一个runlevel里删去一项服务
在RedHat里,这非常简单。系统管理是RedHat比其他发布强的地方。在以root登录
以后,启动X,然后在一个 xterm 里启动 tksysv ,这是一个图形界面的runlevel编辑
器。
你可以看到六个列,每个runlevel占一个。现在我们仅注意runlevel3就可以了,就
是系统通常启动进入的那个runlevel。每个列都有两部分,上面的是系统启动时开始执
行的服务,下面的是在系统shutdown时停止的服务。你要做的就是选择你想删去的项,
然后按del,就是这样,另外记得在你退出以前保存你的修改。
哪些服务要留下,哪些要删去
事实上,告诉你留哪些很简单。记住,所有的这些办法都是在runlevel 3上有效。
这是几条要点:
kerneld - 如果没有它的话,那什么都工作不起来了!
syslog - 必须保留,来记录log信息。这些log在万一系统出现错误的时候,可以帮助你
看看系统哪里出错了(实际上,在Linux系统里什么错误都不会出现)
keytable - 如果你还想使用键盘的话就得留下这个!
rc.local - 这是那些日常的工作启动的地方,在所有其他的服务都启动以后执行
你仅仅需要上面的4项服务,没有它们,就象有人说的," 一切都歇菜了"
你可能想保留的服务
下面是一些要不要两可的服务,一些你可能想要保留的无关紧要的服务。你可能需
要它们,或者喜欢它们。
crond - 它周期性的运行一些日常的作业,最重要的事情就是确保你的log文件不会太大
。你可以在你需要的时候来运行它。
atd - 如果你想要使用 at ,你就需要这个deamon,也就是说,作业按你指定的时间来
执行,在一个多用户的24小时都不停机的大系统中,人们通常使用它来指定在晚上运行
一些非常繁重的计算任务。但是在简单的家用机器上,一般不怎么使用,毕竟你是使用
它的唯一的人。
gpm - 它可以让你在文本模式下使用鼠标,它仅在你工作在文本模式下的时候才有用,
而当你工作在X下的时候就是一种浪费。
节省磁盘空间
事实上,这里你没有什么可做的,除了删掉一些你不想要的包。RedHat有一个极好
的,很容易使用的包管理系统,它会记录你硬盘上的几乎所有的非用户文件。每个安装
到你的系统里的文件都是这些包的一部分,这些包能够被反安装。
如何删除一个包
在x中以命令行来运行 " glint ",这是一个图形界面的RedHat包管理系统,你会得
到一个图形界面显示你的系统中安装的所有的包。这些包被分类,并以目录列表的形式
显示出来。要删掉一个包,选择它,然后按一下右面的"uninstall"按钮就可以了。
我应该删掉哪些包?
请注意,有一些要紧的包是不应该被删除的。在glint里,通常比较可取的做法是不
要动 base 和 library 的包,除非你确切的知道你到底在做什么。
其他的,看看它们的描述(点 query 按钮)。如果你很久都没有使用一个包的话,
或者预计以后也不会用它,那么删掉它通常是安全的。万一删掉一个包会影响其他的包
的话,glint会告诉你。它很安全。如果你误删了一个一个包,你总能从光盘上重新安装
它的。
结尾
这些仅是你可以试试的建议。Linux你用的越多,尝试的越多,你就会从你的系统中
挤出更多的资源。
红联Linux论坛:
__________________
希望能和你相互交流,愿意和您分享学习、进步中的每分喜悦与快乐
---------------------------------------------
http://tzhsuccess.itpub.net
向版主反映这个帖子 查看tzhsuccess 的IP地址
99楼 旧帖 06-07-17 23:29
[ 大 中 小 ] 给予该贴好评 编辑/删除 引用/回复
tzhsuccess
高级会员
注册日期: 2004 Apr
来自: 太?系-?子座
技术贴数:7934
论坛积分:31670
论坛排名:67
论坛徽章:23
会员2006贡献徽章 行业板块每日发贴之星 每日论坛发贴之星 ERP板块每日发贴之星
理解Linux系统的日志
摘要
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
1. 日志简介
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
在Linux系统中,有三个主要的日志子系统:
连接时间日志由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
常用的日志文件如下:
access-log 纪录HTTP/web的传输
acct/pacct 纪录用户命令
aculog 纪录MODEM的活动
btmp 纪录失败的纪录
lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录
messages 从syslog中记录信息(有的链接到syslog文件)
sudolog 纪录使用sudo发出的命令
sulog 纪录使用su命令的使用
syslog 从syslog中记录信息(通常链接到messages文件)
utmp 纪录当前登录的每个用户
wtmp 一个用户每次登录进入和退出时间的永久纪录
xferlog 纪录FTP会话
utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7。
每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后, utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和 finger。
下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。
2. 具体命令
wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。
who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15
如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。
w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05s w
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
ylou pts/8 202.38.64.235 2:15pm 1:
users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo
last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)
如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)
ac:ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47
ac -d(回车)显示每天的总的连结时间
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
Aug 17 total 104.29
Today total 179.02
ac -p (回车)显示每个用户的总的连接时间
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
zjzhu 52.87
zqzhou 13.14
liangliu 24.34
total 5178.24
lastlog:lastlog文件在每次有用户登录时被查询。可以使用 lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示"**Never logged**。注意需要以root运行该命令,例如:
rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
dbb **Never logged in**
xinchen **Never logged in**
pb9511 **Never logged in**
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000
另外,可一加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。
3. 进程统计
UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它对还跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用 accton命令,必须用root身份来运行。Accton命令的形式accton file,file必须先存在。先使用touch命令来创建 pacct文件:touch /var/log/pacct,然后运行accton: accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。
lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。下面的例子:
crond F root ?? 0.00 secs Sun Aug 20 00:16
promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
promisc_check root ?? 0.01 secs Sun Aug 20 00:16
grep root ?? 0.02 secs Sun Aug 20 00:16
tail root ?? 0.01 secs Sun Aug 20 00:16
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.02 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 0.00 secs Sun Aug 20 00:15
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
sh root ?? 0.02 secs Sun Aug 20 00:15
ping S root ?? 1.34 secs Sun Aug 20 00:15
locate root ttyp0 1.34 secs Sun Aug 20 00:15
accton S root ttyp0 0.00 secs Sun Aug 20 00:15
进程统计的一个问题是pacct文件可能增长的十分迅速。这时需要交互式的或经过 cron机制运行sa命令来保持日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。sa缺省情况下先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项:
avio每次执行的平均I/O操作次数
cp用户和系统时间总和,以分钟计
cpu和cp一样
k内核使用的平均CPU时间,以1k为单位
k*secCPU存储完整性,以1k-core秒
re实时时间,以分钟计
s系统时间,以分钟计
tioI/O操作的总数
u用户时间,以分钟计
例如:
842 173.26re 4.30cp 0avio 358k
2 10.98re 4.06cp 0avio 299k find
9 24.80re 0.05cp 0avio 291k ***other
105 30.44re 0.03cp 0avio 302k ping
104 30.55re 0.03cp 0avio 394k sh
162 0.11re 0.03cp 0avio 413k security.sh*
154 0.03re 0.02cp 0avio 273k ls
56 31.61re 0.02cp 0avio 823k ping6.pl*
2 3.23re 0.02cp 0avio 822k ping6.pl
35 0.02re 0.01cp 0avio 257k md5sum
97 0.02re 0.01cp 0avio 263k initlog
12 0.19re 0.01cp 0avio 399k promisc_check.s
15 0.09re 0.00cp 0avio 288k grep
11 0.08re 0.00cp 0avio 332k awk
用户还可以根据用户而不是命令来提供一个摘要报告。例如sa -m显示如下:
885 173.28re 4.31cp 0avk
root 879 173.23re 4.31cp 0avk
alias 3 0.05re 0.00cp 0avk
qmailp 3 0.01re 0.00cp 0avk
4. Syslog设备
Syslog已被许多日志函数采纳,它用在许多保护措施中任何程序都可以通过syslog 纪录事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主机上的事件。
Syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和 /etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日之中出现)。
每个syslog消息被赋予下面的主要设备之一:
LOG_AUTH认证系统:login、su、getty等
LOG_AUTHPRIV同LOG_AUTH,但只登录到所选择的单个用户可读的文件中
LOG_CRONcron守护进程
LOG_DAEMON其他系统守护进程,如routed
LOG_FTP文件传输协议:ftpd、tftpd
LOG_KERN内核产生的消息
LOG_LPR系统打印机缓冲池:lpr、lpd
LOG_MAIL电子邮件系统
LOG_NEWS网络新闻系统
LOG_SYSLOG由syslogd(8)产生的内部消息
LOG_USER随机用户进程产生的消息
LOG_UUCPUUCP子系统
LOG_LOCAL0~LOG_LOCAL7为本地使用保留
Syslog为每个事件赋予几个不同的优先级:
LOG_EMERG紧急情况
LOG_ALERT应该被立即改正的问题,如系统数据库破坏
LOG_CRIT重要情况,如硬盘错误
LOG_ERR错误
LOG_WARNING警告信息
LOG_NOTICE不是错误情况,但是可能需要处理
LOG_INFO情报信息
LOG_DEBUG包含情报的信息,通常旨在调试一个程序时使用
syslog.conf文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时, syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明"crit",那所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如,如果想把所有邮件消息纪录到一个文件中,如下:
#Log all the mail messages in one place
mail.* /var/log/maillog
其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:
# Save mail and news errors of level err and higher in aspecial file.
uucp,news.crit /var/log/spooler
当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。
#Everybody gets emergency messages, plus log them on anther machine
*.emerg *
*.emerg @linuxaid.com.cn
alert消息应该写到root和tiger的个人账号中:
#Root and Tiger get alert and higher messages
*.alert root,tiger
有时syslogd将产生大量的消息。例如内核("kern"设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console
用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备:
#Log anything(except mail)of level info or higher
#Dont log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages
在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。通常要广泛纪录日志。Syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。
有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。用法:logger 例如:logger This is a test!
它将产生一个如下的syslog纪录:Aug 19 22:22:34 tiger: This is a test!
注意不要完全相信日志,因为攻击者很容易修改它的。
5. 程序日志
许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有sudolog。另外,想Apache有两个日志:access_log和error_log。
6. 其他日志工具
chklastlog
ftp://coast.cs.purdue.edu/pub/tools/unix/chklastlog/
chkwtmp
ftp://coast.cs.purdue.edu/pub/tools/unix/chkwtmp/
dump_lastlog
ftp://coast.cs.purdue.edu/pub/tools/unix/dump_lastlog.Z
spar
ftp://coast.cs.purdue.edu/pub/tools/unix/TAMU/
Swatch
Zap
ftp://caost.cs.purdue.edu/pub/tools/unix/zap.tar.gz
日志分类方法
红联Linux论坛: