六月, 2008


26
六 08

在BASH中进行数学运算

以前只知道expr,今天发现了BASH内置的let:
let: let arg [arg ...]
Each ARG is an arithmetic expression to be evaluated.  Evaluation
is done in fixed-width integers with no check for overflow, though
division by 0 is trapped and flagged as an error.  The following
list of operators is grouped into levels of equal-precedence operators.
The levels are listed in order of decreasing precedence.

id++, id–      variable post-increment, post-decrement
++id, –id      variable pre-increment, pre-decrement
-, +            unary minus, plus
!, ~            logical and bitwise negation
**              exponentiation
*, /, %         multiplication, division, remainder
+, -            addition, subtraction
<<, >>          left and right bitwise shifts
<=, >=, <, >    comparison
==, !=          equality, inequality
&               bitwise AND
^               bitwise XOR
|               bitwise OR
&&              logical AND
||              logical OR
expr ? expr : expr
conditional operator
=, *=, /=, %=,
+=, -=, <<=, >>=,
&=, ^=, |=      assignment

Shell variables are allowed as operands.  The name of the variable
is replaced by its value (coerced to a fixed-width integer) within
an expression.  The variable need not have its integer attribute
turned on to be used in an expression.

Operators are evaluated in order of precedence.  Sub-expressions in
parentheses are evaluated first and may override the precedence
rules above.

If the last ARG evaluates to 0, let returns 1; 0 is returned
otherwise.

注:是“脚本”,不是“角本”。

2008-07-02

今天又有新的发现:

(( … )): (( expression ))
The EXPRESSION is evaluated according to the rules for arithmetic
evaluation.  Equivalent to “let EXPRESSION”.

$a=1
$(( a++ ))
$echo $a
2

2011-07-23
一个有意思的用法:
$ echo $((2#11111111))
255
二进制11111111的值(十进制)是多少?


26
六 08

对软链接的认识(bash中)

以下认知均指在BASH中

1. 软链接是个文件
2. 软链接可以指向文件,也可以指向目录。
3. 当一个软链接以”/”结尾时,BASH才会认为软链接指向的是目录。否帖BASH认为是文件。例如:
  $ls -l
  lrwxrwxrwx 1 root root 11 Jun 26 10:47 logs -> /data/logs/
  当删除logs时,应使用 rm logs 而不是 rm logs/(这有点费话)。

  我要说的主要问题是这儿:
  $find ./logs -type f
  输出为空,而
  $find ./logs/ -type f
  会输出/data/logs下的文件。


24
六 08

服务器网页缓存的深入分析

转自:http://www.yuanma.org/data/2007/0909/article_2851.htm

Expires、Cache-Control、Last-Modified、ETag是RFC
2616(HTTP/1.1)协议中和网页缓存相关的几个字段。前两个用来控制缓存的失效日期,后两个用来验证网页的有效性。要注意的是,
HTTP/1.0有一个功能比较弱的缓存控制机制:Pragma,使用HTTP/1.0的缓存将忽略Expires和Cache-Control头。我们
这里以Apache2.0服务器为例,只讨论HTTP/1.1协议。

Expires
Expires字段声明了一个网页或URL地址不再被浏览器缓存的时间,一旦超过了这个时间,浏览器都应该联系原始服务器。RFC告诉我们:“由于推断的失效时间也许会降低语义透明度,应该被谨慎使用,同时我们鼓励原始服务器尽可能提供确切的失效时间。”
对于一般的纯静态页面,如html、gif、jpg、css、js,默认安装的Apache服务器,不会在响应头添加这个字段。Firefox浏览器接受
到相应后,如果发现没有Expires字段,浏览器根据文件的类型和“Last-Modified”字段来推断出一个合适的失效时间,并存储在客户端。推
测出的时间一般是接受到响应时间后的三天左右。
Apache的expires_module模块可以在Http响应头部自动加上Expires字段。在Apache的httpd.conf文件中进行如下配置:
#启用expires_module模块
LoadModule expires_module modules/mod_expires.so
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月
ExpiresByType image/gif A2592000
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
#以下的含义类似
ExpiresByType text/css “now plus 2 month”
ExpiresByType text/js “now plus 2 day”
ExpiresByType image/jpeg “access plus 2 month”
ExpiresByType image/bmp “access plus 2 month”
ExpiresByType image/x-icon “access plus 2 month”
ExpiresByType image/png “access plus 2 month”
对于动态页面,如果在页面内部没有通过函数强制加上Expires,例如header(”Expires: ” . gmdate(”D,
d M Y H:i:s”) . ” GMT”),Apache服务器会把Wed, 11 Jan 1984 05:00:00
GMT作为Expires字段内容,返回给浏览器。即认为动态页面总是失效的。而浏览器仍然会保存已经失效的动态页面。
可以发现Firefox浏览器总是缓存所有页面,不管失效、不失效还是没有声明失效时间。即使缓存中声明了一个网页的实效日期是
1970-01- 01
08:00:00,浏览器仍然会发送该文件在缓存中的Last-Modified和ETag字段。如果在服务器端验证通过,返回304状态,浏览器就还会
使用此缓存。
Cache-Control
Cache-Control字段中可以声明多些元素,例如no-cache, must-revalidate,
max-age=0等。这些元素用来指明页面被缓存最大时限,如何被缓存的,如何被转换到另一个不同的媒介,以及如何被存放在持久媒介中的。但是任何一个
Cache-Control指令都不能保证隐私性或者数据的安全性。“private”和“no-store”指令可以为隐私性和安全性方面提供一些帮
助,但是他们并不能用于替代身
份验证和加密。
Apache的mod_cern_meta模块允许文件级Http响应头部的控制,同时它也可以配置Cache-Control头(或任何其他头)。响应
头文件是放在原始目录的子目录中,根据原始文件名所命名的一个文件。具体用法请参阅Apache的官方网站。其中Cache-Control :
max-age表示失效日期。如果没有启动mod_cern_meta模块,Apache服务器会把Expires字段中的日期换算成以秒为单位的一个
delta值,赋值给max-age。如果启动mod_cern_meta模块,并且配置了max-age值,Apache会将这个覆盖Expires字
段。同时,max-age隐含了Canche-Control: public。这样浏览器接受到的Cache-Control :
max-age和Expires值就是一致的。
如果失效日期Cache-Control : max-ag=0或者是负值,浏览器会在对应的缓存中把Expires设置为1970-01-01 08:00:00。
Last-Modified
Last-Modified和ETag是条件请求(Conditional
Request)相关的两个字段。如果一个缓存收到了针对一个页面的请求,它发送一个验证请求询问服务器页面是否已经更改,在HTTP头里面带上”
ETag”和”If Modify Since”头。服务器根据这些信息判断是否有更新信息,如果没有,就返回HTTP
304(NotModify);如果有更新,返回HTTP 200和更新的页面内容,并且携带新的”ETag”和”LastModified”。
使用这个机制,能够避免重复发送文件给浏览器,不过仍然会产生一个HTTP请求。
一般纯静态页面本身都会有Last-Modified信息,Apache服务器会读取页面文件中的Last-Modified信息,并添加到http响应头部。
对于动态页面,如果在页面内部没有通过函数强制加上Last-Modified,例如header(”Last-Modified:
” . gmdate(”D, d M Y H:i:s”) . ”
GMT”),Apache服务器会把当前时间作为Last-Modified,返回给浏览器。
无论是纯静态页面还是动态页面,Firefox浏览器巧妙地按照接受到服务器响应的时间设置缓存页面的Last-Modified,而不是按照http响应头部中的Last-Modified字段。
ETag
既然有了Last-Modified,为什么还要用ETag字段呢?因为如果在一秒钟之内对一个文件进行两次更改,Last-Modified就会不正确。因此,HTTP/1.1利用Entity Tag头提供了更加严格的验证。
Apache服务器默认情况下,会对所有的静态、动态文件的响应头添加ETag字段。在Apache的httpd.conf文件中可以通过FileETag指令配置该选项。
FileETag指令配置了当文档是基于一个文件时用以创建 Etag(entity tag)响应头的文件的属性。在Apache
1.3.22及以前,ETag的值是对文件的索引节(INode),大小(Size)和最后修改时间(MTime)进行Hash后得到的。如果一个目录的
配置包含了‘FileETag INode MTime Size’而其一个子目录包含了‘FileETag
-INode’那么这个子目录的设置(并会被其下任何没有进行覆盖的子目录继承)将等价于‘FileETag MTime Size’。
在多台负载平衡的服务器环境下,同一个文件会有不同的etag或者文件修改日期,浏览器每次都会重新下载。设置‘FileETag None’可以使响应头不再包含ETag字段。
三种典型web服务器Header设置内容过期方法
一、Internet 信息服务 (IIS)的内容过期设置
如果IIS 网站中有时间敏感信息,可以配置设置来保证过期信息不被代理服务器或 Web 浏览器缓存。可以配置网站内容,使之在任
何的时间自动过期。当启用内容过期时,Web 浏览器将比较当前日期和截止日期,以便决定是显示缓存页还是从服务器请求更新的页
。Microsoft ASP.NET 这样的服务器端技术可用于动态更改提供的内容。通常,时间敏感信息只限于单个文件、目录或网站;不过,您也可以为某台计算机上的所有网站设置内容过期。
必须是本地计算机上 Administrators 组的成员或者必须被委派了相应的权限,才能执行下列步骤。作为安全性的最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用运行方式命令以管理员身份运行 IIS管理器
在命令提示符下,键入 runas /user:administrative_accountname “mmc %systemroot%\system32\inetsrv\iis.msc”。
设置网站内容的过期时间
1. 在 IIS 管理器中,展开本地计算机;右键单击要设置内容过期的网站、虚拟目录或文件,然后单击“属性”。
2. 单击“HTTP 头”选项卡。
3. 选中“启用内容过期”复选框。
4. 单击“立即过期”、“此时间段后过期”或“过期时间”,然后在对应的框中输入所需的过期信息。
5. 单击“确定”。
二、APACHE服务的内容过期设置
Apache配置摘录及解释
i. 过期相关设置
LoadModule headers_module modules/mod_headers.so
#Load 修改header的模块。
LoadModule expires_module modules/mod_expires.so
#Load 设定过期header的模块。
Header append Via: CCN-BJ-4-502
#增加一个Via header,值配置成设备的hostname。
KeepAliveTimeout 60
#设置连接的保持时间为60秒。
ExpiresActive On
#启用过期header功能。
ExpiresDefault A604800
#缺省过期时间为“访问后的604800秒”
<Directory /data/download>
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
ExpiresByType text/html A300
#text/html类型文件的过期设置为“访问后的300秒”
ExpiresByType text/css A259200
#text/css类型文件的过期设置为“访问后的259200秒”
ExpiresByType application/x-javascript A300
# application/x-javascript类型文件的过期设置为“访问后的300秒”
ExpiresByType image/gif A2592000
#image/gif类型文件的过期设置为“访问后的2592000秒”
ExpiresByType application/x-shockwave-flash A2592000
# application/x-shockwave-flash类型文件的过期设置为“访问后的2592000秒”
</Directory>
上述配置文件中load的两个模块:mod_headers.so 和mod_expires.so 可以让Apache具有对header的一些定制功能。
ExpiresByType: 表示按照文件类型-MIME-TYPE设定过期策略;
A300: 表示在Access后300秒后过期;
ExpiresByType text/css A2592000: 表示Mime type是text/css的文件,在Access后2592000秒过期。
ExpiresDefault A604800: 表示除了单独制定的文件类型等过期策略外的其他内容,按照这个缺省的策略设定:访问后604800秒过期。
上面的方法可以实现根据web发布的不同文件类型,针对不同的发布目录进行过期策略设置。在按照如上方法设置后,Apache会自动的产生两个相关的http header,举例如下:
HTTP/1.1 200 OK
Date: Tue, 27 Mar 2007 17:44:21 GMT
Server: Apache/2.0.54 (Unix)
Last-Modified: Thu, 25 Jan 2007 07:45:45 GMT
ETag: “72df3a-93-99499c40”
Accept-Ranges: bytes
Content-Length: 147
Cache-Control: max-age=2592000
Expires: Thu, 26 Apr 2007 17:44:21 GMT
Via: CCN-BJ-4-575
Keep-Alive: timeout=60, max=100
Connection: Keep-Alive
Content-Type: image/gif
Length: 147 [image/gif]
其中:Date + Max-age = Expires.
Max-age是个时间长度,对应web
server上面设置的过期时间;Expires是根据max-age算出来的过期时间点,两者是一致的,不同cache在判断内容是否过期时会严格比较
系统时间和上述过期时间,或者比较age(在cache中存住的时间长度)和max-age的值。
三、lighttpd
lighttpd默认是没有开启expire模块的,需要我们在使用是手工开启这个模块支持。把mod_expire前面的“#”号去掉。
# vi /usr/local/lighttpd/etc/lighttpd.conf
“mod_expire”,
设定过期时间
* 设定指定url的过期时间:
expire.url = (
“/images/” => “access 3 hours”,
“/admin/” => “access 3 hours”,
“/area/” => “access 3 hours”,
“/calendar/” => “access 3 hours”,
“/common/” => “access 3 hours”,
“/front/” => “access 3 hours”,
“/inc/” => “access 3 hours”,
“/jeditor/” => “access 3 hours”,
“/js/” => “access 3 hours”,
“/script/” => “access 3 hours”,
“/theme/” => “access 3 hours”,
“/upload/” => “access 3 hours”,
“/view/” => “access 3 hours”,
“/help/” => “access 3 hours”,
“/htm/” => “access 5 minutes”
)
设置Etag
在配置文件中增加,etag.use-inode=”disable”(i节点不参与etag的运算),保证多台服务器生成的Etag值一致。

15
六 08

内存测试

  一些Linux发行版的安装盘的菜单和安装后的系统的启动菜单里包含了”memory test”攻能。
  原来可以很简单的为自己的系统添加此功能。

  先在这里下载程序
  http://www.memtest86.com/

  编译之后的memtest.bin是可以启动系统的:

  修改GRUB.CONF增加启动项:
  #cat>> /etc/grub.conf
  title Linux Memory Test
  kernel (hd0,0)/memtest.bin


15
六 08

Windows上的一些命令

DOS远程桌面连接命令 mstsc /v: 192.168.1.250 /console

cmd        运行     command
删除文件     rd     文件名/S
创建文件     MD     文件名
1.     net user admin godmour /add 新建一个用户名为 admin 密码为 godmour 默认为user组成员
2.     net user admin /del 将用户名为admin的用户删除
3.     net user admin /active:no     将用户admin禁用
4.     net user admin /active:yes 将用户admin激活
5.     net user admin 查看拥护admin用户的情况
6.     net localgroup administratros admin /add 提升用户权限
7.     net view     
\\IP 查看远程主机共享资源
8.     net use         x:\\IP\sharename 远程影射本地盘符 Z (建立连接 net use
\\IP\IPC$”password” /user:”name”)
9.     net user admin godmour      把admin的密码修改成 godmour
10. net start       servername     启动 telnet     服务
       net start       servername     停止 telnet     服务
运行 输入cmd 回车在命令提示符下输入
for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1
还原系统
tracert              61.144.56.101     查看路由是否正常工作
netstat命令
netstat [-r] [-s] [-n] [-a]。
当然,你也可以利用“netstat /?”命令来查看一下该命令的使用格式以及详细的参数说明
netstat参数含义如下
  -r 显示本机路由表的内容
  -s 显示每个协议的使用状态(包括TCP协议、UDP协议、IP协议)
  -n 以数字表格形式显示地址和端口
  -a 显示所有主机的端口号
运行Netstat -a命令将显示计算机上网时与外部之间的所有连接,计算机端口与外部的连接情况等;而Netstat
-s命令则显示电脑网络连接协议的统计信息。这样你就可以看到当前你的电脑上网络在进行哪些连接,数据包发
送和接收的详细情况等等

添加或删除程序 control appwiz.cpl
管理工具          control admintools
attrib  设置文件属性       ctty   改变控制设备      defrag      磁盘碎片整理     doskey 调用和建立DOS宏命令  
debug   程序调试命令       emm386  扩展内存管理      fc    文件比较         fdisk  硬盘分区
lh/loadhigh  将程序装入高端内存     move     移动文件,改目录名      more   分屏显示  
prompt         设置提示符             set  设置环境变量            smartdrv 设置磁盘加速器
setver      设置版本               subst 路径替换                vol        显示指定的磁盘卷标号
xcopy          拷贝目录和文件         mstsc XP自带远程              secpol.msc /s         本地安全策略
services.msc /s       服务               compmgmt.msc     计算机管理      jsjgl.msc
eventvwr.msc /s       事件查看器         odbcad32.exe     数据源 (ODBC)       perfmon.msc /s        性能
comexp.msc            组件服务           control userpasswords2        察看当前XP用户
gpedit.msc            组策略             regedit          注册表          dxdiag      DirecTX 诊断工具
gpedit.msc—–组策略                 winver———检查Windows版本         wmimgmt.msc—-打开windows管理体系结构(WMI)
wupdmgr——–windows更新程序        wscript——–windows脚本宿主设置     write———-写字板
winmsd———系统信息               wiaacmgr——-扫描仪和照相机向导      winchat——–XP自带局域网聊天
mem.exe——–显示内存使用情况       Msconfig.exe—系统配置实用程序        mplayer2——-简易widnows media player
mspaint——–画图板                 mplayer2——-媒体播放机              magnify——–放大镜实用程序
mmc————打开控制台             mobsync——–同步命令                drwtsn32—— 系统医生
devmgmt.msc— 设备管理器             dfrg.msc——-磁盘碎片整理程序        diskmgmt.msc—磁盘管理实用程序
dcomcnfg——-打开系统组件服务       ddeshare——-打开DDE共享设置         dvdplay——–DVD播放器
net stop messenger—停止信使服务     net start messenger–开始信使服务      notepad——–打开记事本
nslookup——-网络管理的工具向导     ntbackup——-系统备份和还原          narrator——-屏幕“讲述人”
ntmsmgr.msc—-移动存储管理器         ntmsoprq.msc-移动存储管理员操作请求 netstat -an—-(TC)命令检查接口
syncapp——–创建一个公文包         sysedit——–系统配置编辑器          sigverif——-文件签名验证程序
sndrec32——-录音机                 shrpubw——–创建共享文件夹          secpol.msc—–本地安全策略
syskey———系统加密,一旦加密就不能解开,保护windows xp系统的双重密码
services.msc—本地服务设置           Sndvol32——-音量控制程序            sfc.exe——–系统文件检查器
sfc /scannow—windows文件保护        tsshutdn——-60秒倒计时关机命令      tourstart——xp简介(安装完成后出现的漫游xp程序)
taskmgr——–任务管理器             eventvwr——-事件查看器              eudcedit——-造字程序
explorer——-打开资源管理器         packager——-对象包装程序            perfmon.msc—-计算机性能监测程序
progman——–程序管理器             regedit.exe—-注册表                  rsop.msc——-组策略结果集
regedt32——-注册表编辑器           rononce -p —-15秒关机                regsvr32 /u *.dll—-停止dll文件运行
regsvr32 /u zipfldr.dll——取消ZIP支持          cmd.exe——–CMD命令提示符
chkdsk.exe—–Chkdsk磁盘检查         certmgr.msc—-证书管理实用程序        calc———–启动计算器
charmap——–启动字符映射表         cliconfg——-SQL SERVER 客户端网络实用程序      Clipbrd——–剪贴板查看器
conf———–启动netmeeting         compmgmt.msc—计算机管理              cleanmgr——-垃圾整理
ciadv.msc——索引服务程序           osk————打开屏幕键盘            odbcad32——-ODBC数据源管理器
oobe/msoobe /a—-检查XP是否激活      lusrmgr.msc—-本机用户和组            logoff———注销命令
iexpress——-木马捆绑工具,系统自带       Nslookup——-IP地址侦测器      fsmgmt.msc—–共享文件夹管理器
utilman——–辅助工具管理器         gpedit.msc—–组策略                  cleanmgr——-垃圾整理
ciadv.msc——索引服务程序           odbcad32——-ODBC数据源管理器        oobe/msoobe /a—-检查XP是否激活
lusrmgr.msc—-本机用户和组           logoff———注销命令                iexpress——-木马捆绑工具,系统自带
Nslookup——-IP地址侦测器           fsmgmt.msc—–共享文件夹管理器        utilman——–辅助工具管理器
DOS——Disk Operation System 磁盘操作系
C: 盘符      Path 路径     Filename     文件名      .ext 扩展名     Filespec 文件标识符
[ ]       方括号中的项目是可选项,用户可以根根据需要不输入这些内容
{ }       大括号表示其中的项目必选一项
|         竖线表示两侧的内容可取其一
…        表示可重复项
*         表示一个字符串
?        只代表一个字符
查找以字母y开头的所有文件,可以输入以下命令:dir y*.*;如果要查找所有扩展名为exe的文件,可以用dir .exe。?只
代表一个字符,例如我要查找第二个字母为s的所有文件,可以输入:DIR ?s*.*。
dir
[格式] dir [C:][path][filename][.ext][/o][/s][/p][/w][/a]
dir是DOS命令中最常用的一个
/p 显示信息满一屏时,暂停显示,按任意键后显示下一屏
/o 排序显示。o后面可以接不同意义的字母
/w 只显示文件名目录名,每行五个文件名。即宽行显示
/s 将目录及子目录的全部目录文件都显示
cd是英文change directory(改变目录)的缩写
[格式] cd [C:][path]     逐层退出(cd..)
copy在英文中是复制的意思
复制一个或一组文件到指定的磁盘或目录中     copy [C:][path][filename.ext] [C:][path]filename.ext
C:\purple目录的所有文件复制到软盘
C:\>copy purple A:\
ren是英文rename(重新命名)的简写,对指定磁盘、目录中的一个文件或一组文件更改名称
[格式] ren [C:][path]filename1[.ext] filename2[.ext]
[说明] 改名操作只限于某个文件某组文件的名称,它不会更改文件所在的目录。如果使用了通配符,则对一批文件进行更名。
type [功能] 在屏幕上显示文本文件内容命令     [格式] type [C:][path]filename.ext
type命令用来在屏幕上快速、简便地显示文本文件的内容,扩展名为TXT的文件是文本文件。如果用这个命令显示扩展名为EXE或COM等其它文件

,输出的结果往往是一些乱七八糟的符号并伴有无规则的响铃声,有时甚至会出现死机现象。
format 磁盘格式化     [C:][path]format drive:[/S]
diskcopy,翻译成中文就是磁盘复制 复制出一个和原来磁盘内容一模一样的磁盘
[格式] diskcopy 源驱动器名 目的驱动器名
[说明] 它的主要用途就是用来备份。比如我们的电脑在刚买来时,会随机附带一些设备驱动程序磁盘,这些驱动程序在以后都有可能用到,为

防止这些磁盘的损坏,一定要将它们都备份一套,这时,使用diskcopy命令是比较快捷和方便的
deltree 删除目录树 [格式] [C:][path]DELTREE [C1:][path1] [[C2:][path2] […]]
[说明] 这个命令将整个指定目录树全部消灭,而不管它是否是只读、隐藏与否。使用应特别小心。它是一个危险命令。
mem是memory的缩写[功能] 该命令用来查看你的计算机内存有多少,以及内存的使用情况 [格式] 直接键入mem命令
chkdsk是check disk的缩写。[功能] 用来检查你的磁盘的使用情况。[格式] chkdsk 磁盘名
[说明] 例如要检查A盘使用情况,就输入chkdsk A: ,检查c盘使用情况,就输入chkdsk C: ,如果直接输入chkdsk,就检
查当前磁盘的使用情况。
sys 传递系统文件命令。将DOS的两个隐含的系统IO.SYS和MSDOS.SYS传送到目标磁盘的特定位置上,并将COMMAND.COM文件复制过去。完成后,

目标盘成为DOS的启动盘[格式] [C:][path]SYS [C1:][path] d2:
[说明] 由于这几个文件需要复制到特定位置上,所以用COPY命令完成的复制未必能够启动机器。能过SYS命令,DOS可以将目标盘已占据特定位

置的文件移动,并将系统文件复制到相应位置上。参数C1:path用来指明系统文件所在目录。如不指明,则缺省为当前盘的当前目录。所以这个

命令一般要在源盘的根目录进行
pass     [功能] 设定DOS寻找.COM、.EXE、.BAT文件的所在目录 [格式] path=[[drive:]path[;…]]或path
[说明] 只打path没有参数时,只显示环境变量内容。有参数时,重新设置path变量。在没有指定path环境变量时,用户发出的命令,DOS首先

判断其是否为内部命令,再查找当前目录中是否有主文件名是该命令的可执行文件,如果均不是,则显示信息“Bad command or filename”。

如果发出了指定路径的命令,则在指定径中依次查找,仍找不到则出现上述提示。
cls     清除显示器屏幕上的内容,使DOS提示符到屏幕左上角。


9
六 08

50项生活必需掌握的技能

要过得健康充实,还得靠自立。要学会自立,必须得掌握一些技巧。可能和你在学校里学到的不同,但全才远远要比专门只会一样的人更能够适应生活。

这里是每个人都该学会的50件事情。(不完全统计)

1. 生火——火能产生光和热。这两件是生存的必需品。也许在某个时候,这项技能可以救你的命。
2. 操作电脑——基本的电脑常识是现代生活之必需。必要的时候,请帮助他人。
3.有效使用Google——Google无所不知。如果你用Google找不到你想找的东西,那就是你的问题了。
4.人工呼吸和处理喉咙被塞住的急救措施——有一天你的妻子、丈夫、儿子或女儿,可能正是需要你帮助的那个人。
5.开手排档的车——也许有时候你会需要这项技能,要是不会就糟了。
6.简单地做饭——如果你连鸡蛋或牛排都不会煎,那就麻烦了。
7.讲一个能吸引人们注意力的故事——如果你不能吸引别人的注意力,那还是别废话了。
8.不与人打架,除非你能赢——两种情况下,你都赢了。
9.告诉别人坏消息——总得有人去做这件事。不幸的是,有一天这个重任也会落到你肩上。
10.换轮胎——轮胎里面有气体,只要有气体的东西总有一天会爆掉。
11.从容应对面试——要是紧张得浑身是汗,你肯定得不到那份工作。
12.管理好自己的时间——否则你就是在浪费时间。偶尔浪费时间也没关系,但不能一直这样。
13.快速阅读——很多时候你只要读要点就可以了。(看到这里就觉得没早点学会这条了吧)
14.记住名字——你会喜欢别人管你叫“喂,那个谁。。。”吗?
15.整理房间——真正做起来总比想象的要难一点。
16.轻装上阵——旅行时只带最必需的东西。这样更便宜、更简单、更灵活。
17.和警察打交道——蹲监狱可不是好玩的,监狱里面的大汉就更不用说了。
18.给别人指路——没人喜欢迷路,所以最好第一次就指对。
19.进行基本的急救——会正确处理伤口,不是只有医生或天才才能做到的。
20.游泳——地球表面71%的地方都是水,所以学会游泳绝对是个好主意。
21.路边停车——大多数标准驾照考试都要求考路边停车,然而大多数人还是不知道该怎么做。很奇怪啊。
22.了解自己的酒量——不然你一不小心就会很难看。
23.选择好的产品——腐坏的水果和蔬菜只能成为恶作剧的道具用来吓人。
24.会用锤子、斧子和手锯——不是只有木匠才用得着这些工具的。每个人都得有点使用这些工具的基本常识。
25.进行简单的财务规划——负债累累可不好,一个简单地预算计划可以帮你解决这些问题。
26.至少会说两种通用的语言——世界上只有25%的人说英语。如果能跟剩下75%的人沟通也挺好的。
27.正确地做俯卧撑和仰卧起坐——姿势不正确的话只会伤害身体,也是浪费时间。
28.多赞美别人——赞美是世上最好的礼物之一,更何况是免费的。
29.谈判——再多问一两个问题就会得到更好的价钱。
30.仔细听别人说话——多听少讲,学到的多,失去的少。
31.复习基本的地理知识——如果你不知道你生活圈以外的环境,大部分的人只会认为你什么都不知道(而且通常他们是对的)。
32.粉刷房间——粉刷房间的价格百分之九十是人工费用,简单的油漆活自己做比付给别人9倍的工资要来得划算。
33.简单明了又内容丰富的演说——如果下次公司开会时你的上司要你解释你上个月做了什么活,这样的演讲能让你过关。“嗯。。。不知道”的话就惨了。
34.照相的时候微笑——硬是不笑的人最糟了!
35.不出丑的搭讪——搭讪成功跟失败只是一念之间。如果太刻意的话会失败,不够用心的话也会失败。
36.做有用的笔记——因为没用的笔记和不做笔记一样都是没用的。
37.礼待住在自己家里的客人——要不然的话哪天你需要借住他们家的时候就只能睡旅馆了。
38.给人好的第一次印象——亚里士多德曾经说过,“好的开始是成功的一半。”
39.会看地图和使用指南针——如果你的卫星导航器在一个鸟不生蛋的地方坏了,你要怎么办?
40.缝钮扣——比买新衣便宜。
41.自己装家里的视听系统——又不是多难,付钱给别人装只是因为偷懒。
42.打字——打字打得好的话会节省很多时间,一生受用。
43.保护私人资料——除非你是那个小偷,不然个人资料被偷可不是好玩的。
44.设定基本的电脑系统防护措施——设定密码跟防火墙并不需要计算机本科毕业,但可以预防将来倒大霉。
45.识别谎言——人们会对你说谎,此乃人生之一大不幸。
46.有礼貌地结束约会,而不承诺下一次——千万别给别人一个你不愿给的承诺。你也不用急着决定和一个刚认识没多久的人有什么未来。
47.除去污渍——总比再买一件便宜。
48.保持房间整洁——整洁的房间是健康、规律生活的开始。
49.正确地抱婴儿——你可不想无意弄伤一个小宝宝。
50.启动汽车电瓶——这总比走路或叫拖车好得多。


4
六 08

30步检查SQL Server安全检查列表

转自:http://net.zdnet.com.cn/network_security_zone/2007/1017/560291.shtml
 1. 确认已经安装了NT/2000和SQL Server的最新补丁程序,不用说大家应该已经安装好了,但是我觉得最好还是在这里提醒一下。

  2. 评估并且选择一个考虑到最大的安全性但是同时又不影响功能的网络协议。 多协议是明智的选择, 但是它有时不能在异种的环境中使用。

  3. 给 “sa” 和 “probe” 帐户设定强壮的密码来加强其安全性。设定一个强壮的密码并将其保存在一个安全的地方。 注意: probe帐户被用来进行性能分析和分发传输。 当在标准的安全模态中用的时候 , 给这个帐户设定高强度的密码能影响某些功能的使用。

  4. 使用一个低特权用户作为 SQL 服务器服务的查询操作账户,不要用 LocalSystem 或sa。 这个帐户应该有最小的权利 ( 注意作为一个服务运行的权利是必须的)和应该包含( 但不停止)在妥协的情况下对服务器的攻击。 注意当使用企业管理器做以上设置时 , 文件,注册表和使用者权利上的 ACLs同时被处理。

  5. 确定所有的 SQL 服务器数据,而且系统文件是装置在 NTFS 分区,且appropraite ACLs 被应用。 如果万一某人得到对系统的存取操作权限,该层权限可以阻止入侵者破坏数据,避免造成一场大灾难。

  6.如果不使用Xp_cmdshell就关掉。 如果使用 SQL 6.5, 至少使用Server Options中的SQLExecutieCmdExec 账户操作限制,非sa用户使用XP_cmdshell.

  在任何的 isql/ osql 窗口中( 或查询分析器):

  use master

  exec sp_dropextendedproc’xp_cmdshell’

  对 SQLExecutiveCmdExec 的详细情况请查看下列文章:

  http://support.microsoft.com/support/kb/article/Q159/2/21.

  如果你不需要 xp_cmdshell 那请停用它。请记住一个系统系统管理员如果需要的话总是能把它增加回来。这也好也不好 – 一个侵入者可能发现它不在,只需要把他加回来。考虑也除去在下面的 dll但是移除之前必须测试因为有些dll同时被一些程序所用。 要找到其他的程序是否使用相同的 dll:

  首先得到该 dll 。

  select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and o.name=’xp_cmdshell’

  其次,使用相同的 dll发现其他的扩展储存操作是否使用该dll。

  select o.name,c.text from dbo.syscomments c , dbo.sysobjects o where c.id=o.id and c.text=’xplog70.dll’

  用户可以用同样的办法处理下面步骤中其他你想去掉的进程。

  7. 如不需要就停用对象连接与嵌入自动化储存程序 ( 警告 – 当这些储存程序被停用的时候 , 一些企业管理器功能可能丢失). 如果你决定停用该进程那么请给他们写一个脚本这样在以后你用到他们的时候你能够把他们重新添加回来 。 记住, 我们在这里正在做的是锁定一个应用程序的功能 – 你的开发平台应该放到其他机器上。

  8. 禁用你不需要的注册表存取程序。(同上面的警告)这些包括:

  Xp_regaddmultistring

  Xp_regdeletekey

  Xp_regdeletevalue

  Xp_regenumvalues

  Xp_regremovemultistring

  注意 :我过去一直在这里列出 xp_regread/ xp_regwrite但是这些程序的移除影响一些主要功能包括日志和SP的安装,所以他们的移除不被推荐。

  9.移除其他你认为会造成威胁的系统储存进程。 这种进程是相当多的,而且他们也会浪费一些cpu时间。 小心不要首先在一个配置好的服务器上这样做。首先在开发的机器上测试,确认这样不会影响到任何的系统功能。

  10. 在企业管理器中”安全选项” 之下禁用默认登录。(只有SQL 6.5) 当使用整合的安全时候,这使未经认可的不在 syslogins 表中使用者无权登陆一个有效的数据库服务器。

  11. 除去数据库的guest账户把未经认可的使用者据之在外。 例外情况是master和 tempdb 数据库,因为对他们guest帐户是必需的。

  12. 若非必须,请完全地禁用SQL邮件功能。它的存在使潜在的攻击者递送潜在的 trojans ,病毒或是简单实现一个DOS攻击成为可能

  13. 检查master..Sp_helpstartup看有无可疑的木马进程。 确定没有人已经在这里放置秘密的后门程序。 使用 Sp_unmakestartup 移除任何可疑进程。

  14. 检查master..Sp_password看有无trojan代码。比较你的产品scripts和一个新安装的系统的默认scripts而且方便的保存。

  15. 记录所有的用户存取访问情况。 从企业管理器做这些设定或通过以sa登陆进入查询分析器的下列各项:

  xp_instance_regwrite N’HKEY_LOCAL_MACHINE’, N’SOFTWARE MicrosoftMSSQLServerMSSQLServer’,N’AuditLevel’,REG_DWORD,3

  16. 重写应用程序使用更多用户定义的储存和察看进程所以一般的对表的访问可以被禁用。 在这里你也应该看到由于不必经常进行查询计划操作而带来的性能提升。

  17. 除去不需要的网络协议。

  18. 注意SQL 服务器的物理安全。把它锁在固定的房间里,并且注意钥匙的安全。只要有机会到服务器面前,就总是会找到一个方法进入。

  19. 建立一个计划的任务运行:

  findstr/C:” Login Failed”mssql7log*.*’

  然后再重定向输出到一个文本文件或电子邮件,因此你监测失败的登录尝试。这也为系统管理员提供一个好的记录攻击的方法。 也有很多用来分析NT日志事件的第三者工具。 注意: 你可能需要将路径换成你安装SQL的路径。

  20. 设定非法访问和登陆失败日志警报。到 企业管理器中的”Manager SQL Server Messages “搜寻任何有关无权访问的消息 ( 从查找”login failed”和”denied”开始). 确定你所有感兴趣的信息被记录到事件日志。然后在这些信息上设定警报 , 发送一个电子邮件或信息到一个能够对问题及时响应的操作员。

  21. 确定在服务器和数据库层次上的角色都只被授给了需要的用户。 当 SQL Server 安全模型 7 有许多增强的时候, 它也增加额外的许可层,我们必须监控该层,确定没有人被授予了超过必需的权限。

  22. 经常检查组或角色全体会员并且确定用组分配权限,这样你的审计工作能够简化。 确定当你在的时候 , 公众的组不能从系统表执行选择操作。

  23. 花些时间审计用空密码登陆的请求。 使用下面的代码进行空密码检查:

  使用主体

  选择名字,

  password

  from syslogins

  where password is null

  order by name

  24. 如果可能,在你的组织中利用整合的安全策略。 通过使用整合的安全策略,你能够依赖系统的安全,最大简化管理工作从维护二个分开的安全模型中分离开来。这也不让密码接近连接字串。

  25. 检查所有非sa用户的存取进程和扩充存储进程的权限。 使用下面的查询定期的查询哪一个进程有公众存储权限。(在SQL Server中 使用 “type” 而不是 “xtype”):

  Use master

  select sysobjects.name

  from sysobjects,sysprotects

  where sysprotects.uid=0

  AND xtype 在 (‘X’,'P’)

  AND sysobjects.id=sysprotects.id

  Order by name

  26. 当时用企业管理器的时候,使用整合的安全策略。 过去,企业管理器被发现在标准的安全模态中储存 “sa” 密码在注册表的 plaintext 中。 注意: 即使你改变模态,密码也会留在注册表中。 使用 regedit 而且检查键:

  HKEY_CURRENT_USERSOFTWAREMicrosoft

  MSSQLServerSQLEW Regedi

  SQL 6.5

  现在数据被隐藏在

  HKEY_USERS\softwareMicrosoftMicrosoft SQL servertoolSQLEWregistered server XSQL server group

  (“SQL server组” 是默认值但是你可能已建立用户组因此相应地改变其位置)

  27. 发展一个审核计划而且订定每月的安全报告,对IT主管可用的报表包括任何的新exploit,成功的攻击 , 备份保护 , 和对象存取失败统计。

  28. 不要允许使用者交互式登陆到 SQL Server之上。这个规则适用任何的服务器。 一旦一个使用者能够交互式进入一个服务器之内,就有能用来获得管理员的存取特权得到管理员权限。

  30. 尽力限制对SQL Server的查询与存取操作。 用户可以用最小权限查询sql server中的很多东西。若非必须不要给他们机会。


3
六 08

来自刘思宜

“发上等愿,结中等缘,享下等福
择高处立,就平外坐,向宽处行”


3
六 08

法国MM 海豚音