??xml version="1.0" encoding="utf-8" standalone="yes"?>久久影视国产亚洲,91久久婷婷国产综合精品青草,999久久久免费精品国产 http://www.shnenglu.com/elva/category/4224.htmlzh-cn Wed, 20 Oct 2010 14:54:25 GMT Wed, 20 Oct 2010 14:54:25 GMT 60 XP右下角USB图标消失怎么?/title> http://www.shnenglu.com/elva/archive/2010/10/20/130572.html叶子 叶子 Wed, 20 Oct 2010 07:13:00 GMT http://www.shnenglu.com/elva/archive/2010/10/20/130572.html http://www.shnenglu.com/elva/comments/130572.html http://www.shnenglu.com/elva/archive/2010/10/20/130572.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/130572.html http://www.shnenglu.com/elva/services/trackbacks/130572.html 现象Q右下角USB快速删除图标和音量控制图标无法在Q务栏昄Q而在声音和音频设备属性中“音量图标显C在d?#8221;的复选框是被选择状态,q伴随的症状有刚开ZQ务栏好长旉处于不能使用状态?/p>
描述环境QWindows XPQSP2Q?/p>
解决Ҏ(gu)Q开?q行services.mscQ找到服务SSDP Discovery ServiceQ双击,在属性中停止服务Qƈ在启动类型中选择“用”
重启后故障排除!
转自Q?br>http://mumu.er.blog.163.com/blog/static/9782226820092411115271/
]]> q程登陆提示 "(zhn)没有登陆到该会话的权限" 之解军_?/title> http://www.shnenglu.com/elva/archive/2008/03/12/44303.html叶子 叶子 Wed, 12 Mar 2008 13:06:00 GMT http://www.shnenglu.com/elva/archive/2008/03/12/44303.html http://www.shnenglu.com/elva/comments/44303.html http://www.shnenglu.com/elva/archive/2008/03/12/44303.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/44303.html http://www.shnenglu.com/elva/services/trackbacks/44303.html 如果(zhn)在l端服务理中添加了相应的权限而依然无?那么你可以采用下面的办法. 1. ?#8220;d删除E序?#8221;---?#8220;d删除windowsl徏”Q?取消?#8220;l端服务”?#8220;l端服务授权”Q将其删除掉Q完成之后,不要选择重新启动. 2.叛_“我的?sh)?#8221;Q属?--》远E?nbsp; N?#8220;允许用户q程q接” 3.重新启动QOK. 补充Q这个问题是׃l端服务的授权引L。从事g日志中可以看到?
]]> 实例讲解lilo.conf的? http://www.shnenglu.com/elva/archive/2008/02/27/43345.html叶子 叶子 Wed, 27 Feb 2008 08:55:00 GMT http://www.shnenglu.com/elva/archive/2008/02/27/43345.html http://www.shnenglu.com/elva/comments/43345.html http://www.shnenglu.com/elva/archive/2008/02/27/43345.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/43345.html http://www.shnenglu.com/elva/services/trackbacks/43345.html 如果你第一ơ安装Linux Q那么可能就需要用到双重启动?br>LILOQLInux LOaderQ就是实现这U功能的最单但是最 h伸羃性的E序?br> 计算机启动时QBIOS 会执行位于硬盘主引导记录QMBRQ?br>或者Y盘上的一D引导程序,q段E序的作用就是定位ƈ 加蝲操作pȝ。如果是引导Linux 的话Q引导程序会把Linux 内核调入内存。LILO 是q这U活儿的E序?br> 首先遇到LILOQ估计应该在你安装Linux 的时候,你会被要求选择LILO 的安装处Q是MBR q是Linux 的根分区。如果你有其他的启动理E序例如Boot Magic 或?System Commander {,q且想用他们,那么你应该把LILO 安装到Linux 的根分区。如果你选择使用LILO 作ؓ启动理E序Q就可以选择MBR。如阆朐谄舳贝莉诤耍?#937;檬褂肕BR?br> 使用LILO 作ؓ启动E序后,机器启动后就会有LILOQ的提示W,按下 TAB 键,可以看到可以选择的操作系l列表。输入其中的操作pȝ标签名就可以启动到对应的操作pȝQ或者直接输入回车启动到~省的操作系l?br> 我们来看一个LILO 启动的配|文Ӟ/etc/lilo.confQ实例: boot = /dev/hda vga = normal read-only prompt default = dos timeout = 30 append="hdc=ide-scsi" image = /boot/vmlinuz label = linux root = /dev/hda2 initrd = /boot/initrd W一个选项?boot Q定义了LILO 的安装位|, '/dev/hda' 是把LILO 安装?MBRQ所以你如果要把 LILO 作ؓ启动理E序Q就必须q样写哦Q反之,你要把他定位到具体的Linux 根分Z?/dev/hda3?br> vga 是一个显C启动菜单的配置选项Q可以有Q?br> 'normal' Q?0x25 文本模式Q, 'extended' Q?0x50 文本模式Q?br>以及 'ask' Q提CZ选择文本模式Q?br> 采用read-only 选项Ӟpȝ会把根分区挂接ؓ只读方式Q?br>推荐采用q个选项Q因?fsck E序要求文gpȝ只读?br>但不用担心你的根分区会不能写入了Q相反,pȝ一?br>启动׃把根分区挂接写方式?br> prompt 是一个必L入的选项Q否则就没有LILO 的提C符了。但是按?shift 键可以看到提C?br> default 指定~省的引导映像,如果没有指定Q那么第一?br>定义的映像就成ؓ~省倹{?br> timeout 是提C显C的旉Q单位是 0.1 U?br> append 是一个十分有用的选项Q他允许你把额外的参C递给内核Q例子中?/dev/hdc 是一个可擦写CD驱动器,传递的参数是用来让内核认识这个驱动器Q另外这个选项在个别不认识内存的机器上十分有用。需要注意的是,你需要用双引号来引入想要传递的参数Q不褂玫ヒ拧? LILO 也可以让你手工在LILO 提示W下传递这些参数。例如: LILO: linux single 是告诉Linux 启动Linux q入单用h式。在引导区损坏时Q可以从软盘启动Q然后指定硬盘的Ҏ(gu)修复盘引导扇区?br> LILO: linux root=/dev/hda3 image 指定需要启动的内核映像。每个映像还包括一?label 选项定义启动时你需要输入的标签?br> q可以ؓ某一?image 指定口oQ?br> password='password' d restricted 选项后,pȝ׃在你传递额外的参数时提C口令。这防止有人采?#8220;linux single” 来直接引导到提示W,而不需要验证系l口令。这在采用主机托的服务器上十分有用Q如果碰到别有用心的L托管机房的管理h员时Q这一招还是管用的?br> LILO 引导其他cd的操作系l和引导Linux 一样配|,但是更加单: other = /dev/hda3 label = dos table = /dev/hda other 指明操作pȝ所在的分区Q同L和Linux 下的image 一样也需要给定一个标{(labelQ,table 选项指向包含分区表的讑֤Q这个选项必不可少Q因为LILO 会从q个q个分区表寻扑֯应的分区信息Q然后把他传递给 要启动的操作pȝ?br> 对lilo.conf 的Q何改变都要求重新q行 /sbin/lilo Q保证最新的改变能写入分区?br>另外Q如果你升内核或者重构了 initrd 映像Q也需要重新运?/sbin/lilo?br> q行/sbin/lilo 后,可以看到如下信息Q?br> Added linux * Added suse Added windows 表示各种映像已经写入分区Q带?* 的分区是目前的缺省引导分区?br>可以?-D 参数改变~省引导分区Q?br> /sbin/lilo -D windows Added linux Added suse Added windows * 可以看到~省分区已经成ؓ windows了?br>
]]>Linux下Tomcat的安?/title> http://www.shnenglu.com/elva/archive/2008/02/27/43343.html叶子 叶子 Wed, 27 Feb 2008 08:53:00 GMT http://www.shnenglu.com/elva/archive/2008/02/27/43343.html http://www.shnenglu.com/elva/comments/43343.html http://www.shnenglu.com/elva/archive/2008/02/27/43343.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/43343.html http://www.shnenglu.com/elva/services/trackbacks/43343.html Linux下Tomcat的安?/p>
Q.下蝲Tomcat
在下面的地址下蝲Tomcat的二q制?/p>
http://mirrors.ccs.neu.edu/Apache/dist/jakarta/tomcat-4/binaries/
即下载文?/p>
tomcat-4.1.18.tar.gz
2. 安装
首先解压~?/p>
gunzip tomcat-4.1.18.tar.gz tar -zxvf tomcat-4.1.18.tar
得到Tomcat的所有文?然后把它拯C要安装的位置Q如
/opt/tomcat-4.1.18/
然后Z方便Q你可以把目录名tomcat-4.1.18改ؓtomcatQ?/p>
Q.讄
讄路经
?etc/profile文g中加入如下两?/p>
export JAVA_HOME=/opt/jdk1.4 export TOMCAT_HOME=/opt/tomcat
在此我们假设Java JDK安装?opt/jdk1.4目录下. ȀzROOT
ROOT的缺省设|是没有Ȁz?disabled)Qؓ了激zROOTQ打开文g
tomcat/conf/server.xml
然后?/p>
<!-- <Context path="" docBase="ROOT" debug="0"/> -->
的注释去掉,卛_?lt;!--?->Q?/p>
讄Port Tomcat~省的Port number?080Q由于Tomcat是一个独立的(Standalone) Web ServerQ它可以不用Apache而独立工作,所以你可以不安装ApacheQ这样你可以把Tomcat讄在Port 80Q这样你可以在URL中省?8080. 打开文gtomcat/conf/server.xmlQ找到如下的字段Q?/p>
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="8080" ... ... />
然后?080Ҏ(gu)80卛_Q?/p>
ȀzInvoker Servlet
xtomcat/conf/web.xml中的下列字段的注释去?/p>
<servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping>
创徏temp子目?br>?opt/tomcat/目录下徏立一个temp子目?br> mkdir temp Q.启动Tomcat
安装完后Q重新启动计机Q以使JAVA_HOME和TOMCAT_HOME的设|生效.然后?/p>
/opt/tomcat/bin
下,q行命oQ?/p>
./startup.sh
正常情况下可以见到如下的信息Q?/p>
Using CATALINA_BASE: /opt/tomcat Using CATALINA_HOME: /opt/tomcat Using CATALINA_TEMDIR: /opt/tomcat/temp Using JAVA_HOME: /opt/jdk1.4
然后用浏览器打开如下的网?/p>
http://localhost/
或?/p>
http://localhost:8080/ Q如果没有把Port number改ؓQ0Q?/p>
如果你见到Tomcat的网(index.jspQ,证明Tomcat安装成功Qƈ已经启动Q?/p>
如要关闭TomcatQ在/opt/tomcat/bin下运行下面的命o卛_
./shutdown.sh
5. 注册你自q目QProjectQ?/p>
假设你有一个自qJSP目Q他应该安装在下面的目录下:
/opt/tomcat/webapps/myproject
你必dtomcat/conf/server.xml中加入一?/p>
<Context path="/myproject" docBase="myproject" debug="0"/>
在浏览器中对应的地址为:
http://localhost/myproject
]]> Solarispȝ理 http://www.shnenglu.com/elva/archive/2008/02/27/43342.html叶子 叶子 Wed, 27 Feb 2008 08:52:00 GMT http://www.shnenglu.com/elva/archive/2008/02/27/43342.html http://www.shnenglu.com/elva/comments/43342.html http://www.shnenglu.com/elva/archive/2008/02/27/43342.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/43342.html http://www.shnenglu.com/elva/services/trackbacks/43342.html dd命o复制盘
1)保原盘和目的盘几何Ҏ(gu)相? 2)成ؓ用户 3)在用ȝ的系l中输入touch /reconfigure,有主盘的pȝ需?reconfigure文gQ以便在重新启动时发现复制盘 4)输入init 0关闭pȝ 5)复制盘q接到系lƈ开? 6)在OK提示W下输入boot 7)输入dd if=/dev/dsk/device-name of=/dev/dsk/device-name bs=blocksize (输入文gif是主盘设备,输入文gof是复制盘讑֤) 8)输入fsck /dev/rdsk/device-name (新的文件系l? 9)输入mount /dev/rdsk/device-name /mnt 加蝲复制盘的root文gpȝ? 10)~辑复制盘上?etc/vfstab文gQ指向正的讑֤名? 11)输入umount/mnt Q卸载复制盘的root文gpȝ? 12)输入init 0关闭pȝ? 13)输入boot diskN -s以单用户模式引导复制盘? 14)输入sys-uconfig恢复配置复制盘,在该盘配|恢复后pȝ关闭? 15)输入boot diskN 引导复制? 16)提供相关的系l信息?HOSTNAME TIMEZONE IP...) 17)pȝ完成Q即作ؓ用户d验证pȝ信息?
例: #dd if=/dev/dsk/c0t0d0s2 of=/dev/dsk/c0t1d0s2 bs=100k #fsck /dev/rdsk/c0t1d0s2 #mount /dev/rdsk/c0t1d0s2 /mnt #cd /mnt/etc #vi /etc/vfstab #cd /;umount /mnt #init 0 OK boot disk2 -s #sys-unconfig OK boot disk2 -s
================================================================================= Solaris|络配置
L名ؓsampdt,ip 10.1.1.1
1 /etc/hosts L名解? # # Internet host table # 127.0.0.1 localhost 10.1.1.1 sampdt loghost 10.1.1.46 test.china.org 10.1.1.3 sidemo 2 /etc/hostmane.hme0 |络接口? sampdt 3 /etc/netmasks |络掩码 4 /etc/inetd.conf 服务目定义 5 /etc/defaultroot 讑֮路由 6 /etc/nsswitch.files 讑֮名字搜烦序 7 /etc/defaultrouter ~省路由
做ؓDNS服务? 建立/etc/named.boot named.boot格式Q? directory /etc/namedb cache . named.root primary 0.0.127.in-addr.arpa named.local primary domain name file
q程讉K命o 1. rlogin 在远E机上注? 格式 Q?rlogin hostname -l username 2. rsh 在远E机上执行一个程? 格式 Q?rsh hostname -l username order 3. rcp 在远E系l之间拷贝文? 格式 Q?rsh host:filename filename
讉K鉴别相关文g 当rlogin,rsh,rcp命oӞ有几个文件对|络安全是很重要? /etc/passwd 如远E系l的口o文g有本地用L登记,否则必须使用 [-l] 选项以指明不同用?可支持root用户? $home/.rhosts rlogin,rsh,rcp首先查用户主目录下的.rhosts文gQ如L及用戯列在文g中,则此用户为可信QLQ不需口o卛_dQ如q程? 别失败,则正常询问口? /etc/hosts.equiv 作用?rhosts 文gcMQ文件中列出用户对于本机为可信Q用户Q不需口o卛_dQ除用户Q? |络监控 1.rusers 标识|络上注册用? 格式Qrusers -la 2.rup 标识|络上主? 命o格式Qrup 3.ping 主接状? 命o格式Qping [hostname|IP address] 4.spray ping命o格式Z层协议,spray使用高层协议 命o格式Qspray hostname 5.netstat 昄与网l有关的各种数据l构 命o格式Qnetstat -[r| i]n -r :昄路由信息 -i :昄接口信息 6.ifconfig 昄|络接口 命o格式Qifconfig -a 其中 lo0: 本机自回馈接?le0: 10M接口 hme0:100M接口 hme1:W二100M接口 7.netstat 昄与网l有关的各种数据l构 命o格式Qnetstat -[r| i]n -r :昄路由信息 -i :昄接口信息 8.route 路由讄 命o格式Qroute [add|delete] 讄|络路由 defaultrouter <-~省静态\? 9.arp 反响解析 命o格式Qarp -[a|s]
================================================================================
Solaris使用技?
在从WINDOWS传到UNIX在每行的l尾可能会出现^M 解决Ҏ(gu)Q? 1、用ASCII模式重传? 2、用vi 中的替换 %s/^M$// <- ^ ctrl+v M ctrl+m 文g名ؓ -filename 如何d? rm -- "-filename"
fd - /dev/fd fd - no - /proc - /proc proc - no - /dev/dsk/c0t3d0s0 /dev/rdsk/c0t3d0s0 / ufs 1 no - /dev/dsk/c0t0d0s3 /dev/rdsk/c0t0d0s3 /usr ufs 1 no - /dev/dsk/c0t0d0s0 /dev/rdsk/c0t0d0s0 /download ufs 2 yes - /dev/dsk/c0t3d0s1 /dev/rdsk/c0t3d0s1 /export ufs 2 yes - #/dev/dsk/c0t0d0s1 - - swap - no - #swap - /tmp tmpfs - yes -
ls的特D用? %ls -R // 昄所有文件包括子目录 %ls * // 同上 %ls -t // 以时间排序来昄 下面的语句可以帮你计有多少个文件和多少个目?. # ls -l * |grep "^-"|wc -l // to count files # ls -l * |grep "^d"|wc -l // to count dir q可以将以上的语句变成script或做个alias 只列子目录的Ҏ(gu)Q? ls -F | grep /$ 或?alias sub = "ls -F | grep /$"(Linux) ls -l | grep "^d" 或?ls -lL | grep "^d" (Solaris)
Grep命o用法 %grep user1 /etc/passwd %grep -i user1 /etc/passwd //不管大小?nbsp;
Alias用法 %alias find1 find . -name '\!*' -print // alias a new find
Find命o用法 %find . ctime 0 -print //搜寻今天修改q的所有文? %find . -name '*.bak' -exec rm {}\ //搜寻加删? %find . \(-name *.txt -ctime 7\) -print //搜寻7天前修改q的txt文g 利用Find命o改变所有权Q想要改变当前目录下所有文件的所有权,可以q样: find . -exec chown OWNER.[GROUP] {} \; (Solaris) find . -exec chown -R OWNER.[GROUP] {} \; (Linux)
Cut命o用法 %cut -f field_list file //以逗号或空格来间隔 %cut -d: -f5,7-9 mydata //以冒h间隔 %cut -s -c35-40 mydata //以列数来间隔-s 不包括头部注?
列出除了某些cd文g的当前目录所有文? 使用Ksh,用ls !(*.Z)可以昄所有文Ӟ除了*.Z文g? q个命o在一个目录里有许多种cd的文件的时候很有用?nbsp;
改变unix提示W: %PS1=’newprompt’ %export PS1 q可以这么做Q? %set prompt='user1[\!]' // \! 昄命oơ数
为环境变量增加新PATH路径(不媄响老\?? %PATH=$PATH:$HOME/bin:/…/…/ %export PATH
列D与某个主题相关的所有unix命oQ? %apropos lp //列D与lp(打印?相关的所有命?nbsp;
查看unix版本? %uname –a
UNIX下整个目录拷? %cp –r /home/baoshan/zzy . //?home/baoshan/zzy整个目录拯到当前目录下
UNIX下文件格式与DOS文g格式互换 %unix2dos oldfile newfile %dos2unix oldfile newfile
查看UNIX下已l安装的?package %pkginfo
昄某一目录下所有文件size %du –d /; //昄根目录下所有文件的size大小
文g加密Q? %crypt passwd < myfile > newfile //compress %rm myfile %crypt passwd < newfile //restore
取消^M字符: 当你FTP一些DOS文g到unix下时Q你l常会看见每行文件后面有个讨 厌的^M 字符,(?HTML 文g传输?UNIX pȝ可引起回车符转变?#8220;^M”字符), 有两个简单的Ҏ(gu)可以取消它? ?vi"打开此文Ӟ在Command mode下敲入: :%s/^V^M//g 或者,在UNIX SHELL下敲? sed 's/^V^M//g' foo > foo.new
使用nohup命o: 如果你想q程在你退出系l后q能执行Q可以用NOHUP命o 如: % nohup tar -cf /dev/tape /home & 你退出后再重新登录的话,使用'ps'命o可以看到q程q在执行
查看文g的方? 如果你只想看文g的前5行,可以使用head命oQ如Q? head -5 /etc/passwd 如果你想查看文g的后10行,可以使用tail命oQ如Q? tail -10 /etc/passwd 你知道怎么查看文g中间一D吗Q你可以使用sed命o ? sed -n '5,10p' /etc/passwd q样你就可以只查看文件的W?行到W?0行?
查磁盘剩余空_ %df –k %df –t
用户修改pȝ旉Q? #date MMDDHHMI #date –u MMDDHHMIYYYY
用户修改正常用户口oQ? #passwd –d user1 //删除用户user1的口?
==================================================================================
SUN软g包管理的命oQpkginfo、pkgadd和pkgrm
pkginfo 查看当前操作pȝ已经安装的Y件包?nbsp; # pkginfo | more application SUNWAxg Solaris XGL 3.3 AnswerBook application SUNWaadm Solaris 7 System Administrator Collection system SUNWab2m Solaris Documentation Server Lookup system SUNWab2r Solaris Documentation Server system SUNWab2s Solaris Documentation Server system SUNWab2u Solaris Documentation Server application SUNWabda Sun Ultra 5/10 Hardware AnswerBook application SUNWabe Solaris 7 User Collection application SUNWabsdk Solaris 7 Software Developer Collection
pkginfo [ -d [ device | pathname ] ] [ -l ] pkg_name
参数Q?nbsp; Qd 软g包所在的讑֤路径 Ql 软g包的详细描述 pkg_name 软g包的 名字 # pkginfo -d /cdrom/cdrom0/s0/Solaris_2.7/Product -l SUNWaudio PKGINST: SUNWaudio NAME: Audio applications CATEGORY: system ARCH: sparc VERSION: 3.6.4,REV=1.98.08.13 BASEDIR: / VENDOR: Sun Microsystems, Inc. DESC: Audio binaries PSTAMP: dtbuild37s19980813171753 HOTLINE: Please contact your local service provider STATUS: spooled FILES: 9 spooled pathnames 2 directories 3 executables 4 package information files 700 blocks used (approx)
pkgrm pkgrm用于删除软g?nbsp;
语法Q?nbsp;
pkgrm package_name
# pkgrm SUNWaudio The following package is currently installed: SUNWaudio Audio applications (sparc) 3.6.4,REV=1.98.08.13 Do you want to remove this package? y ## Removing installed package instance ## Verifying package dependencies. WARNING: The package depends on the package currently being removed. WARNING: The package depends on the package currently being removed. WARNING: The package depends on the package currently being removed. WARNING: The package depends on the package currently being removed. Dependency checking failed. Do you want to continue with the removal of this package [y,n,?,q]
注:如果某个文g被多个Y件包qQ则只当最后的包被删除时才被删除?nbsp; pkgadd 使用pkgaddd软g?nbsp; 命o格式Q?nbsp; pkgadd [ -d [device | pathname ]] pkg_name # pkgadd -d /cdrom/cdrom0/s0/Solaris_2.7/Product SUNWaudio Processing package instance from Audio applications (sparc) 3.6.4,REV=1.98.08.13 Copyright 1998 Sun Microsystems, Inc. All rights reserved. Using as the package base directory. ## Processing package information. ## Processing system information. 2 package pathnames are already properly installed. ## Verifying package dependencies. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. ## Checking for setuid/setgid programs. This package contains scripts which will be executed with super-user permission during the process of installing this package. Do you want to continue with the installation of [y,n,?] y Installing Audio applications as ## Installing part 1 of 1. Installation of was successful.
=================================================================================
Solaris性能监控的SwapI间理
随着?sh)子商务如火如荼的开展,|站服务器的性能变得其重要。一旦服务器的能力不能满用L需要,׃对用L服务大打折扣Q那么就需要对服务器进行升U扩宏V但是,有些时候只需Ҏ(gu)务器q行一些适当的性能调整Q便可以过性能的瓶颈,大大提高服务器的吞吐能力Q从而减服务器升的费用?nbsp;
本文介绍了在Solarisq_上SwapQ交换)I间的基本概c实现的原理以及对SwapQ交换)I间q行监控的方法和调整的策略?nbsp;
什么是SWAPQ交换)I间
对于一般的Solarispȝ理员来_很少会接触SwapQ交换)I间Q在他们看来Swap区只不过是磁盘上的一两个分区或是几个SwapQ交换)文gQ当pȝ没有_的物理内存来处理当前q程的时候,利用SwapQ交换)I间作ؓ虚拟内存的时存储空_q种说法从技术角度来说是没有错的Q但Solaris在实现Swap时有光常独特的地方?nbsp;
SWAPI间作用
众所周知Q现代操作系l都实现?#8220;虚拟内存”q一技术,不但在功能上H破了物理内存的限制QɽE序可以操纵大于实际物理内存的空_更重要的?#8220;虚拟内存”是隔L个进E的安全保护|,使每个进E不受其他程序的q扰?nbsp;
SwapI间的作用可单描qCؓQ当pȝ的物理内存不够用的时候,需要将物理内存中的一部分I间释放出来Q以供当前运行的E序使用。那些被释放的空间可能来自一些很长时间没有什么操作的E序Q这些被释放的空间被临时保存到SwapI间中,{到那些E序要运行时Q再从Swap中恢复保存的数据到内存中。这PpȝL在物理内存不够时Q才q行Swap交换。这U现象对于计机使用者是l常遇到的?nbsp;
有一点要声明的是Qƈ不是所有从物理内存中交换出来的数据都会被放到Swap中(如果q样的话QSwap会不堪重负)Q有相当一部分的数据直接交换到文gpȝ。例如,有的E序会打开一些文ӞҎ(gu)件进行读?其实每个E序都至打开一个文Ӟ那就是运行程序本w?Q当q些E序的内存空间需要交换出LQ文仉分的数据没有必要放到SwapI间中了Q如果是L件操作,那么内存数据直接释放了Q不需要交换出来,因ؓ下次需要时Q直接从文gpȝp恢复;如果是写文gQ只需要将变化的数据保存到文g中,以便恢复。但是那些用malloc(3C)和new函数生成的对象的数据则不同,需要SwapI间Q因为它们在文gpȝ中没有相应的“储备”文gQ因此被UCؓ“匿名”(Anonymous)的内存数据,q类数据q包括堆栈中的一些状态和变量数据{,所以说QSwapI间?#8220;匿名”数据的交换空间?nbsp;
Swap的配|对性能的媄?nbsp;
太多的SwapI间会浪费磁盘的I间Q而太的SwapI间Q系l则会发生错误?nbsp;
如果pȝ的物理内存用光了Q你的系l就会跑得慢Q但仍能q行Q如果SwapI间用光了,那么pȝ׃发生错误。例如,Web服务器能Ҏ(gu)不同的请求数量衍生出多个服务q程(或线E?Q如果SwapI间用完Q则服务q程无法q动Q通常会出?application is out of memory"的错误,严重时会造成服务q程的死锁。因此SwapI间的分配是很重要的?nbsp;
通常情况下,SwapI间应大于或{于物理内存的大,最不应小?4MQ通常SwapI间的大应是物理内存的2Q?.5?Solaris 2以上的版本有所变化Q见下文)。但Ҏ(gu)不同的应用,应有不同的配|:如果是小的桌面系l,只需要较?yu)的SwapI间Q而大的服务器pȝ则视情况不同需要不同大的SwapI间。特别是数据库服务器和Web服务器会随着讉K量的增加Q对Swap I间的要求也会增加,具体配置参见各自服务器品的说明?nbsp;
另外QSwap分区的数量对性能也有很大的媄响。因为Swap交换的操作是盘I(y)/O的操作,如果有多个Swap交换区,SwapI间的分配会以轮的方式操作于所有的SwapQ这样会大大均衡I/O的负载,加快Swap交换的速度。如果只有一个交换区Q所有的交换操作会交换区变得很忙,使系l大多数旉位于{待状态,效率很低Q用性能监视工具׃发现Q此时的CPUq不很忙Q而系l却慢,q说明,瓉在I/O上,依靠提高CPU的速度是解决不了问题的?nbsp;
性能监视
SwapI间的分配固然很重要Q而系l在q行时的性能监控却更加有价|通过性能监视工具可以查系l的各项性能指标Q找到系l性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途?nbsp;
最常用的是Vmstat命oQ在大多数Unixq_下都有此命oQ此命o可以查看大多数性能的指标?nbsp;
另外使用swap Qs 也能单的查看当前swap资源的用情c例如: Q?swap Qs total: 65896k bytes allocated Q?56840k reserved = 122736k used, 1069456k available
能够方便的看出swapI间的已用和未用资源的大。应该Swap保持30Q的负蝲以下Q才能保证系l的良好性能?nbsp;
Solaris中Swap的特?nbsp;
虚拟SwapI间
本来SwapI间是拟内存服务的Q现在Solaris的SwapI间也成拟,q到底是怎么回事呢?
让我们看一个例子就明白了,当在Solaris 2以前版本的Solaris(或其它UnixQ?如Linux)上编E时l常会出C个问题:
假设pȝ当前q有可用的内存空间ؓ30MQ而只剩下10M的SwapI间了,q时Q如果有一个进E开始运行ƈ企图执行Malloc(15Q?024Q?024)的命?分配15MI间)Q这个进E会因ؓq个命o而失败?nbsp;
Z么呢Q系l不是有30M可用的内存空间吗Q原因在于:你的SwapI间不Q系l认Z在分配空间以后,没有能力(I间)在发生页面交换时Q将q部分数据保存v来,因此认ؓ你没有资格分配这块空间。这不是太不公^了吧Q也许这15MI间Ҏ(gu)不用交换Q当前系l可是还?0M内存I间的富余啊!
q有更不公^的呢?有些大型pȝ配备了v量的内存Q?G?GQ配了这么多内存是Z避免交换Q提高运行速度Q可是系l还要ؓq个pȝ分配q不需要的SwapI间Q占用了大量盘资源?nbsp;
Z弥补q个~陷QSun为Solaris 2 以后的版本设计了虚拟SwapI间。所谓虚拟的SwapI间Q概念其实很单,swapI间再也不是单指盘的分区或文g。虚拟SwapI间包含两个部分Q部分物理内存和传统上的Swap分区。经q适当的配|,可以使系l需要SwapI间Ӟ先用内存部分的swapI间Q如果内存部分的swapI间不够Q再使用盘部分的SwapI间。这P也许你硬盘上的SwapI间很少得到使用了,甚至Ҏ(gu)不需要Swap分区?nbsp;
SwapI间与TMPFS文gpȝ的关p?nbsp;
你知道吗Q虚拟SwapI间?/tmp目录有相当大的关pRSun在实?nbsp; /tmp目录Ӟ充分考虑了应用程序运行的效率。许多应用程序,特别是数据库服务都会频繁使用 /tmp目录作ؓ临时数据保存区,而Solaris?nbsp; /tmp目录下的文g都放在内存中而不是硬盘里Q这样会大大提高应用E序的效率?nbsp;
但是/tmp目录的空间是从系l虚拟空间里挤出来的Q是虚拟SwapI间的一部分。如果说Q你用完?tmpI间Q也是用完了SwapI间Q所以要心监视pȝ?tmp目录的用情况,千万别用光了Q否则系l会瘫痪!下面两点作ؓ参考:
1.在Mount /tmp目录Ӟ使用(Qo Size)选项来控?tmp目录的大?nbsp;
2.当用编译器~译文gӞ如果不想占用SwapI间Q则用TMPDIR环境变量指向另外一个时目录,而不?tmp目录?nbsp;
有关SwapI间操作的系l命?nbsp;
增加SwapI间
1.成ؓ用户 Qsu Q?root
2.创徏Swap文g Qmkfile nnn[klblm] filename 如:Qmkfile 100m swapfile1
3.ȀzSwap文g Q?usr/sbin/swap Qa /path/filename Swap文g必须以绝对\径来指定Qfilename指的是上一步创建的文g?nbsp;
4.现在新加的Swap文g已经起作用了Q但pȝ重新启动以后Qƈ不会C前几步的操作。因此要?etc/vfstab文g中记录文件的名字Q和SwapcdQ如Q?nbsp; /path/filename Q?Q?Swap Q?no Q?nbsp;
5.效验Swap文g是否加上 /usr/sbin/swap Ql
删除多余的SwapI间
1.成ؓ用户
2.使用swap Qd 命o收回swapI间?nbsp; Q?usr/sbin/swap Qd /path/filename
3.~辑/etc/ufstab文gQ去掉此Swap(交换)文g的实体?nbsp;
4.从文件系l中回收此文件?nbsp; Qrm swapQfilename
5.当然Q如果此Swap(交换)I间不是一个文Ӟ而是一个分区,则需创徏一个新的文件系l,再挂接到原来的文件系l上?nbsp;
==================================================================================
随着?sh)子商务如火如荼的开展,|站服务器的性能变得其重要。一旦服务器的能力不能满用L需要,׃对用L服务大打折扣Q那么就需要对服务器进行升U扩宏V但是,有些时候只需Ҏ(gu)务器q行一些适当的性能调整Q便可以过性能的瓶颈,大大提高服务器的吞吐能力Q从而减服务器升的费用?nbsp;
本文介绍了在Solarisq_上SwapQ交换)I间的基本概c实现的原理以及对SwapQ交换)I间q行监控的方法和调整的策略?nbsp;
什么是SWAPQ交换)I间
对于一般的Solarispȝ理员来_很少会接触SwapQ交换)I间Q在他们看来Swap区只不过是磁盘上的一两个分区或是几个SwapQ交换)文gQ当pȝ没有_的物理内存来处理当前q程的时候,利用SwapQ交换)I间作ؓ虚拟内存的时存储空_q种说法从技术角度来说是没有错的Q但Solaris在实现Swap时有光常独特的地方?nbsp;
SWAPI间作用
众所周知Q现代操作系l都实现?#8220;虚拟内存”q一技术,不但在功能上H破了物理内存的限制QɽE序可以操纵大于实际物理内存的空_更重要的?#8220;虚拟内存”是隔L个进E的安全保护|,使每个进E不受其他程序的q扰?nbsp;
SwapI间的作用可单描qCؓQ当pȝ的物理内存不够用的时候,需要将物理内存中的一部分I间释放出来Q以供当前运行的E序使用。那些被释放的空间可能来自一些很长时间没有什么操作的E序Q这些被释放的空间被临时保存到SwapI间中,{到那些E序要运行时Q再从Swap中恢复保存的数据到内存中。这PpȝL在物理内存不够时Q才q行Swap交换。这U现象对于计机使用者是l常遇到的?nbsp;
有一点要声明的是Qƈ不是所有从物理内存中交换出来的数据都会被放到Swap中(如果q样的话QSwap会不堪重负)Q有相当一部分的数据直接交换到文gpȝ。例如,有的E序会打开一些文ӞҎ(gu)件进行读?其实每个E序都至打开一个文Ӟ那就是运行程序本w?Q当q些E序的内存空间需要交换出LQ文仉分的数据没有必要放到SwapI间中了Q如果是L件操作,那么内存数据直接释放了Q不需要交换出来,因ؓ下次需要时Q直接从文gpȝp恢复;如果是写文gQ只需要将变化的数据保存到文g中,以便恢复。但是那些用malloc(3C)和new函数生成的对象的数据则不同,需要SwapI间Q因为它们在文gpȝ中没有相应的“储备”文gQ因此被UCؓ“匿名”(Anonymous)的内存数据,q类数据q包括堆栈中的一些状态和变量数据{,所以说QSwapI间?#8220;匿名”数据的交换空间?nbsp;
Swap的配|对性能的媄?nbsp;
太多的SwapI间会浪费磁盘的I间Q而太的SwapI间Q系l则会发生错误?nbsp;
如果pȝ的物理内存用光了Q你的系l就会跑得慢Q但仍能q行Q如果SwapI间用光了,那么pȝ׃发生错误。例如,Web服务器能Ҏ(gu)不同的请求数量衍生出多个服务q程(或线E?Q如果SwapI间用完Q则服务q程无法q动Q通常会出?application is out of memory"的错误,严重时会造成服务q程的死锁。因此SwapI间的分配是很重要的?nbsp;
通常情况下,SwapI间应大于或{于物理内存的大,最不应小?4MQ通常SwapI间的大应是物理内存的2Q?.5?Solaris 2以上的版本有所变化Q见下文)。但Ҏ(gu)不同的应用,应有不同的配|:如果是小的桌面系l,只需要较?yu)的SwapI间Q而大的服务器pȝ则视情况不同需要不同大的SwapI间。特别是数据库服务器和Web服务器会随着讉K量的增加Q对Swap I间的要求也会增加,具体配置参见各自服务器品的说明?nbsp;
另外QSwap分区的数量对性能也有很大的媄响。因为Swap交换的操作是盘I(y)/O的操作,如果有多个Swap交换区,SwapI间的分配会以轮的方式操作于所有的SwapQ这样会大大均衡I/O的负载,加快Swap交换的速度。如果只有一个交换区Q所有的交换操作会交换区变得很忙,使系l大多数旉位于{待状态,效率很低Q用性能监视工具׃发现Q此时的CPUq不很忙Q而系l却慢,q说明,瓉在I/O上,依靠提高CPU的速度是解决不了问题的?nbsp;
性能监视
SwapI间的分配固然很重要Q而系l在q行时的性能监控却更加有价|通过性能监视工具可以查系l的各项性能指标Q找到系l性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途?nbsp;
最常用的是Vmstat命oQ在大多数Unixq_下都有此命oQ此命o可以查看大多数性能的指标?nbsp;
另外使用swap Qs 也能单的查看当前swap资源的用情c例如: Q?swap Qs total: 65896k bytes allocated Q?56840k reserved = 122736k used, 1069456k available
能够方便的看出swapI间的已用和未用资源的大。应该Swap保持30Q的负蝲以下Q才能保证系l的良好性能?nbsp;
Solaris中Swap的特?nbsp;
虚拟SwapI间
本来SwapI间是拟内存服务的Q现在Solaris的SwapI间也成拟,q到底是怎么回事呢?
让我们看一个例子就明白了,当在Solaris 2以前版本的Solaris(或其它UnixQ?如Linux)上编E时l常会出C个问题:
假设pȝ当前q有可用的内存空间ؓ30MQ而只剩下10M的SwapI间了,q时Q如果有一个进E开始运行ƈ企图执行Malloc(15Q?024Q?024)的命?分配15MI间)Q这个进E会因ؓq个命o而失败?nbsp;
Z么呢Q系l不是有30M可用的内存空间吗Q原因在于:你的SwapI间不Q系l认Z在分配空间以后,没有能力(I间)在发生页面交换时Q将q部分数据保存v来,因此认ؓ你没有资格分配这块空间。这不是太不公^了吧Q也许这15MI间Ҏ(gu)不用交换Q当前系l可是还?0M内存I间的富余啊!
q有更不公^的呢?有些大型pȝ配备了v量的内存Q?G?GQ配了这么多内存是Z避免交换Q提高运行速度Q可是系l还要ؓq个pȝ分配q不需要的SwapI间Q占用了大量盘资源?nbsp;
Z弥补q个~陷QSun为Solaris 2 以后的版本设计了虚拟SwapI间。所谓虚拟的SwapI间Q概念其实很单,swapI间再也不是单指盘的分区或文g。虚拟SwapI间包含两个部分Q部分物理内存和传统上的Swap分区。经q适当的配|,可以使系l需要SwapI间Ӟ先用内存部分的swapI间Q如果内存部分的swapI间不够Q再使用盘部分的SwapI间。这P也许你硬盘上的SwapI间很少得到使用了,甚至Ҏ(gu)不需要Swap分区?nbsp;
SwapI间与TMPFS文gpȝ的关p?nbsp;
你知道吗Q虚拟SwapI间?/tmp目录有相当大的关pRSun在实?nbsp; /tmp目录Ӟ充分考虑了应用程序运行的效率。许多应用程序,特别是数据库服务都会频繁使用 /tmp目录作ؓ临时数据保存区,而Solaris?nbsp; /tmp目录下的文g都放在内存中而不是硬盘里Q这样会大大提高应用E序的效率?nbsp;
但是/tmp目录的空间是从系l虚拟空间里挤出来的Q是虚拟SwapI间的一部分。如果说Q你用完?tmpI间Q也是用完了SwapI间Q所以要心监视pȝ?tmp目录的用情况,千万别用光了Q否则系l会瘫痪!下面两点作ؓ参考:
1.在Mount /tmp目录Ӟ使用(Qo Size)选项来控?tmp目录的大?nbsp;
2.当用编译器~译文gӞ如果不想占用SwapI间Q则用TMPDIR环境变量指向另外一个时目录,而不?tmp目录?nbsp;
有关SwapI间操作的系l命?nbsp;
增加SwapI间
1.成ؓ用户 Qsu Q?root
2.创徏Swap文g Qmkfile nnn[klblm] filename 如:Qmkfile 100m swapfile1
3.ȀzSwap文g Q?usr/sbin/swap Qa /path/filename Swap文g必须以绝对\径来指定Qfilename指的是上一步创建的文g?nbsp;
4.现在新加的Swap文g已经起作用了Q但pȝ重新启动以后Qƈ不会C前几步的操作。因此要?etc/vfstab文g中记录文件的名字Q和SwapcdQ如Q?nbsp; /path/filename Q?Q?Swap Q?no Q?nbsp;
5.效验Swap文g是否加上 /usr/sbin/swap Ql
删除多余的SwapI间
1.成ؓ用户
2.使用swap Qd 命o收回swapI间?nbsp; Q?usr/sbin/swap Qd /path/filename
3.~辑/etc/ufstab文gQ去掉此Swap(交换)文g的实体?nbsp;
4.从文件系l中回收此文件?nbsp; Qrm swapQfilename
5.当然Q如果此Swap(交换)I间不是一个文Ӟ而是一个分区,则需创徏一个新的文件系l,再挂接到原来的文件系l上?nbsp;
===============================================================================
Solaris如何改变pȝq行U别 init
pȝq行U别?U,分别为: q行U别 意义 0 q入PROM状态(OK状态) 1 理状态(所有文件系l都挂上的单用户模式Q禁止其他用L录) 2 多用h式(没有|络文g׃n服务Q?nbsp; 3 多用h式(有网l文件共享服务) 4 未?nbsp; 5 退出操作系lƈx 6 重新启动机器 S,s 单用h?nbsp; init init命o用于改变操作pȝ的运行别?nbsp; 命o格式Q?nbsp; init [ 0123456Ss ]
# init 0 INIT: New run level: 0 The system is coming down. Please wait. System services are now being stopped. Print services stopped. Stopping the syslog service. syslogd: going down on signal 15 Aug 14 14:54:30 snmpdx: received signal 15 The system is down. syncing file systems... done Program terminated Type help for more information ok
shutdown 用于改变操作pȝq行U别?nbsp; 命o格式Q?nbsp; shutdown [ -y ] [ -g seconds ] [ -i init-state ] [message]
选项Q?nbsp; y pȝ提示旉认回{ؓYES g q多长时间改?nbsp; i 惌的运行?nbsp; message l所有登录用L信息
# shutdown -y -g 0 -i 0 Shutdown started. Mon Dec 15 15:13:57 PST 1997 Broadcast Message from root (console) on mcmurdo Mon Dec 15 15:13:57... THE SYSTEM IS BEING SHUT DOWN NOW ! ! ! Log off now or risk your files being damaged Changing to init state 0 - please wait ok
halt q入0q行U别 poweroff 关闭pȝq切断电(sh)?nbsp; reboot 重新启动pȝ
=============================================================================
为Sun服务器配|多|卡
---- 在网l设计中Q在服务器端Qؓ了防止网l传输过载或Zq接多子|的需要,往往要ؓ服务器配|多块网卡。下面介l如何ؓSun服务器来配置新网卡?nbsp;
---- 一Q安装新|卡
---- Q.通知操作pȝ在重新启动时新gQ命令如下:
---- Qtouch /reconfigure
---- Q.关闭服务器和甉|Q?nbsp;
---- Qshutdown -i5 -g60 -y
---- 此命令通知q接的客hQ服务器在60U(-g60Q后关闭Q运行?Q?i5Q指明如果硬件支持,p动关闭服务器甉|?nbsp;
---- Q.物理安装新网?nbsp;
---- 心取下服务器背板上的插板,Ud|卡上的托架Q安好网卡,再插回原位,最后将|线插入新网卡接口,启动服务器?nbsp;
---- 二.配置新网?nbsp;
---- Q.查新|卡的设备号
---- 服务台器启动后,用以下命令来查分配给新网卡的讑֤Pq与把网卡安装在哪个槽上有关Q?nbsp;
---- Qdmesg
---- 此命令执行后显C所有用L讑֤P如原有网卡的讑֤号ؓhme0Q新|卡的设备号为hme1{;
---- Q.为新|卡配置L名和IP地址
---- ?etc 目录?vi 建立名ؓ hostname. 后跟新网卡的讑֤P如hostname.hme1Q的文gQ其内容为绑定所l网卡的L名;修改/etc/hosts文gQ增加一条记录,其前半部分ؓ新网卡的IP地址Q加I格后跟新网卡的L名(hostname.hme1Q?nbsp;
---- 如:
10.10.10.100 sun1 #first network adapter 88.1.1.10 sun2 #second network adapter
---- Q.路由功能 ---- 操作pȝ自动开启多|卡的\由功能,若想关闭路由功能Q可用如下命令:
---- Qtouch /etc/notrouter
---- 完成以上步骤后重新启动系l可用如下命令配置生效
---- Qshutdown -i6 -g60 -y
---- 最后不要忘C改DNS或NIS服务器,以ɾ|络的其它主与之的通讯Q?nbsp;
---- 以上Ҏ(gu)需要Root用此权限在Sun Enterprise 3000服务器和Salaris 2.6 server操作pȝ上测试通过Q?nbsp;
==================================================================================
solaris中的pȝlog日志原理分析
作ؓd者当然要知道pȝ是如何纪录用Lzd的情늚原理的了Q呵呵,不然ip被记下来都不知道Q?
呵呵Q其实一些h只会?var/adm/目录里去删日志,那是很笨很笨的做法?
前段旉?a >www.unixaid.netl识了一个外地的pȝ理员,谈了谈,深有心得所以我把这些写下来Q呵c?
unixpȝ的日志其实是非常复杂和强大的Q特别是SolarispȝQ因为源码的不公开Q所以被蒙上了一层神U的面纱Q我研究分析了一阵子得出的结论和大家分nQ我的能力有限,q望大家多多指教?
负责日志记帐的有两个守护q程Qklogd,syslogdQ我着重讲q两个进E,当然q有q程记帐q程Q就不多介绍了,呵呵Q因为基本上所有的pȝ动作都会被这两个q程监视q纪录,大家如果要编写一些系l程序的话,也会用到syslogq个接口的,呵呵Qklogd主要U录一些系l内核的动作Q对d者最受媄响的是syslogdq个q程.它可以接收访问系l的日志信息q且Ҏ(gu)/etc/syslog.conf配置文g中的指o处理 q些信息。因此,M希望生成日志信息的程序都可向syslog接口呼叫来生成改信息。大部分内部pȝ工具如邮件和打印pȝ都是如此生成信息的,许多新增的程序如TCP_wrappers和SSH也是如此工作的。讲到这里,大家有点概念了吧Q呵? /etc/syslog.conf的格式比较复杂,大家可以参考一下有关书c,主要是如下语句Ş式: facility.level action facility代表各种服务Qlevel代表syslog的认证别,action代表的是针对前面信息的处理。大家可以注意action字段Q有时候会把信息发送到另外一台机器而不是熟(zhn)的/var/adm/messages的,q下应该知道q个文g的重要性了吧?如果真把日志发到另外一台机器的话,想办法把那台机器dos掉了Q不是它M是你亡啊Q呵呵,有时会发送到/dev/console,/dev/tty1?dev/lp1{等q样的设备,是发送到l端啊,呵呵Q想惛_果那l端作的是系l管理员Q你不是很惨Q?
现在大家应该知道不是删删/var/adm/messages׃事的?呵呵
好,下面介绍一下solaris的另外一个记帐,是wtmp和utmpQ说明一下大家常见到的wtmpx和utmpx是wtmp和utmp的扩展Ş了,大家可以参看wtmp.hQutmp.h里的定义的数据结构,会有写概念,呵呵Q在solaris里是通过utmpdQwtmpdq两个进E来q行记帐的,然后通过utmppipeq个道文g?var/adm/utmpxq个文g写数据,当然utmpxq个文g不是象messages一h文本形式的,它是二进制的Q只有who,finger命o可以讉KQ呵呵,大家知道了吧Q而last命o是访问wtmpx的。utmp是纪录用L动态会话用的,而wtmp是纪录用L登陆与推出的zd的,q就是区别,呵呵。写q篇
文章只是要提醒大家不要随便删日志Q那很傻的,呵呵Q最好自q写一些删日志的小工具Q很Ҏ(gu)Q大家参考一下utmpq个数据l构可以了Q也可以用一个命令来删除messages中的U录Q? eagle~# more /var/adm/messages|grep -v ?>/var/adm/messages 很简单不是么Q呵呵,当然utmp,wtmp中的U录p用程序解决了Q也有现成的E序比如Q?
wtmpdump.c,marry.c,remove.c{等Q呵呵都不错的,我主上有下载,呵呵 attacker.qzone.com
好了Q就说这么多了,重申一句,我只是ؓ了让大家q行爱国M行动的时候注意以下善后的工作Q呵呵其中牵涉到的只是非常多Q我很多没有详细说明和讲解,希望大家重视日志Q参考一下有兌料?
忘了Q这些是solaris中的情况Q呵呵,在Linux里又大不一P呵呵Qlinux里没有utmpdq个q程Q是通过PAM的认证模块来q行记帐的,PAM的资料大家可以参考一下书c很复杂Q说的话会近万字呢,呵呵
===================================================================================== 用户dӞBash 首先执行全局d脚本(?root 建立) /etc/profileQ然后在用户起始目录下依ơ寻?.bash_profile?bash_login?profile 三个文gQ执行最先找到的一个。可以用q种办法?Netware 一样ؓ不同的用户定制运行环境?br>
]]>autorun.inf完全操作手册(ZT) http://www.shnenglu.com/elva/archive/2007/12/12/38305.html叶子 叶子 Wed, 12 Dec 2007 05:47:00 GMT http://www.shnenglu.com/elva/archive/2007/12/12/38305.html http://www.shnenglu.com/elva/comments/38305.html http://www.shnenglu.com/elva/archive/2007/12/12/38305.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/38305.html http://www.shnenglu.com/elva/services/trackbacks/38305.html 微Y 官网的一个犄角旮旯找C一autorun.inf的英文用说明,在翻译和W者的亲自试验下写出此文章?br> ======我是分隔U?===== 一、autorun.inf是windows下操U光盘行为的一个文Ӟ需要放在光盘根目录下,部分操作对于盘也适用?br> 二、autorun.inf是可以被止的。方法如下: 点击开?>q行Q在文本框中输入regedit或者regedt32。依ơ展开HKEY_CURRENT_USER\Software\Microsoft \Windows\CurrentVersion\Policies\ExploerQ其中的NoDriveTypeAutoRun子键限制着Autorun的作用范_默认?5Q?6q制Q?br> 把禁用的讑֤标志相加讄为键值就可以完成讄Q其中设备标志如下: 1:无法识别的设?止Q默认禁? 2:没有根目录的讑֤(Drive without root directory未知含义Q徏议禁止,默认不禁? 4:可移动的讑֤(U盘,止Q很多病毒利用U盘的Autorun.infq行传染Q默认禁? 8:固定的设?盘Q自q着办,默认不禁? 16:|络讑֤(web驱动器,止Q默认禁? 32:光盘驱动讑֤(CDROMQ默认不止) 64:虚拟存储讑֤(RAMQ徏议禁止,默认不禁? 128:未指定的其他驱动?保留位,止Q默认禁? 三、autorun.inf文g分ؓ三大部分[AutoRun] [AutoRun.Alpha] [DeviceInstall]?br> [AutoRun]适用于Windows95以上pȝ?2位以上CD-ROMQ必选?br>[AutoRun.alpha]适用于基于RISC的计机光驱Q适用pȝ为Windows NT 4.0Q可选?br>[DeviceInstall]适用于Windows XP以上pȝQ可选?br> 四、[AutoRun]部分的命令及其详解?br> 1、DefaultIcon 含义Q?br>指定应用E序的默认图标?br>格式Q?br>DefalutIcon=图标路径名[,序号] 参数Q?br>图标文g名:应用E序的默认图标\径名Q格式可以ؓ.ico?bmp?exe?dll。当文g格式?exe?dllӞ有时需要用序h指定图标?br>序号Q当文g格式?exe?dllӞ文g可能包括多余一个图标,此时需要用序h指定图标Q需要注意的是,序号是从0开始的?br>备注Q?br>应用E序的默认图标将在windows explorer核心的驱动显C窗口中替代讑֤的默认图标来昄?br>图标路径名的默认目录是设备根目录?br> 2、Icon 含义Q?br>指定讑֤昄图标?br>格式Q?br>Icon=图标路径名[,序号] 参数Q?br>图标文g名:应用E序的默认图标\径名Q格式可以ؓ.ico?bmp?exe?dll。当文g格式?exe?dllӞ有时需要用序h指定图标?br>序号Q当文g格式?exe?dllӞ文g可能包括多余一个图标,此时需要用序h指定图标Q需要注意的是,序号是从0开始的?br>备注Q?br>讑֤昄图标在windows explorer核心的驱动显C窗口中替代讑֤的默认图标来昄?br>图标路径名的默认目录是设备根目录?br>当存在应用程序默认图?DefaultIcon)Ӟ本命令无效?br> 3、Label 含义Q?br>指定讑֤描述 格式Q?br>Label=描述 参数Q?br>描述QQ意文字,可以包括I格?br>备注Q?br>讑֤描述在windows explorer核心的驱动显C窗口中替代讑֤的默认描q\h来显C?br>在非windows explorer核心的驱动显C窗口中Q例如右击设备选择属性)昄的仍然是讑֤的卷标?br> 4、Open 含义Q?br>指定讑֤启用时运行之命o行?br>格式Q?br>Open=命o?br>(命o行:E序路径?[参数]) 参数Q?br>命o行:自动q行的命令行Q必L.exe?com?bat文gQ其他格式文件可以用start.exe打开或用ShellExecute命o?br>备注Q?br>命o行的起始目录是设备根目录和系l的QPath环境变量?br> 5、ShellExecute 含义Q?br>指定讑֤启用时执行文件。(操作pȝ支持未知Q?br>格式Q?br>ShellExecute=执行文g路径?[参数] 参数Q?br>执行文g路径名:讑֤启用时执行文件\径名。可以是L格式文g。系l会调用讄的程序执行此文g?br>参数Q参敎ͼҎ(gu)执行文g作调?br>备注Q?br>命o行的起始目录是设备根目录和系l的QPath环境变量?br> 6、Shell\关键字\Command 含义Q?br>定义讑֤右键菜单执行命o行?br>格式Q?br>Shell\关键字\Command=命o?br>(命o行:E序路径?[参数]) 参数Q?br>命o行:自动q行的命令行Q必L.exe?com?bat文gQ其他格式文件可以用start.exe打开?br>备注Q?br>命o行的起始目录是设备根目录和系l的QPath环境变量?br> 7、Shell\关键?br>含义Q?br>定义讑֤右键菜单文本?br>格式Q?br>Shell\关键?文本 参数Q?br>关键字:用以标记菜单Q可以用Q何字W表C,包括I格?br>文本Q在右键菜单中显C的文本。可以用Q何字W,不能存在I格?br>备注Q?br>在同一Autorun.inf文g中,不同右键菜单关键字不同,相同右键菜单关键字相同?br>右键菜单文本中可以?amp;讑֮加速键Q?amp;&输出一?amp;?br>Shell\关键字\Command命oShell\关键字两者缺一不可Q顺序无所谓?br>当不存在Open、ShellExecute与Shell命oӞ讑֤启用时运行第一个设备右键菜单指定命令?br> 8、Shell 含义Q?br>定义讑֤启用时运行之讑֤右键命o?br>格式Q?br>Shell=关键?br>参数Q?br>关键字:标记q的菜单关键?br>备注Q?br>Shell指定的关键字可以在AutoRun.inf文g的Q意部分?br>Open\ShellExecute\Shell命o后定义的优先U高?br> 四、[AutoRun.alpha]部分的命令简介?br> [AutoRun.alpha]部分的命令与[AutoRun]部分的命令相同,只不q在ZRISC的计机光驱中,[AutoRun.alpha]优先U高于[AutoRun] 五、[DeviceInstall]部分命o及其详解?br> DriverPath 含义Q?br>定义搜烦驱动E序目录?br>格式Q?br>DriverPath=驱动E序路径 参数Q?br>驱动E序路径Q驱动程序所在\径,包括其子路径?br>备注Q?br>Windows XP以上支持?br>仅CD-ROM支持 当系l监到一个新的设备时Q会提示用户L讑֤的驱动程序。当用户炚w此CD-ROMӞ当[DeviceInstall]部分存在Ӟpȝ会按?DriverPath所标记的\径出L驱动E序。未标记的\径系l将忽略查找。当[DeviceInstall]部分不存在时Q系l将q行完全查找?br>如果不希望系l在此CD-ROM中搜索驱动程序,只加一行[DeviceInstall]不加DriverPath命o卛_?
]]>linux端口映射 http://www.shnenglu.com/elva/archive/2007/09/20/32527.html叶子 叶子 Thu, 20 Sep 2007 02:30:00 GMT http://www.shnenglu.com/elva/archive/2007/09/20/32527.html http://www.shnenglu.com/elva/comments/32527.html http://www.shnenglu.com/elva/archive/2007/09/20/32527.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/32527.html http://www.shnenglu.com/elva/services/trackbacks/32527.html root@127.0.0.1 -L 5000:61.235.139.123:5000 输入机器的root密码 后台执行Qssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000 另: ssh -C -f -N -g -R remote_port:local:port user@remotehost 可以远端服务器一个端口remote_portl定到本地端口portQ其?C是进行数据压~,-f是后台操作,只有当提C用户名密码的时候才转向前台?N是不执行q端命oQ在只是端口转发时这条命令很有用处?g 是允许远端主接本地{发端口?R表明是将q端L端口映射到本地端口。如果是-LQ则是将本地端口映射到远端主机端口?br> 关于ssh端口转发的深入实?
2007-05-13 17:02
Thursday, 5. April 2007, 13:44:15
转自geminis@http://floss.zoomquiet.org/data/20070104103806/
ssh的三个强大的端口转发命oQ?br>
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -D listen_port user@Tunnel_Host
-f Fork into background after authentication.
后台认证用户/密码Q通常?Nq用Q不用登录到q程L?br>
-p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口?br>
-L port:host:hostport
本地机(客户?的某个端口{发到q端指定机器的指定端? 工作原理是这L, 本地机器上分配了一?socket 侦听 port 端口, 一旦这个端口上有了q接, 该连接就l过安全通道转发出去, 同时q程L?host ?hostport 端口建立q接. 可以在配|文件中指定端口的{? 只有 root 才能转发Ҏ(gu)端口. IPv6 地址用另一U格式说? port/host/hostport
-R port:host:hostport
远E主?服务?的某个端口{发到本地端指定机器的指定端口. 工作原理是这L, q程L上分配了一?socket 侦听 port 端口, 一旦这个端口上有了q接, 该连接就l过安全通道转向出去, 同时本地L?host ?hostport 端口建立q接. 可以在配|文件中指定端口的{? 只有?root dq程L才能转发Ҏ(gu)端口. IPv6 地址用另一U格式说? port/host/hostport
-D port
指定一个本地机?“动态的'’ 应用E序端口转发. 工作原理是这L, 本地机器上分配了一?socket 侦听 port 端口, 一旦这个端口上有了q接, 该连接就l过安全通道转发出去, Ҏ(gu)应用E序的协议可以判断出q程L和哪里q接. 目前支持 SOCKS4 协议, 充?SOCKS4 服务? 只有 root 才能转发Ҏ(gu)端口. 可以在配|文件中指定动态端口的转发.
-C Enable compression.
压羃数据传输?br>
-N Do not execute a shell or command.
不执行脚本或命oQ通常?fq用?br>
-g Allow remote hosts to connect to forwarded ports.
?L/-R/-D参数中,允许q程Lq接到徏立的转发的端口,如果不加q个参数Q只允许本地L建立q接。注Q这个参数我在实践中g始终不v作用Q参见III)
iptables实现端口转发的过E?/strong> 设我们有一台计机,有两块网?eth0q外|?ip?.2.3.4;eth1q内|?ip?92.168.0.1.现在需要把发往地址1.2.3.4?1端口的ip包{发到ip地址192.168.0.2?180端口,讄如下: 1. iptables -t nat -A PREROUTING -d 1.2.3.4 -p tcp -m tcp --dport 81 -j DNAT --to-destination192.168.0.2:8180 2. iptables -t nat -A POSTROUTING -s 192.168.0.0/255.255.0.0 -d 192.168.0.2 -p tcp -m tcp --dport 8180 -j SNAT --to-source 192.168.0.1 真实的传输过E如下所C? 假设某客h的ip地址?.7.8.9,它用本机的1080端口q接1.2.3.4?1端口,发出的ip包源地址?.7.8.9,源端口ؓ1080,目的地址?.2.3.4,目的端口?1. L1.2.3.4接收到这个包?Ҏ(gu)nat表的W一条规?该ip包的目的地址更该?92.168.0.2,目的端口更该?180,同时在连接跟t表中创Z个条?(可从/proc/net/ip_conntrack文g中看?,然后发送到路由模块,通过查\p,定该ip包应发送到eth1接口.在向eth1接口发送该ip包之?Ҏ(gu)nat表的W二条规?如果该ip包来自同一子网,则将该ip包的源地址更该?92.168.0.1,同时更新该连接跟t表中的相应条目,然后送到eth1接口发出. 此时q接跟踪表中有一? q接q入: src=6.7.8.9 dst=1.2.3.4 sport=1080 dport=81 q接q回: src=192.168.0.2 dst=6.7.8.9 sport=8180 dport=1080 是否使用: use=1 而从192.168.0.2发回的ip?源端口ؓ8180,目的地址?.7.8.9,目的端口?080,L1.2.3.4的TCP/IP栈接收到该ip包后,由核心查找连接跟t表中的q接q回栏目中是否有同样源和目的地址和端口的匚w?扑ֈ?Ҏ(gu)条目中的记录ip包的源地址?92.168.0.2更该?.2.3.4, 源端口由8180更该?1,保持目的端口?080不变.q样服务器的q回包就可以正确的返回发赯接的客户?通讯p样开? q有一? 在filter表中q应该允总eth0q接192.168.0.2地址?180端口: iptables -A INPUT -d 192.168.0.2 -p tcp -m tcp --dport 8180 -i eth0 -j ACCEPT
在网上搜索好多,对linux配置端口映射都不够详l,我在RedHat8.0上用iptables配置了端口映,讲述详细的配|过E,供大家参考?br>【实现功能?br> PC A?br> eth0 172.18.10.212 内网 eth1 219.239.xx.xx 外网
PC B?nbsp; 172.18.10.205 内网
A?080端口映射到B?0端口
【步骤?br>1?首先应该做的?etc/sysctl.conf配置文g?nbsp; net.ipv4.ip_forward = 1 默认? q样允许iptalbes FORWARD?br>2??etc/rc.d/init.d目录下有iptables 文gQ用格式如?br> Usage: ./iptables {start|stop|restart|condrestart|status|panic|save} 相当与service iptables {....} 把iptables 服务停止Q清除以前的规则Q存?br> ?etc/rc.d/init.d目录下,q行 ./iptables stop iptalbes -F iptalbes -X iptalbes -Z ./iptables save 3?重新配置规则 iptables -t nat -A PREROUTING -d 219.239.xx.xx -p tcp --dport 8080 -j DNAT --to-destination 172.18.10.205:80 iptables -t nat -A POSTROUTING -d 172.18.10.205 -p tcp --dport 80 -j SNAT --to 172.18.10.212 iptables -A FORWARD -o eth0 -d 172.18.10.205 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -s 172.18.10.205 -p tcp --sport 80 -j ACCEPT DNAT SNAT 的请参考帮助,q里不再陈述?br>4?新的规则存盘 ./iptables save 规则存盘后在/etc/sysconfig/iptablesq个文g里面Q若你对q个文g很熟(zhn)?br> 直接修改q里的内容也{于命o行方式输入规则?br>5?启动iptables 服务 ./iptables start ?proc/net/ip_conntrack文g里有包的向Q如下面 tcp 6 53 TIME_WAIT src=221.122.59.2 dst=219.239.xx.xx sport=7958 dport=8080 packets=9 bytes=1753 src=172.18.10.205 dst=172.18.10.212 sport=80 dport=7958 packets=9 bytes=5777 [ASSURED] use=1
]]> Jdk1.6+Tomcat6+Apache2+MySql5 安装(Windows? http://www.shnenglu.com/elva/archive/2007/09/13/32153.html叶子 叶子 Thu, 13 Sep 2007 10:21:00 GMT http://www.shnenglu.com/elva/archive/2007/09/13/32153.html http://www.shnenglu.com/elva/comments/32153.html http://www.shnenglu.com/elva/archive/2007/09/13/32153.html#Feedback 1 http://www.shnenglu.com/elva/comments/commentRss/32153.html http://www.shnenglu.com/elva/services/trackbacks/32153.html Jdk1.6+Tomcat6+Apache2+MySql5 安装(Windows?
软g下蝲Q?br>1, j2se jdk1.6 http://java.sun.com/javase/downloads/index.jsp
2, Tomcat 6http://archive.apache.org/dist/tomcat/tomcat-6/
3, Apache 2.2.4http://archive.apache.org/dist/httpd/
4, MySql5.0.27http://dev.mysql.com/downloads/mysql/
5, mysql-connector-java-5.0.5http://dev.mysql.com/downloads/connector/j/
6,mod_jk-apache-2.2.4.sohttp://tomcat.apache.org/download-connectors.cgi
可以Ҏ(gu)需要下载最新的或最E_的版本,如果部vU上环境可以用稳定的版本Q?br> 但是如果在学习和调试Q可以尝试新的版本,因ؓ事物是向前发展的?/p>
一般网늨序或服务Q如果不是非常巨大,用Tomcat做Web server可以了Q没有必要整合apache+tomcat?br> 当然如果实有必要,比如要把静态文?html,囄{?和Java文g分别由apache和tomcat来解析, 或者ؓ了学习、测试、以及还要运行php{等情况Q可以考虑整合下apache + tomcat?/p>
如果只需要JSP|页服务器的Q只要安装JDK+Tomcat可以了Q安装过E非常简单?/p>
http://jiarry.blogchina.com/
================================================================================
安装q程 本篇安装介绍下蝲文档:http://jarryli.googlepages.com/Jdk1.6Tomcat6Apache2MySql5Install.txt
Step 1 JDK安装 ---------------------------------------------------------------------------------- 1.1 点击jdk-6u1-windows-i586-p.exe文g安装JdkQ选择目录(假E:\jdk1.6)Q一路回车,安装完成 1.2 dJAVA环境变量(我的?sh)脑右?>属?>高->环境变量->pȝ变量) CLASSPATH 讄变量?nbsp; .;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/lib/dt.jar JAVA_HOME 讄变量?nbsp; E:/jdk1.6 PATH 讄变量?nbsp; .;%JAVA_HOME%;%JAVA_HOME%/bin; 1.3 在DOS命o行状态下试Java是否成功安装Q敲入java -version可以查看版本 c:\>java -version java version "1.6.0_01" Java(TM) SE Runtime Environment (build 1.6.0_01-b06) Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing) 1.4 试HelloWorldQ新Z个HelloWorld.java的文Ӟ内容如下 public class HelloWorld { public static void main(String arg[]) { System.out.println("Hello World!q是Java试E序Q说明你已成功安装了Java -- JarryQ?); } } 在命令行输入javac HelloWorld.javaQ编译一下,然后再执?strong>java HelloWorldQ就能看到正常的输出了?br> 出现错误一般是环境变量或大写{有问题Q仔l检查就没有问题了?nbsp;
Step 2 Tomcat安装 ---------------------------------------------------------------------------------- 2.1 点击apache-tomcat-6.0.10.exe文g安装TomcatQ选择目录(假E:\Tomcat6)安装完成?br> 2.2 dTOMCAT环境变量(我的?sh)脑右?>属?>高->环境变量->pȝ变量) TOMCAT_HOME 讄变量?nbsp; E:/Tomcat6 2.3 从程序菜单或是服务里启动TomcatQ然后你在浏览器输入http://localhost:8080/ 可以看到TomcatƢ迎面?br> 正常情况下都会成功,如果启动p|Q请查jakarta_service_日期.log日志Q通过它一般可以解决问题?br> 比如出现cM报错Q?br> [947 prunsrv.c] [error] Failed creating java 看一下系l盘windows/system32/下是否丢失msvcr71.dll文gQ如果缺失,需要从别的机器拯一个过来?/p>
打开览?q入http://localhost:8080/ Q当看见Tomcat猫的图标了Q这栯C安装成功?/p>
xQJSP服务器就搭徏完成了,用于学习和测试没有问题了Q如果想要更高的配|,可以往下面l箋看?/font>
Tomcat 6与Tomcat 5或者之前版本不一L是Q首|有显C具体的版本Q猫猫也变大了些?br> 没有admin理面了,admin在Tomcat 5.5来默认都没有了,不过可以下蝲admin包?br> 而Tomcat 6.0没有看见admin包,不过qƈ不要紧,一般情况下也不需要admin包?/p>
Tomcat 6.0默认也没有开启servlet、禁止目录浏览。这需要去conf/下配|web.xml文g?br> 修改listings为true卛_以目录浏览, <param-name>listings</param-name> <param-value>true</param-value> <!-- false disable listings --> <!-- <param-value>false</param-value>-->
开启servlet直接讉K功能Q把q两D|释打开?br> <servlet> <servlet-name>invoker</servlet-name> <servlet-class> org.apache.catalina.servlets.InvokerServlet </servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>invoker</servlet-name> <url-pattern>/servlet/*</url-pattern> </servlet-mapping> 2.4 部v一个新目testAppQ去conf/下配|server.xml <Context path="/testApp" reloadable="true" docBase="E:/testApp" workDir="E:\Tomcat6\webapps\testApp\work" /> docBase是你E序的目录,假设攑֜E根目录下 q样新项目testApp徏立了Q重启TomcatQ访?a >http://127.0.0.1:8080/testApp 可以看C的目录了
2.5 mysql-javaq接?br> 下蝲mysql javaq接器,可以Ҏ(gu)需要选择3.x 或是 5.xQ之前我们通用3.xQ现在可以试一?.x http://dev.mysql.com/downloads/connector/j/ 下载下来得 mysql-connector-java-5.0.5-bin.jar 文g攑ֈ Tomcat6\commom\lib目录?br> (Tomcat 6.0 修改了目录结构,原common/lib下的所有jar包现在统一到l(f)ib目录下, 因此你需要将你原来放|在common/lib目录下的jar改到l(f)ib目录下?
2.6 JDBC数据库连接池Q假讑ַl安装了mysql(没安装就先安?Qƈ且徏立了数据库test, 修改conf/下server.xml
<Context path="/testApp" docBase="E:/testApp" debug="5" reloadable="true" crossContext="true" workDir=""> <Resource name="jdbc/testApp" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8"/> </Context> 对应输入端口和用户名密码Q还要注?amp;要写?amp;amp; characterEncoding和useUnicode用来解决中文q问题Q地版本配置会略有不同?br> 另外Q在目文g?webapps/testApp/WEB-INF/下新建web.xml文gQ添加下面的内容 <web-app xmlns="http://java.sun.com/xml/ns/j2ee " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd " version="2.4"> <description>MySQL Test App</description> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/testApp</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app> 2.7 建立JDBCtest.jspQ可以来JDBCq接是否成功 <%@ page language="java" contentType="text/html; charset=GB2312" pageEncoding="GB2312" %> <%@ page import="java.sql.*"%> <%@ page import="javax.sql.*"%> <%@ page import="javax.naming.*"%> 数据库连接池试l果Q?br> <% out.println("JDBC驱动?lt;br>"); try { Class.forName("com.mysql.jdbc.Driver"); out.println("查成功!<br>"); } catch (ClassNotFoundException cnfe) { out.println("JDBC驱动创徏p|Q?lt;br>"); cnfe.printStackTrace(); } out.println("<br>环境命名I间?lt;br>"); try { &nbs; javax.naming.Context ctx = new javax.naming.InitialContext(); javax.naming.Context envContext = (javax.naming.Context) ctx.lookup("java:/comp/env"); out.println("查成功!<br>"); out.println("<br>查找数据?lt;br>"); // org.apache.commons.dbcp.BasicDataSource ds = // (org.apache.commons.dbcp.BasicDataSource) envContext.lookup("jdbc/testApp"); DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/testApp"); out.println("查找成功!<br>"); // 早期版本可以用BasicDataSource接收以获得比DataSource接口更具体的信息Q便于错误查?br> out.println("<br>查数据库<br>"); Connection conn = ds.getConnection(); DatabaseMetaData metaData = conn.getMetaData(); ResultSet rs = metaData.getCatalogs(); while (rs.next()) out.println(rs.getString(1) + "<br>"); rs.close(); } catch (javax.naming.NamingException e) { out.println("环境变量上下文创建失败!<br>"); e.printStackTrace(); } catch (SQLException e) { out.println("数据库操作执行失败!<br>"); e.printStackTrace(); } %> 2.7 servlet映射Q如果你不想通过/servlet/com.file.web.HelloWorld来访问你的程序,d映射是好Ҏ(gu), 修改目文g夹WEB-INFO/web.xml文gQ添?br> <servlet> <servlet-name>HelloWorld</servlet-name> <servlet-class>com.file.web.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping> q样可以通过/hello来访问servletE序?/p>
Setp 3 Apache安装 ----------------------------------------------------------------------------------
3.1 Apache 一路回车安装即?br> 敲入http://127.0.0.1/ p看见Ƣ迎界面?br> Ƣ迎界面?.0.x或?.x不一P你看见的是 It works!, 而不再是Q?zhn)能看见这个页面,说明?zhn)已l成功安装之cȝ?/p>
3.2 q接apache ?tomcatQ通过apache来解析静态文Ӟtomcat解析java实不错?br> 如果你打只用Tomcat做服务器的话Q那׃用安装apache了,实际上Tomcat作ؓ服务器也非常好?br> 当然了,整合apahce + tomcat 也不ȝQ主要是下蝲mod_jk.so文gQ和增加两个配置文g?br> 3.2.1 下蝲 mod_jk.so (http://mirrors.ibiblio.org/pub/mirrors/apache/tomcat/tomcat-connectors/ ) 参阅文章Q?http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html http://tomcat.apache.org/connectors-doc/reference/workers.html q里使用的是jk而不是jk2Q下载得到的是mod_jk-apache-2.2.4.so文gQ可以根据a(chn)pache版本来选择合适的?br> 下载文件copy至Apache的modules目录?br> 3.2.2 新徏workers.properties,便于理在apache2/conf下,加入下面内容 JkAutoAlias E:/Tomcat6/webapps #tomcatl对路径webapps目录 JkMount /*.jsp ajp13 JkMount /*/servlet/ ajp13 3.2.3 新徏mod_jk.conf文gQ也攑֜apache2/conf目录下,加入下面内容 # Load mod_jk module LoadModule jk_module modules/mod_jk-apache-2.2.4.so # Where to find workers.properties JkWorkersFile conf/workers.properties #对刚新徏的workers.properties文g # Where to put jk logs JkLogFile logs/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # JkOptions indicate to send SSL KEY SIZE, JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories # JkRequestLogFormat set the request format JkRequestLogFormat "%w %V %T" # Send servlet for context /examples to worker named ajp13 JkMount /servlet/* ajp13 # Send JSPs for context /examples to worker named ajp13 JkMount /*.jsp ajp13 JkMount /*.do ajp13 &nsp; # 增加testApp目录Q把改目录下所有文件全部交ltomcat处理Q?br> # JkMount /testApp/* ajp13 # 也可以根据需要来讑֮Q比如只把testApp/*.jsp交给tomcat处理 JkMount /testApp/*.jsp ajp13 3.2.4 修改conf/httpd.conf文gQ把mod_jk.conf文ginclude装蝲q来Q添加如? Include conf/mod_jk.conf #jarry add for contact to tomcat lapachedtestApp目录 #dtestApp Alias /testApp "e:/testApp" <Directory "e:/testApp"> Options Indexes MultiViews Options Indexes FollowSymLinks Includes ExecCGI AllowOverride None Order allow,deny Allow from all </Directory> 重启apacheQ?br> 通过http://172.18.101.17:8080/testApp/ ?a >http://172.18.101.17/testApp/ 都能讉KTomcat目Q说明整合成功?br> 也可以徏立一个jsp文g来测试,如果不用8080端口能直接解析,那说明整合成功?nbsp; 如果出现问题注意查看Qapache/logs/下的log文gQ仔l对照,一般就能解军_?nbsp;
Setp 4 MySql安装 ----------------------------------------------------------------------------------
MySql与Apache一P一路回车即可?br> MySql5.x ?4.x 安装区别不大Q?.x会提C配|Mysql一些属性,诸如语言啦。根据需要设定即可?br> 启动通过mysql/bin下键?mysql -uroot -p或者从菜单栏MySQL Command Line Clientq入到命令行?br> 4.1 从程序菜单找到mysql命o行或在mysql/bin目录下,执行mysql -uroot -p密码可以进入mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 42 to server version: 5.0.27-community-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> 4.2 敲入 \s 可以查看MySql版本信息 mysql> \s -------------- E:\MySQL5\bin\mysql.exe Ver 14.12 Distrib 5.0.27, for Win32 (ia32) Connection id: 42 Current database: Current user: root@localhost SSL: Not in use Using delimiter: ; Server version: 5.0.27-community-nt Protocol version: 10 Connection: localhost via TCP/IP Server characterset: gbk Db characterset: gbk Client characterset: gbk Conn. characterset: gbk TCP port: 3306 Uptime: 2 days 4 hours 52 min 9 sec Threads: 2 Questions: 382 Slow queries: 0 Opens: 28 Flush tables: 1 Open ta bles: 0 Queries per second avg: 0.002 ================================================================================
ȝ说来Q安装新版与老版本差不多Q只是一时兼Ҏ(gu)不是太好?br>不过用来开发和学习Q用新版还是挺不错的,可以学到新的Ҏ(gu)和东西,新版本整合更Ҏ(gu)?br>而如果部|对外的服务Q还是采用经典或是成熟的版本吧?) 安装q程要多看apache官方|站的文档,http://tomcat.apache.org/tomcat-6.0-doc/ 通过文档可以详l了解安装步骤了Q出错了也好查,版本不同配置{难免会有一点不同,q是看官Ҏ(gu)档就很重要了?/p>
参考资料:安装Jdk+Tomcat+Apache+PHP+MySql (Windows) 详细介绍 http://jiarry.bokee.com/2375369.html 安装Jdk+Tomcat+Apache+PHP+MySql (Linux) 详细介绍 http://jiarry.bokee.com/2425368.html 下蝲文档Q?br>http://jarryli.googlepages.com/Jdk1.6Tomcat6Apache2MySql5Install.txt
补充一下之前的一些记录: 配置a(chn)pache与php与tomcatQ让apache支持php与jsp,servletQ这样强壮的apache做ؓweb serverQ专门来q行强大的网站,所以文件放到E:\Apache2\htdocs下即可。当然tomcatq是可以当独用的Q只不过用来开发或试q是不错的,如果作ؓ|站来发布还是用apacheq种方式好。这下,apache才发挥出功效来。呵c?br> 下蝲q正装apache好j(lu)dk、tomcatQ开始整合apahce+tomcat 修改apache/conf/下的httpd.conf文gd如下内容Q以支持jsp与php
1Q拷贝mod_jk_2.0.46.dll文g到E:\Apache2\modules目录?br>2Q修改http.conf文gQ添加如下jk模块内容 LoadModule jk_module modules/mod_jk_2.0.46.dll # 或?so文g #装蝲mod_jk模块Q用于处理Apache和Tomcat的连?br>JkWorkersFile "E:/Apache/conf/workers.properties" #指出mod_jk模块工作所需要的工作文gworkers.properties的位|?br>JkMount /servlet/* ajp13 JkMount /*.jsp ajp13 #所有servlet 和jsph通过Ajp13的协议送给TomcatQ让Tomcat来处?br>JkLogFile "E:/Apache/logs/mod_jk2.log" JkLogLevel info
3Q支持phpQ根据目录修Ҏ(gu)件?br>#jarry added for php ScriptAlias /php/ "E:/php/" AddType application/x-httpd-php .php Action application/x-httpd-php "/php/php-cgi.exe" AddType application/x-httpd-php .php .phtml .php3 .php4 AddType application/x-httpd-php-source .phps
4Q将以下内容存成workers.properties文g至apache/conf下?br># Created by JarryLi # Copyright all reserved! # Email:jiarry@hotmail.com
# Ҏ(gu)现行安装目录做修?br>workers.tomcat_home=E:\Tomcat5 #让mod_jk模块知道Tomcat workers.java_home=E:\j2sdk1.4 #让mod_jk模块知道j2sdk ps=\ worker.list=ajp13 #模块版本,现有ajp14?不要修改 worker.ajp13.port=8009 #工作端口,若没占用则不用修?br>worker.ajp13.host=localhost #本机,若上面的ApacheL不ؓlocalhost,作相应修?br>worker.ajp13.type=ajp13 #cd worker.ajp13.lbfactor=1 #代理?不用修改 5Q访问a(chn)pache下的一个目录,试试讉Kphp文g和jspQ如果均能访问表C正。如有问题,请仔l检查log文gQ一般都能解冟?br> 或?br>
1、exe安装 2、选择目录 3、修改http.conf文gQ增加目?br>4、开启目录浏览,其他index文g览{功?br>5、添加php
# 加蝲tomcat支持 added by jarry # LoadModule jk2_module modules/mod_jk2.so
# For PHP 5 do something like this: # LoadModule php5_module "E:/PHP/php5apache2.dll" # AddType application/x-httpd-php .php .php3 .phps # configure the path to php.ini # PHPIniDir "E:/php"
# dphp #修改己安装目录下的php*.exe?added by jarry ScriptAlias /php/ "E:/PHP/" Action application/x-httpd-php "/php/php-cgi.exe" #Action application/x-httpd-php "/php/php.exe" AddType application/x-httpd-php .php .phtml .php3 AddType application/x-httpd-php-source .phps
6、整合apache+tomcat
[Sat Jun 23 20:01:23 2007] [error] [client 127.0.0.1] client denied by server configuration: E:/PHP/php-cgi.exe, referer: http://127.0.0.1/phpApp/ <Directory /> Options FollowSymLinks AllowOverride None # Order deny,allow # Deny from all Order allow,deny Allow from all Satisfy all </Directory>
把配|文件改改,是apache 2.2.2的配|文仉题?/p>
7、php.ini可以攑֜windows或者php根目录下
8、添加虚拟目?br>Alias /ut "E:/ut" <Directory "E:/ut"> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory>
10、整合apache2.2.2 + tomcat 5.5.16 mod_jk-apache-2.x.x.so
10.1 下蝲 mod_jk-apache-2.2.4.soQ把so文g攑ֈapahce modules文g夹下http://mirrors.ibiblio.org/pub/mirrors/apache/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.23/
10.2 apahce/con/下新?workers.properties 文g d内容 workers.tomcat_home=E:/Tomcat5.5 #让mod_jk模块知道Tomcat的位|?br>workers.java_home=E:/Jdk1.5 #让mod_jk模块知道jre的位|?br>ps=\ worker.list=ajp13 #模块版本 worker.ajp13.port=8009 #工作端口,若没占用则不用修?br>worker.ajp13.host=localhost #本机,若上面的ApacheL不ؓlocalhost,作相应修?br>worker.ajp13.type=ajp13 #cd worker.ajp13.lbfactor=1 #代理?不用修改
或者是
JkAutoAlias E:/Tomcat5.5/webapps #tomcat的绝对\径webapps目录 JkMount /*.jsp ajp13 JkMount /*/servlet/ ajp13
10.3 修改apahce/con/httpd.confQ在末尾d, 或者把q些攑օ到新建mod_jk.conf文g里,在通过httpd.conf装蝲q来(Include conf/mod_jk.conf)?/p>
LoadModule jk_module modules/mod_jk-apache-2.2.4.so #此处mod_jk的文件ؓ你下载的文g JkWorkersFile "E:/Apache2/conf/workers.properties" #指定tomcat监听配置文g地址 JkLogFile "E:/Apache2/conf/mod_jk.log" # 记录日志的工作?br>JkLogLevel info # 所有servlet 和jsph通过Ajp13的协议送给TomcatQ让Tomcat来处?br>JkMount /*/servlet/* ajp13 JkMount /servlet/* ajp13 JkMount /*.jsp ajp13
10.4 在testApp目录下分别徏立php,jsp,serlvet文g试Q如果都能解析说明成功?br> 另附Q?br>Tomcat6在JDK1.6下不能启?br>以及Tomcat5在JDK1.6下不能启动的解决Q?br>
Tomcat6在JDK1.6下不能启动的解决[转]
今天在一台新的机器上, 装开发环? 下蝲了新的JDK1.6和Tomcat6. 安装完毕? Tomcat无法正常启动, 在Tomcat的Logs中发现有以下错误: javajni.c] [error] The specified module could not be found. 到底是怎么回事? 因ؓ是模块加载的问题, 所以拿Zsysteminternals下蝲的FileMon来监到底是哪个东西加蝲p|? 启动FileMon, 然后, 试启动Tomcat, l果当然是失败了. 然后在FileMon中过滤一? 很快找C一个错? MSVCR71.dll, q个动态链接库加蝲p|. l过搜烦后发现在JDK的bin目录下有q个文g. 其复制到system32目录? 然后再启动Tomcat, 果然成功? q个问题可能和jakarta_servic加蝲动态链接库的LOAD_WITH_ALTERED_PATH选项有关.
]]>ssh配置权威指南 http://www.shnenglu.com/elva/archive/2007/09/06/31679.html叶子 叶子 Thu, 06 Sep 2007 02:48:00 GMT http://www.shnenglu.com/elva/archive/2007/09/06/31679.html http://www.shnenglu.com/elva/comments/31679.html http://www.shnenglu.com/elva/archive/2007/09/06/31679.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/31679.html http://www.shnenglu.com/elva/services/trackbacks/31679.html ssh(secure shell)是一U通用Q功能强大的Z软g的网l安全解x案,计算机每ơ向|络 发送数据时QSSH都会自动对其q行加密。数据到辄的地ӞSSH自动对加密数据进?br>解密。整个过E都是透明的。它使用了现代的安全加密法Q以胜d型公司的dJ重 的应用程序的要求?br> SSH协议内容涉及认证AUTHENTICATION,加密ENCRYPTION,和网l上传输数据的完?br>性INTEGRITY?br> SSHҎ(gu)概q?br>1、远E登?br>$ ssh -l root host.example.com 2、安全文件传?br>$ scp myfile metoo@secondacount.com 3、安全执行远E命令,能确保传输的数据安全?br>4、密钥和代理 Z密钥的认证方法不用记住多个帐号密码?br>5、访问控Ӟ能授权别问自已帐受?br>6、端口{?br>$ ssh -L 3002:localhost:119 xxx.xxx.com 相关安全技?br>rsh命o族,rsh,rlogin and rcp。连接不加密Q认证模型十分脆弱?br>PGP加密E序。它是基于文件的?br>Kerberos认证pȝQ用于网l可能被监视Q而且计算Z是中心控制的环境。基于麻省理?br>学院的Athena目。它SSH不是QSSH是轻量的,Ҏ(gu)部v。Kerberos使用前必L?br>一些重要基?br>IPSECQInternet安全协议?br>SRPQ安全远E密码协议,是Stanford大学开发的。是一U专用的认证协议?br>SSL,安全套接字?br>stunnelQ是一USSL工具Q它为UNIX环境现有的基于TCP的服务(POP,IMAP{)增加 SSL保护Q而不用修Ҏ(gu)务器源程序?br> W二?SSH客户端的基本用法 最常用功能Q?、经由安全连接登录到q程计算机?、通过安全q接在计机间拷贝文件?br> 当你W一ơ连接SSH服务器时Q出现问{时要回{?#8220;yes”Q把已知名主机的密钥的公共部 分拷贝一份存在本地。之后你每次q接q台服务器,qq个公钥来验证远E主机。最好是 能在首次q接前就能获得这个公钥,否则W一ơ连接服务器时你可能已受C间hd?br> 使用密钥q行认证QSSH支持公钥认证Q可以用加密密钥,密钥比密码更安全?br>SSH证书使用一对密钥,一个私钥,一个公钥,U钥只保存你独有的一些秘密信息。SSH 用其向服务器证明自已的n份。公钥是公开的,可以随便其攑օSSH服务器上自已的帐 号中,在认证时Q进行私钥和公钥协商Q如果匹配,那么w䆾得以证明,认证成功?br> 在用公钥认证以前,首先要进行一些设|: 1、需要一对密钥,q需要用一个口令来保护自已的私钥?br>使用ssh-keygenE序生成一对密钥。如果不存在SSH目录Q程序ؓ自动创徏本地SSH目录 ~/.sshQƈ所生成的密钥分成两个文件存储,公有部䆾identity.pub,U有部分identityQ或 id_dsa_1024_a,id_dsa_1024_a.pub(ssh2)?br>2、需要在SSH服务器上安装自已的公钥?br>通过配置SSH目录中的一个文件实玎ͼ对于SSH1 AND OPENSSH来说该文件是 ~/.ssh/authorized_keys。对SSH2来说是~/.ssh2/authorization。OPENSSH中的SSH-2q接?br>3.0版本起也一同用authorized_keys文g?.0版本前的使用authorized_keys2。把用户?br>地机器生成identity.pub文g内容加入其中。对SSH2来说Q用户需~辑两个文gQ一个客 L一个在服务器端Q?br>在客LQ要创徏或编辑文件~/.ssh2/identificationq在其中插入一行,说明自已的私钥文?br>名: IdKey id_dsa_1024_a. 在服务器端,要创建或~辑文g~/.ssh2/authorizationQ该文g包含有公钥信息,每行一个, 但和SSH1的authorized_keys文g不同Qauthorized_keys中包含有公钥的拷贝)Qauthorization 中只l出公钥文g名:Key id_dsa_1024_a.pub。最后,把这个文件从本地机器上拷贝到服务 器~/.ssh2中。ؓ安全赯Q要保ssh目录的安全,只有所有者才有权写入。如果远E用?br>的SSH配置文g的权限设|不当,服务器可能会拒绝q行认证?br> 公钥认证比密码认证更安全Q因为: 1?公钥认证需要两个加密部份(盘上的identify文g和用户头脑中的口令)Q入侵都必须 2?具备两种条g才行。密码认证只需要一个部份,那就是密码,它可能更Ҏ(gu)被窃取?br>3?在公钥认证中Q口令和密钥都不用发l远E主机,只要把前面讨论的认证者发l远E主 4?机就可以了,因此Qƈ没有U密信息传出客户端?br>3、机器生成的密钥是不可能猜测出来的,而h生成的密码容易受到字典攻凅R?br>通过用密码认证q只允许使用密钥认证能极大提高主机的安全性?br> 如果要修改密?br>如果已经生成一个密钥对Qƈ把公钥拷贝到多个SSH服务器上了,用户有一天决定修改自 已的w䆾Q因为再q行ssh-keygen。这P׃覆盖identify and identify.pub文gQ用户之 前的公钥没用了Q必L新公钥再ơ拷贝到各个服务器上。这是很头疼的,所以徏议: 1?不能局限于仅仅使用一个密钥对Q可随意生一此密钥对Q将其保存在不同的文件中Qƈ 2?其用作不同的用途?br>3?如果只是想修改口令,׃必重新生成一个密钥对Qssh-keygen有一个命令行选项可以 4?替换现有的密钥口令。ssh1 and openssh?p,对于ssh2?e。这P因ؓU钥没变Q所?br>5?公钥依然不效Q中需使用新口令对U钥q行解密可以了?br> ssh代理 它可以把U钥保存在内存中Qؓ认证提供服务Q不用重复输入密码。直到用户退Zؓ止。代 理程序是ssh-agent。可手工q行也可~辑~/.login 或~/.xsession来自动运行?br>$ ssh-agent $SHELL 其中SHELL是用L录shell的环境变量。运行该命o后,打开另外 一个shellQ在q个shell中可以访问代理?br>接着用ssh-add命o装入U钥。这P使用ssh and scp命o׃用再提醒输入口o了。口?br>装入内存中。如果用hq行x windowpȝQƈ讄了DISPLAY环境变量Q而标准输?br>不是l端Q那么ssh-add׃用一个图形化XE序ssh-askpass来读取口令。要强制ssh-add 使用X来读取口令,请在命o行中输入ssh-add < /dev/null?br>-l 参数昄内存中的密钥 -d 参数从代理中删除密钥 $ ssh-add -d ~/.ssh/id_xxx.pub -D 是删除所有密?br>-t 对加载的密钥讄时旉Q超时代理将自动卸蝲密钥?br>-L -U 对代理进行加锁和解锁Q当你离开计算不想退出登录时有用?br> 代理转发 可能通过代理转发功能Q可以用SCP把文件从q程SSH服务器上拯到第三方SSHL上?br>条g是你在第三方SSHL上必L一个帐受具体操作是q样的: 1?在本CZq行命oQ? scp pat@shell.isp.com:print-me 2?psmith@other.host.net:other-print-me 2、这个scpq程与本C理进行联p,q让用户和shell.isp.comq行认证?br>3、自动在shell.isp.com上执行第二个scpQ用来把文g拯到other.host.netL上?br>3?׃启用了代理{发(SSH1 AND SSH2默认是打开的,openssh默认是关闭的Q,因此 4?shell.isp.com上的SSH服务器就充当一个代理?br>5、第二个scpq程通过联系shell.isp.com上的代理试图让用户和other.host.netq行认证?br>5?shell.isp.net上ssh服务器秘密与用户的本C理进行通信Q从而构建出一个认证者来?br>6?供用L证书q将其传回服务器?br>7、服务器为第二个scpq程验证用户的n份,other.host.net上的认证获得成功?br>8、开始拷贝文件?br>׃代理转发不会把私钥发送到q程L上,而是把认证返回第一台机q行处理Q因此密?br>是安全的?br> 不用密码或口令进行连接方?br>1、用代理的公钥认证?br>2、可信主证?br>3、Kerberos认证?br>在后文中会讨论q些方式的优~点?br> sftp 它是在SSH上的一个独立文件传输工P操作与ftpcMQ可以在一个会话中调用多个命o q行文g拯和处理,而scp每次调用旉要打开一个会话。sftp不区分ascii and binary?br>输模式,只用二q制模式Q因此,如果使用它在windows and unix之间拯ascii文gQ?br>那么׃能正{换行l束W?br> W三?SSH内幕 SSH协议的主要特性和优点Q?br>1?使用强加密技术来保证数据的私密性。端到端通信用随机密钥进行加密,随机密钥Z 话进行安全协商,会话l束后被丢弃。支持的法有ARCFOUR,Blowfish,DES,IDEA,3DES{?br>2、通信完整性,保通信不会被修攏VSSH-2ZMD5 AND SHA-1的加密hash法?br>3、认证,卛_送者和接收者的w䆾证明。客h和服务器双向认证?br>4、授权,卛_账号q行讉K控制?br>5、用{发或隧道技术对其它Ztcp/ip的会话进行加密。支持三U{发,tcp端口转发Q?br>X转发Q代理{发?br> SSH可以防止的攻?br>1、网l窃听,SSH通信是加密的Q即使截获会话内容,也不能将其解密?br>2、名字服务和IP伪装QSSH通过加密验证服务器主n份可避免q类风险?br>3、连接劫持,SSH的完整性检负责确定会话在传输q程是否被修改,如果被修改过Q就 关闭q接?br>4?中间人攻击,SSH利用两种Ҏ(gu)防止q种dQ第一U是服务器主证。除非攻击?br>已经成功d了服务器LQ获得服务器的私有主机密钥。第二种是限制用容易受?br>q种d的认证方法,密码认证Ҏ(gu)受到中间人攻击,而公钥和ZL?RhostsRSA 则对中间人攻d以免疫?br>5、插入攻击,q种d可以客户和服务器之间发送的正文数据之间插入Q意数据。ssh1 1.2.25后和openssh的所有版本都专门q行了设计,来检ƈ防止q种d。这U检程?br>增大了插入攻ȝ隑ֺQ但是ƈ不能完全防止。ssh2使用强加密完整性检手D|防止q个 问题。可以用3DES法来防止这U攻凅R?br> SSH不能防止的攻?br>1?密码崩溃Q密码认证是一U脆q认证形式Q尽量用公钥认证方式。如果必要密码 认证Q可考虑使用S/Key之类的一ơ性密码机制?br>2?IP AND TCPdQ由于SSH是在TCP之上q行操作的,因此Ҏ(gu)受到针对TCP和IP ~陷而发Ld。SYN flood,TCP不同步和TCP劫持{。只能通过更低层的防护措施 来保护?br>3、流量分析?br>4、隐U通道?br>5、粗心大意。安全是一个过E,而不是一个品,不要认ؓ装上SSH安全了?br> W四?SSH的安装和~译旉|?br> W五?服务器范围的配置 sshd可以在三个层ơ上q行配置Q第一层次是上面的安装和编译时配置Q第二层ơ是本章?br>服务器范围配|;W三层次是每账号配置Q第八章Q,前者是服务器编译时指定了包含?br>些特定功能,不包含哪些功能,后者则是由l端用户来修改自已̎h使用的服务器的行为?br> 以普通用戯n份运行SSH服务?br>1、得到管理员许可?br>2、生成一个主机密钥?br>$ ssh-keygen -N '' -b 1024 -f ~/myserver/hostkey 生成hostkey and hostkey.pub两个文g 3、选择端口受?要选择大于或等1024的端口,因ؓ只有用户才有权用小?br>1024的端??br>4、创建服务器配置文g(可? 可创已的配置文gQ否则,服务׃用内建的Ҏ(gu)或?br>用服务器范围的配|文件?br>启动服务器方式:$ sshd -h ~/myserver/hostkey -p 2345 -f ~/myserver/config 由普通用戯行的服务器有一些缺点: 1、由于不是由root的uid下运行,因此只能q接到用戯已的账号上?br>2、它需手工调用Q不能自启动?br>3?日志用户没权看到Q因为服务器把它写到syslog日志pȝ中,但可用调试模式运行服?br>4?器,q样信息显C在l端Z?br> 服务器配|文?br>SSH1 AND OPENSSH的配|文仉常?etc/sshd_config,而SSH2的配|文仉常?br>/etc/ssh2/sshd2_config?br> 以非~省的配|文件来调用sshdQ可以用命?-f 选项? sshd -f /usr/local/ssh/my_config?br> ?号作为标L语名都会被sshd忽略?br> 修改完配|后Q修改不会马上媄响到服务器,可重启服务器或发送SIGHUP信号? kill -HUP `cat /etc/sshd.pid` 如果在命令行改动了配|,用SIGHUP信号重启服务器不能覆盖命令行的配|,它的优先 U高?br> L密钥QsshdL密钥向SSH客户端唯一地标识SSH服务器。主机密钥保存在一Ҏ(gu)?br>中,一个文件包含私钥,一个文件包含公钥。对于SSH1 AND OPENSSHQ它?br>/etc/ssh_host_key。文件位|可用HostKey关键字修?HostKey /usr/local/ssh/key。服务器?br>公钥保存?pub文g中?br>OPENSSH服务器有一个SSH-2的主机密钥,~省是在/etc/ssh_host_dsa_key。其位置可用 HostDsaKey /usr/local/openssh/key2修改?br> 对于SSH2Q如果服务器是由用户q行Q缺省私钥文件是/etc/ssh2/hostkey。如果是其它 用户q行Q则在~/.ssh2/hostkey。可用HostKeyFile /etc/local/ssh/key修改。公钥是hostkey.pub 文gQ可用publicHostKeyFile关键字修攏V?br> 可以用命令行选项指定U钥文gQ? sshd -h /usr/local/ssh/key?br> 随机数种子文?br>如果用户的系l中有一个随Z源,?dev/urandomQ那么OPENSSH׃能创建随机数U?br>子文件?br> 服务器配|文?br>通常?etc/sshd_config /etc/ssh2/ssh2_configQ可以用-f 选项重新指定光|文件。可用于一 台机器运行多个sshd的情c?br> 每̎可证文件。~/.ssh/authorized_keys ? 文g权限 ׃配置文g的权限设|错误,会降低系l的安全性,所以可以设|StrictModes YES/NO 关键字,对sshd的重要文件和目录的权限进行检查,如果查失败,服务器就拒绝对该?br>LSSHq接?br> 在多宿主L上,使用ListenAddress xxx.xxx.xxx.xxx来限制SSH只监听一个网l接口?br> I闲q接旉QIdleTimeout xx 如果?代表什么都不做Q保持连接。否则,时断开q?br>接,可以用s,m,h,d,w表示?br> KeepAlive YES/NO 可以断开失效的连接,比如客户端崩溃?br> p|的登?br>LogingGraceTime 60 限定用户必须?0U内成功q行认证?0D用。命令行选项? -g PasswordGuesses 5 如果q接h使用密码认证Q那么sshd2只允许客户端尝试五ơ?br>QSSH2) 限制q发q接 MaxConnections 32 最?2个连接(SSH2Q?br> 逆向IP映射 SSH2服务器可以根据客L地址q行逆向DNS查询Q以保客户端的地址是q个地址?br>如果查失败,q接拒绝?br>RequireReverseMapping yes (ssh2) 转发 AllowTcp-Forwarding yes X11Forwarding yes 服务器密钥生?br>该密钥用来对客户?服务器之间的通信q行保护。是临时的,永远不会保存在磁盘上。服 务器在启动时生成q个密钥。ƈ以固定的周期重新生成。缺省长度是768位,最ؓ512Q?br>可以ServerKeyBits 2048 指定长度。用KeyRegenerationInterval 1200指定周期?命o行?br>:-k 加密法 Ciphers any 允许所有支持算法。其它算法包?br>3des-cbc,blowfish-cbc,twofish-cbc,arcfour,none mac法 MAC关键字可以让用户选择sshd2q行完整性检所使用的算法,UCؓ消息认证代码。用 于sshd2的有hmac-sha1,hmac-md5,hmac-md5-96?br> 在OPENSSH中,用户可以用Protocol关键字选择支持SSH-1 AND SSH-2,1 代表SSH-1,2 ?br>表SSH-2, 1Q? 代表都支持?br> 允许用户dQ认证和讉K控制 1、认证负责对发vq接h的用Lw䆾q行验证?br>密码认证 PasswordAuthentication yes AllowedAuthentications password (ssh2) 公钥认证 RSAAuthentication yes (ssh1,openssh/1) AllowedAuthentications publickey (ssh2) DEAAuthentication yes (openssh/2) Rhosts认证Q可信主证通过查远E主机名和相关用户名来实现对客户端的w䆾认证?br>RhostsAuthentication yes (ssh1,openssh) IgnoreRhosts yes (ssh1,ssh2,openssh)不用系l的hosts.equiv and ~/.rhostsQ用SSH专用 ?etc/shosts.equiv and ~/.shosts 强可信主证?br>RhostsRSAAuthentication yes ssh1,openssh AllowedAuthentications hostbased ssh2 提取已知名主机的公钥 UserKnownHosts no ssh2 IgnoreUserKnownHosts yes openssh PGP认证 Kerberos认证 S/key认证 SecurID认证 PAM认证 2、访问控制负责允许或止来自特定用户、机器在或INTERNET域的SSHq接到服务器 上?br>通常Q只要设|正,M账号都可以接收SSHq接Q这U访问权限可以用服务器关键 字AllowUsers and DenyUsers覆盖?br>AllowUsers smith 如果配置文g中单独出C个AllowUsers,后面没有M内容Q就表示止所有没提到的用 戯接,如果没有AllowUsersq个关键字,则所有用户都可连接。DenyUsers表示止q接?br>可用通配W, 可以用组讉K控制AllowGroups DenyGroups L名访问控?br>AllowHosts hostname DenyHosts hostname 用户的访问控?br>sshd对超U用户专门用一U特D的讉K机制QPermiRootLogin来允许或止使用SSH?br>讉Kroot账号?br> 昄用户的欢q信?br>PrintMotd yes/no default is yes 昄邮g信息 CheckMail yes/no default is yes I密?br>PermitEmptyPasswords yes/no 如果使用密码认证Qƈ且有个̎h有设定密码,那么服务 器就可以拒绝讉Kq个账号如果pȝ中存?etc/nologinQ那么sshd只允许root用户dQ其它都不能d?/span>因此Qtouch /etc/nologin是把讉K权只授给pȝ理员的一U快速方法。这样ƈ不需要重新配|ssh。也 不需要重启ssh?br> 子系l?br>定义和调用远E命令的一个抽象层Q用户可以通过在客L命o行中l出命o来调用远E命 令,如:ssh server.examply.com /bin/tar c /home q个命o调用tar,q程?home拯到磁带上?br>子系l是服务器机器上预定义的一l远E命令,q样可以方便地执行。在服务器配|文?br>中定义:subsystem backups /bin/tar c /homeQ要在服务器上运行该命oQ可以?-s 选项?br>ssh -s backups server.example.com。缺省情况下Qsshd_config中定义了一个子pȝ,subsystem sftp 。不要删除这个子pȝQ这是scp2和sftp必须的?br> 日志 Fascisl Logging mode 把调试信息打印到pȝ日志文g中,可以使用FascistLogging关键?br>启用?br>调试模式 可以使用-d命o选项启用 安静模式 只能输出严重错误Q而不能输?普通日志,可以使用QuietMode关键字或-q 命o行启用?br>openssh中的日志配置关键字是SyslogFacility and LogLevel。SyslogFacility讄syslog?br>facilityQKERN,DAEMON,USER,AUTH,MAIL{)QLogLevel记录日志提供的详l程度,?br>g低到高顺序是QQUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,使用DEBUG会R犯用 L隐私权,q个U别只能用于诊断Q而不能用于普通操作?br> W六?密钥理与代?br>一个n份标识由两部份组成,分别UCؓU钥QPrivate KeyQ和公钥QPublic KeyQ,合称一?br>密钥寏V?br> SSH1,SSH2 AND OPENSSHw䆾标识文g的格式各不相同?br>SSH1~省讄中,U钥存储在文件identity中,公钥存储在文件identity.pub中。这个密?br>对存攑֜~/.ssh目录下,在用前Q把公钥拯到服务器上的一个认证文仉Q如SSH1 AND OPENSSH中的~/.ssh/authorized_keysQ此后,当客戯求连接到你的服务器上的帐hQ就 会用一个私钥作明n份的标识Q服务器则在authorized_keys文g中寻找与之匹配的?br>钥?br> SSH2密钥Ҏ(gu)件的命名通常是根据该密钥使用的加密算法的性质来v的,例如一个用DSA 加密?024位密钥生成时其缺省文件名是id_dsa_1024_a and id_dsa_1024_a.pub。用户必?br>把私钥放在identification文g中,~省是~/.ssh2/目录Q一个私钥在q个文g中占一行,在公 钥认证中Q每一行的开头都有一个关键字IdKeyQ后跟一个私钥文件名。如Q?br>IdKey id_dsa_1024_a IdKey my-other-ssh2-key 在服务器端的认证文g~/.ssh2/authorization中,SSH2不包含公钥的实际拯Q只是把公钥 文g列出来,前面用关键字kEY标识。如Q?br>Key id_dsa_1024_a.pub Key something-else.pub q样l护h更容易,更方ѝ?br> OPENSSH对SSH-1q接使用的标识和授权文g与SSH1完全相同Q对于SSH-2q接Q缺?br>的密钥则存储在~/.ssh/id_dsa(private key)和~/.ssh/id_dsa.pub(public key)中,服务器上的授?br>文g是~/.ssh/authorized_keys?br> 创徏w䆾标识用ssh-keygen命o?br> OPENSSH的ssh-keygen可以支持SSH1中相应程序的所有功能和选项Q它q新增了为SSH-2 q接生成DSA密钥的能力?br>$ ssh-keygen -t dsa -b 1024 -e -x 选项可把OPENSSH格式的密钥存储格式{换成SSH2格式 (直接回RQ按提示输入?br>换文件名) -i -X 选项把SSH2格式的密钥{换成OPENSSH格式。这样可用SSH2客户端连?br>OPENSSH服务器?直接回RQ按提示输入转换文g? -y 如果不小心删掉了OPENSSH的公钥,可用-y恢复?br>-l 可计出公钥的指U,指纹是鉴别位|不同的两个密钥是否相同的常用的一U密码学技 术。这Ҏ(gu)术用于不可能逐位Ҏ(gu)两个密钥的情cOPENSSH AND SSH2都能计算指纹?br>它是Ҏ(gu)密钥计算出来一个长度较短的|它是原理与校验和cMQ用于验证一串信息(?br>我们的例子中是密钥)的不可替换性?br> 启动代理 1、单shell方式Q用当前登录的shell. $ eval `ssh-agent` 2、子shell方式Q派生出一个子shellQƈl承父shell的某些环境变量?$ ssh-agent $SHELL 不要惛_然运?$ ssh-agentQ这样客L是无法有代理联系的。删除代理用kill命o可?br>了?br> SSH-1 ?SSH-2代理的兼Ҏ(gu)?br>SSH-1的代理不能处理SSH-2的代理,SSH-2的代理却可以处理SSH-1的代理请求?br> W七?客户端的高用法 $ ssh -a -p 220 -c blowfish -l sally -i myself server.example.com 可通过配置文g化命?br>输入 Host myserver ForwardAgent no Port 220 Cipher blowfish User sally IdentifyFile myself HostName server.example.com 配置了该文g后,可以在客户端简单地输入 $ ssh myserver 全局文g和本地文?br>全局文g通常是由理员创建的Q用来维护整台计机上的客户行ؓ。该文g通常位于 /etc/ssh_config or /etc/ssh2/ssh2_config。每个客户也可以在自已̎号中创徏本地客户配置?br>Ӟ通常是~/.ssh/config or ~/.ssh2/ssh2_config。本地配|文件优先高于全局配置文g。命 令行选项的优先又高于本地配|文件?br> scp有关命o参数 -r 递归拯目录 -p 保持文g权限和时间戳 -u 拯完成后删除源文g -d 防止覆盖文g -n 描述操作 -q 不显C统计信?br> W八?每̎h务器配置 q种配置可以让SSH服务器区分每个服务器上的各个用户。利用服务器目标账号的认证文 Ӟauthorized_keysQ配|。局限有两点Q它不能覆盖~译旉|和服务器范围配|所采用 的安全措施,W二Q如果用公钥认证,每̎号配|是十分灉|的,如果采用可信L和密 码认证,提供的选择范围很?br> Z公钥的配|?br>1、认证文件的完全格式 依次包含三项内容Q一些选项Q公钥和注释。多个选项用逗号?br>开?br>2、用于限制客L可以在服务器上调用的E序的强制命令。如客户端请求执?bin/ls命oQ?br>而服务器端强制命令却q行/bin/who命oQ它十分有用Q可用于加强安全性,了ؓ授权提供 方便。如要让你的助手每次q接上来都运行email命oE序pineQ则可以q样Q?br>command= "/usr/local/bin/pine" ...key...。最多可l每个密钥关联一个强制命令,要关联多个命 令可把这些命令放入远E主机的一个脚本中Qƈ该脚本作ؓ强制命oq行。如果强制命?br>有shell出口Q那会存在安全问题,{于没有强制Q客户可以运行Q何程序。以下规则可?br>用来判断一个程序是否适合用作强制命o?br>a?避免使用hshell出口的程序(如:文g~辑器vi,Emacs; 分页E序 more,less;调用?br>b?늚man,新闻阅读E序rnQ邮仉ȝ序pine以及调试E序adbQ非交互的程序find,xargs c?{)?br>b、避免用编译器Q解释器或其它可以让用户生成q运行Q意执行代码的E序?br>c、可创徏或删除文件的E序Q如cp,mv,rm,scp,ftp{?br>d、避免用setuid or setgid的程序,特别是setuid 是root的程序?br>d?如果使用脚本作ؓ强制命oQ就要遵循编写安全脚本的传统规则Q在一个脚本之内,?br>限制使用相对路径作ؓ搜烦路径Q应该用绝对\径来调用所有的E序Q不要盲目地?br>用户提供的字W串作ؓ命o来执行;不要让脚本执行Q何setuid的工作。不要调用具?br>shell出口的程序?br>e、考虑使用受限shell?br>f. Z个单独的、专用的SSH密钥Q不要用你登录的那个密钥Q关联一个强制命令。这?br>不会影响你的d能力可以方便地用该密钥?br>g、禁用不必要的SSHҎ(gu)。如no-port-forwarding,no-agent-forwarding,no-pty(用tty分配)?br>几个常用的强制命令介l: 使用定制消息拒绝q接Qcommand="/bin/echo Sorry,buddy,but you've terminated!" ...key... 千万 不要用more and less之类的分늨?br>昄命o菜单Q利用脚?br>查客L的原始程序:command="/bin/echo you tried to invoke $SSH_ORIGINAL_COMMAND" ...key... $SSH_ORIGINAL_COMMAND环境变量保存着 客户q接时运行的原始命o?br>限制客户端的原始命oQ创Z个脚本,该脚本根?SSH_ORIGINAL_COMMAND内容?br>择不同的操作?br>把客L的原始命令记录在日志中:也是Ҏ(gu)$SSH_ORIGINAL_COMMAND变量来做的一 个脚本。脚本内容如一Q?br>#!/bin/sh if [ -n "$SSH_ORIGINAL_COMMAND" ] then echo "`/bin/date`: $SSH_ORIGINAL_COMMAND" >> $HOME/ssh-command-log exec $SSH_ORIGINAL_COMMAND fi 3、限制来自特定主机的q接。由from选项完成。from="client.example.com" ...key...。强?br>q接必须来自client.example.com。否则断开。from="!client.example.com" ...key...表示拒绝?br>地址的连接。支持通配W。SSH2不支持该功能。但可以通过$SSH2_CLIENT变量提取客户 ipQ编写强制命令脚本达到同h果?br>4、ؓq程E序讄环境变量。environment="EDITOR=emacs" ...key...,为每个连接修攚w认的 环境变量?br>5、设|空闲超时时_q样如果客户端用户不再发送数据就强制其断开。idle-timeout=5m, 该选项会覆盖服务器范围配置?br>6、对到达的SSHq接用某些Ҏ(gu),例如端口转发和tty分配。禁用tty分配会客户端没 有交互会话的能力?SSH_TTY变量可显Ctty情况?br> 用户的rc文g ssh服务器会在每个连接到达时调用shell脚本/etc/sshrcQ用户可把一些登录后惌行的脚本 写到q个文g中。用户可以在自已的目录下定义cM的脚本,如果有自定义的~/.ssh/rc?br>/etc/sshrc则不会执行?br> W九(ji)?端口转发与X转发 使用SSH对其它应用程序在别的TCP端口上徏立的TCP/IP传输q行加密和解密,q一q?br>E称为端口{发,其绝大多数操作都是透明的,功能非常强大。TELNET,SMTP,NNTP,IMAP 和一些基于TCP的不安全协议都可变得安全Q只要将其连接通过SSH转发卛_。端口{?br>有时又叫做隧道传输?br>例子Q一个运行IMAP的服务器SQ在安的主机H上运行一个emailE序Q现在想用ssh 保护IMAPq接?br>$ ssh -L2001:localhost:143 S -L 表明是本地{发,Q上面这命o可完成登录到S的功能,现在的这个SSH会话同时H ?001端口转发到S?43端口Q在退Z话之前一直有效。ƈ告知emailE序使用被{ 发的端口Q通常邮gE序q接服务器的143端口Q即套接?QSQ?43Q。现在要令其q接 本地LH自已?001端口Q也是套接字(localhost,2001Q。创建本地{发时可以不用-L 选项Q而在客户端配|文件中用LocalForward关键字?br>LocalForward 2001 localhost:143 ssh1 openssh LocalForward "2001:localhost:143" ssh2 -g 选项和GatewayPorts yes/no关键字可以配|除本地L外的机器是否能用本地的端口 转发功能。出于安全问题,该禁止这个功能?br> q程转发端口与本地{发几乎完全相同,只是方向相反。此时服务器在本圎ͼ转发q接p E主机发赗假设你已登录进服务器S。则 $ ssh -R2001:localhost:143 H -R代表q程转发。命令执行后Q一条从q程LH?001端口到服务器S?43端口的安 全隧道就建立h了。H上的ME序都可以通过q接Qlocalhost,2001Q来使用此安全隧道?br>而在客户端配|文件中用RemoteForward关键? RemoteForward 2001 S:143 ssh openssh RemoteForward "2001:S:143" ssh2 $ ssh -o ClearAllForwardings=yes server.example.com LW二条命令徏立隧? 本地转发与远E{?br>在本地{发中Q应用程序客L与监听端同SSH客户端在一P应用E序服务器与q接?br>同SSH服务器在一赗?br>在远E{发中Q应用程序客L与监听端同SSH服务器在一P应用E序服务器与q接?br>同SSH客户端在一赗?br> 无远E登录的端口转发Q连接时?f参数。一ơ性{发用-foQssh1与openssh不支持这个功 能,但可用以下语句实玎ͼ $ ssh -f -L2001:localhost:143 server sleep 10 l止 如果一个SSH会话现在q在zd当中Q终止会出错。在SSH2中,如果退出有zd转发q?br>接的会话Q该会话会依然打开Q但会{到后台运行。直到{发连接终止。ssh1 and openssh 与此相反Q如果要断开q在zd的会话,会出现警告,仍然在前台运行?br> TIME_WAIT问题。在某些情况下,TCPq接断连Ӟ其一端的套接字在很短一D|间内?br>得不可用Q所以在断连q程l束前不能把该端口用于TCP转发?br> W十?推荐配置 服务器范围配|?br>1、禁用其它访问方式?br>xr-命oQ方法如下:删除/etc/hosts.equiv文gQ或改ؓ只读I文件。禁用rshd,rlogind and rexecdQ通过修改inetd.conf文g?br>2?etc/sshd_config配置 HostKey /etc/ssh_host_key PidFile /etc/sshd.pid RandomSeed /etc/ssh_random_seed StrictModes yes 要求用户保护其与SSH有关的文件及目录 Umask 0077 保证所有SSHD1创徏是文件和目录都只能由其所有者(SSHD q行?br>UIDQ读?br> port 22 ListenAddress 0.0.0.0 IdleTimeout 15m 15分钟I闲时 KeepAlive yes 客户机死机时q接会l止Q而不会长期挂赗?br> LoginGraceTime 30 d时成功认证的旉?0U?br> ServerKeyBits 768 服务器密钥长?br>KeyRegenerationInterval 3600 服务器密钥一时重新生成一?br> PasswordAuthentication no 用密码认证 RhostsAuthentication no 用可信L认证 RhostsRSAAuthentication no 用增强可信L认证 RSAAuthentication yes 启用公钥认证 IgnoreRhosts yes 完全止SSHD使用.rhosts文g IgnoreRootRhosts yes UseLogin no 用UseLoginQ防止万一使用了其它登录程?br> AllowHosts xxx Ҏ(gu)需要设|?br>SilentDeny yes M被DenyHosts拒绝的连接都不会向用戯回消息,不必告诉d 者发生了什么,可以增加了排错的隑ֺ?br> PermitRootLogin nopwd 允许用户通过SSHq接Q但不能用密码认?br> FascistLogging no 用FascistLogging日志方式Q因为它会在日志中记录用L定信息,?br>d者有用?br>QuietMode no 用QuietMode日志方式Q用日志更详细Q敏感度更低 AllowTcpForwarding yes 允许tcp端口转发和X转发Q保护其它的tcpq接 X11Forwarding yes 3?etc/ssh2/sshd2_config配置 HostKeyFile /etc/ssh2/hostkey PublicHostKeyFile /etc/ssh2/hostkey.pub RandmoSeedFile /etc/ssh2/random_seed UserConfigDirectory IdentityFile AuthorizstionFile StrictModes yes port 22 listenAddress 0.0.0.0 KeepAlive yes RequireReverseMapping no LoginGraceTime 30 ׃sshd2没有讄服务器密钥的位数的关键字Q用户得在启动时使用 -b 选项 $ sshd2 -b 1024 .... AllowedAuthentications publickey RequiredAuthentications publickey IgnoreRhosts yes UserKnownHosts no 用该项可防止用L未知L提供信Q权限?br> PermitRootLogin nopwd Ciphers any 不能选none QuietMode no VerboseMode yes Ssh1Compatibility no 用SSH-1兼容模式 #Ssh1Path /usr/local/ssh1/sshd1 Z实用原因Q也可以启用此模式,之前要指明ssh1?br>务器可执行文件位|?br> 4、每账号配置 对于SSH1 AND OPENSSHQ~/.ssh/authorized_keys中的每一个密钥都必须用适当的选项q?br>行限Ӟfrom选项限制只能从特定的L讉K特定的密钥。例如,假设文g中包含你安 台pcQmyhome.isp.netQ的公钥,而其它机器根本不可能用那个密钥来认证Q我们就可以明确 限定q一关系Qfrom = "myhome.isp.net" ...key...。还要对适当的密钥设|空闲超时时_from = "myhome.isp.net" Qidle-timeout=5m ...key...?br>最后,考虑每一个密钥是否需要对到达的连接用端口{发,代理转发以及分配tty{,?br>果不需要,可以分别用no-port-forwarding,no-agent-forwarding and no-pty用q些Ҏ(gu)?br> 5、密钥管?br>臛_创徏1024位长的用户密钥,q用好的口o对密钥进行保护?br> 6、客L配置 d正在q行的ssh客户端时Q一定要用密码保护?br>在客L配置文g中启用某些安全功能,q将其设|ؓ最?br>Host * FallBackToRsh no 止使用不安全的r-命oQssh2Q没有这个问题?br>UseRsh no GatewayPorts no 止q程客户端连接本地的转发端口 StrictHostKeyChecking ask 在主机密钥发生变化时提醒你。请求你的处理意见?br>配置“/etc/ssh/ssh_config”文g “/etc/ssh/ssh_config”文g是OpenSSHpȝ范围的配|文Ӟ允许你通过讄不同的选项 来改变客LE序的运行方式。这个文件的每一行包?#8220;关键词-?#8221;的匹配,其中“关键 ?#8221;是忽略大写的。下面列出来的是最重要的关键词Q用man命o查看帮助(ssh (1)Q?br>可以得到详细的列表。 ~辑“ssh_config”文gQvi /etc/ssh/ssh_configQ,d或改变下面的参数Q # Site-wide defaults for various options Host * ForwardAgent no ForwardX11 no RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication yes FallBackToRsh no UseRsh no BatchMode no CheckHostIP yes StrictHostKeyChecking no IdentityFile ~/.ssh/identity Port 22 Cipher blowfish EscapeChar ~ 下面逐行说明上面的选项讄Q Host * 选项“Host”只对能够匚w后面字串的计机有效?#8220;*”表示所有的计算机。 ForwardAgent no “ForwardAgent”讄q接是否l过验证代理Q如果存在)转发l远E计机。 ForwardX11 no “ForwardX11”讄X11q接是否被自动重定向到安全的通道和显C集QDISPLAY setQ。 RhostsAuthentication no “RhostsAuthentication”讄是否使用Zrhosts的安全验证。 RhostsRSAAuthentication no “RhostsRSAAuthentication”讄是否使用用RSA法的基于rhosts的安全验证。 RSAAuthentication yes “RSAAuthentication”讄是否使用RSA法q行安全验证。 PasswordAuthentication yes “PasswordAuthentication”讄是否使用口o验证。 FallBackToRsh no “FallBackToRsh”讄如果用sshq接出现错误是否自动使用rsh。 UseRsh no “UseRsh”讄是否在这台计机上?#8220;rlogin/rsh”。 BatchMode no “BatchMode”如果设ؓ“yes”Qpassphrase/passwordQ交互式输入口oQ的提示被止?br>当不能交互式输入口o的时候,q个选项对脚本文件和批处理Q务十分有用。 CheckHostIP yes “CheckHostIP”讄ssh是否查看q接到服务器的主机的IP地址以防止DNSƺ骗。徏议设 |ؓ“yes”。 StrictHostKeyChecking no “StrictHostKeyChecking”如果讄?#8220;yes”Qssh׃会自动把计算机的密匙加入 “$HOME/.ssh/known_hosts”文gQƈ且一旦计机的密匙发生了变化Q就拒绝q接。 IdentityFile ~/.ssh/identity “IdentityFile”讄从哪个文件读取用LRSA安全验证标识。 Port 22 “Port”讄q接到远E主机的端口。 Cipher blowfish “Cipher”讄加密用的密码。 EscapeChar ~ “EscapeChar”讄escape字符。 配置“/etc/ssh/sshd_config”文g “/etc/ssh/sshd_config”是OpenSSH的配|文Ӟ允许讄选项改变q个daemon的运行?br>q个文g的每一行包?#8220;关键词-?#8221;的匹配,其中“关键?#8221;是忽略大写的。下面列?br>来的是最重要的关键词Q用man命o查看帮助(sshd (8)Q可以得到详l的列表。 ~辑“sshd_config”文gQvi /etc/ssh/sshd_configQ,加入或改变下面的参数Q # This is ssh server systemwide configuration file. Port 22 ListenAddress 192.168.1.1 HostKey /etc/ssh/ssh_host_key ServerKeyBits 1024 LoginGraceTime 600 KeyRegenerationInterval 3600 PermitRootLogin no IgnoreRhosts yes IgnoreUserKnownHosts yes StrictModes yes X11Forwarding no PrintMotd yes SyslogFacility AUTH LogLevel INFO RhostsAuthentication no RhostsRSAAuthentication no RSAAuthentication yes PasswordAuthentication yes PermitEmptyPasswords no AllowUsers admin 下面逐行说明上面的选项讄Q Port 22 “Port”讄sshd监听的端口号。 ListenAddress 192.168.1.1 “ListenAddress”讄sshd服务器绑定的IP地址。 HostKey /etc/ssh/ssh_host_key “HostKey”讄包含计算机私人密匙的文g。 ServerKeyBits 1024 “ServerKeyBits”定义服务器密匙的位数。 LoginGraceTime 600 “LoginGraceTime”讄如果用户不能成功dQ在切断q接之前服务器需要等待的旉Q以 Uؓ单位Q。 KeyRegenerationInterval 3600 “KeyRegenerationInterval”讄在多秒之后自动重新生成服务器的密匙Q如果用密匙)?br>重新生成密匙是ؓ了防止用盗用的密匙解密被截获的信息。 PermitRootLogin no “PermitRootLogin”讄root能不能用sshd。这个选项一定不要设?#8220;yes”。 IgnoreRhosts yes “IgnoreRhosts”讄验证的时候是否?#8220;rhosts”?#8220;shosts”文g。 IgnoreUserKnownHosts yes “IgnoreUserKnownHosts”讄ssh daemon是否在进行RhostsRSAAuthentication安全验证 的时候忽略用L“$HOME/.ssh/known_hosts” StrictModes yes “StrictModes”讄ssh在接收登录请求之前是否检查用户家目录和rhosts文g的权限和所 有权。这通常是必要的Q因为新手经怼把自q目录和文件设成Q何h都有写权限。 X11Forwarding no “X11Forwarding”讄是否允许X11转发。 PrintMotd yes “PrintMotd”讄sshd是否在用L录的时候显C?#8220;/etc/motd”中的信息。 SyslogFacility AUTH “SyslogFacility”讄在记录来自sshd的消息的时候,是否l出“facility code”。 LogLevel INFO “LogLevel”讄记录sshd日志消息的层ơ。INFO是一个好的选择。查看sshd的man?br>助页Q已获取更多的信息。 RhostsAuthentication no “RhostsAuthentication”讄只用rhosts?#8220;/etc/hosts.equiv”q行安全验证是否已经_了。 RhostsRSAAuthentication no “RhostsRSA”讄是否允许用rhosts?#8220;/etc/hosts.equiv”加上RSAq行安全验证。 RSAAuthentication yes “RSAAuthentication”讄是否允许只有RSA安全验证。 PasswordAuthentication yes “PasswordAuthentication”讄是否允许口o验证。 PermitEmptyPasswords no “PermitEmptyPasswords”讄是否允许用口令ؓI的帐号d。 AllowUsers admin “AllowUsers”的后面可以跟着L的数量的用户名的匚wԌpatternsQ或user@hostq样 的匹配串Q这些字W串用空格隔开。主机名可以是DNS名或IP地址?
]]> linux下mysql的安装和使用 http://www.shnenglu.com/elva/archive/2007/06/18/26566.html叶子 叶子 Mon, 18 Jun 2007 07:58:00 GMT http://www.shnenglu.com/elva/archive/2007/06/18/26566.html http://www.shnenglu.com/elva/comments/26566.html http://www.shnenglu.com/elva/archive/2007/06/18/26566.html#Feedback 3 http://www.shnenglu.com/elva/comments/commentRss/26566.html http://www.shnenglu.com/elva/services/trackbacks/26566.html 安装与?/span>MySQL
一 、下?/font> MySQL 的安装文?/font> 安装 MySQL 需要下面两个文Ӟ MySQL-server-4.0.16-0.i386.rpm MySQL-client-4.0.16-0.i386.rpm 下蝲地址为: http://www.mysql.com/downloads/mysql-4.0.html Q?/span> 打开此网,下拉|页扑ֈ “Linux x86 RPM downloads” ,扑ֈ “Server” ?/span>“Client programs” ,下蝲需要的上述两个 rpm 文g?/span>
?/font> 、安?/font> MySQL rpm 文g?/span>Red Hat 公司开发的软g安装包, rpm 可让 Linux 在安装Y件包时免除许多复杂的手箋。该命o在安装时常用的参数是 –ivh , 其中 i 表示安装指定的 rmp 软g包, V 表示安装时的详细信息Q?/span>h 表示在安装期?/span>
出现 “#”W号来显C目前的安装q程。这个符号将持箋到安装完成后才停止?br> 1Q安装服务器?br> 在有两个rmp文g的目录下q行如下命oQ?br> [root@test1 local]# rpm -ivh MySQL-server-4.0.16-0.i386.rpm 昄如下信息?br> warning: MySQL-server-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5 Preparing... ########################################### [100%] 1:MySQL-server ########################################### [100%] 。。。。。。(省略昄Q?br> /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h test1 password 'new-password' 。。。。。。(省略昄Q?br> Starting mysqld daemon with databases from /var/lib/mysql 如出现如上信息,服务端安装完毕。测试是否成功可q行netstat看Mysql端口是否打开Q如打开表示服务已经启动Q安装成功。Mysql默认的端口是3306?br> [root@test1 local]# netstat -nat Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 上面昄可以看出MySQL服务已经启动?br> 2Q安装客L q行如下命oQ?br> [root@test1 local]# rpm -ivh MySQL-client-4.0.16-0.i386.rpm warning: MySQL-client-4.0.16-0.i386.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5 Preparing... ########################################### [100%] 1:MySQL-client ########################################### [100%] 昄安装完毕?br> 用下面的命oq接mysql,试是否成功?
三、登?span>MySQL
d MySQL的命令是mysqlQ?mysql 的用语法如下: mysql [-u username] [-h host] [-p[password]] [dbname] username ?password 分别?MySQL 的用户名与密码,mysql的初始管理帐hrootQ没有密码,注意Q这个root用户不是Linux的系l用戗MySQL默认用户是rootQ由于初始没有密码,W一ơ进时只需键入mysql卛_? [root@test1 local]# mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 4.0.16-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> 出现?#8220;mysql>”提示W,恭喜你,安装成功Q?br> 增加了密码后的登录格式如下: mysql -u root -p Enter password: (输入密码) 其中-u后跟的是用户名,-p要求输入密码Q回车后在输入密码处输入密码?
注意Q这?span>mysql文g?usr/bin目录下,与后面讲的启动文?etc/init.d/mysql不是一个文件?
四?span>MySQL的几个重要目?
MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配|文件和命o文g分别在不同的目录Q了解这些目录非帔R要,其对于Linux的初学者,因ؓLinux本n的目录结构就比较复杂Q如果搞不清楚MySQL的安装目录那无从谈h入学习?
下面׃l一下这几个目录?span>
1、数据库目录 /var/lib/mysql/
2、配|文?br> /usr/share/mysqlQmysql.server命o及配|文Ӟ
3、相兛_?br> /usr/bin(mysqladmin mysqldump{命?
4、启动脚?br> /etc/rc.d/init.d/Q启动脚本文件mysql的目录)
五、修改登录密?span>
MySQL默认没有密码Q安装完毕增加密码的重要性是不言而喻的?
1、命?br> usr/bin/mysqladmin -u root password 'new-password' 格式Qmysqladmin -u用户?-p旧密?password 新密?
2、例?br> ?Q给root加个密码123456?br> 键入以下命o Q?br> [root@test1 local]# /usr/bin/mysqladmin -u root password 123456 注:因ؓ开始时root没有密码Q所?p旧密码一就可以省略了?
3、测试是否修Ҏ(gu)?br> 1Q不用密码登?br> [root@test1 local]# mysql ERROR 1045: Access denied for user: 'root@localhost' (Using password: NO) 昄错误Q说明密码已l修攏V?br> 2Q用修改后的密码d [root@test1 local]# mysql -u root -p Enter password: (输入修改后的密码123456) Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.0.16-standard Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> 成功Q?br> q是通过mysqladmin命o修改口oQ也可通过修改库来更改口o?
六、启动与停止
1、启?br> MySQL安装完成后启动文件mysql?etc/init.d目录下,在需要启动时q行下面命o卛_?br> [root@test1 init.d]# /etc/init.d/mysql start
2、停?br> /usr/bin/mysqladmin -u root -p shutdown
3、自动启?br> 1Q察看mysql是否在自动启动列表中 [root@test1 local]# /sbin/chkconfig –list 2Q把MySQLdCpȝ的启动服务组里面?br> [root@test1 local]# /sbin/chkconfig – add mysql 3Q把MySQL从启动服务组里面删除?br> [root@test1 local]# /sbin/chkconfig – del mysql
七、更?span>MySQL目录
MySQL默认的数据文件存储目录ؓ/var/lib/mysql。假如要把目录移?home/data下需要进行下面几步:
1、home目录下徏立data目录 cd /home mkdir data
2、把MySQL服务q程停掉Q? mysqladmin -u root -p shutdown
3、把/var/lib/mysql整个目录Ud/home/data mv /var/lib/mysql /home/data/ q样把MySQL的数据文件移动到?home/data/mysql?
4、找到my.cnf配置文g 如果/etc/目录下没有my.cnf配置文gQ请?usr/share/mysql/下找?.cnf文gQ拷贝其中一个到/etc/
q改名ؓ my.cnf。命令如下: [root@test1 mysql]# cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
5、编辑MySQL的配|文?etc/my.cnf Z证MySQL能够正常工作Q需要指明mysql.sock文g的生位|?修改
socket=/var/lib/mysql/mysql.sock一行中{号双的gؓQ?home/mysql/mysql.sock 。操作如下: vi my.cnf (用vi工具~辑my.cnf文gQ找C列数据修改之) # The MySQL server [mysqld] port = 3306 #socket = /var/lib/mysql/mysql.sockQ原内容Qؓ了更E_?#8220;#”注释此行Q?br> socket = /home/data/mysql/mysql.sock Q加上此行)
6、修改MySQL启动脚本/etc/rc.d/init.d/mysql 最后,需要修改MySQL启动脚本/etc/rc.d/init.d/mysqlQ把其中datadir=/var/lib/mysql一行中Q等号右
边的路径Ҏ(gu)你现在的实际存放路径Q?/font>home/data/mysql?br> [root@test1 etc]# vi /etc/rc.d/init.d/mysql #datadir=/var/lib/mysql Q注释此行) datadir=/home/data/mysql Q加上此行)
7、重新启动MySQL服务 /etc/rc.d/init.d/mysql start 或用reboot命o重启Linux 如果工作正常Ud成功了Q否则对照前面的7步再查一下?
八?span>MySQL的常用操?
注意Q?span>MySQL中每个命令后都要以分Pl尾?
1、显C数据库 mysql> show databases; +----------+ | Database | +----------+ | mysql | | test | +----------+ 2 rows in set (0.04 sec) Mysql刚安装完有两个数据库Qmysql和test。mysql库非帔R要,它里面有MySQL的系l信息,我们改密码和新增用户Q实际上是用这个库中的相关表进行操作?
2、显C数据库中的?br> mysql> use mysql; Q打开库,Ҏ(gu)个库q行操作p打开此库Q类gfoxpro Q?br> Database changed
mysql> show tables; +-----------------+ | Tables_in_mysql | +-----------------+ | columns_priv | | db | | func | | host | | tables_priv | | user | +-----------------+ 6 rows in set (0.01 sec)
3、显C数据表的结构: describe 表名;
4、显C中的记录Q? select * from 表名; 例如Q显Cmysql库中user表中的纪录。所有能对MySQL用户操作的用户都在此表中?br> Select * from user;
5、徏库: create database 库名; 例如Q创Z个名字位aaa的库 mysql> create database aaa; 6、徏表: use 库名Q? create table 表名 (字段讑֮列表)Q?br> 例如Q在刚创建的aaa库中建立表name,表中有id(序号Q自动增?QxmQ姓名),xbQ性别Q?csnyQ出w年月)四个字段 use aaa; mysql> create table name (id int(3) auto_increment not null primary key, xm char(8),xb char(2),csny date); 可以用describe命o察看刚徏立的表结构?br> mysql> describe name;
+-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | id | int(3) | | PRI | NULL | auto_increment | | xm | char(8) | YES | | NULL | | | xb | char(2) | YES | | NULL | | | csny | date | YES | | NULL | | +-------+---------+------+-----+---------+----------------+
7、增加记?br> 例如Q增加几条相关纪录?br> mysql> insert into name values('','张三','?,'1971-10-01'); mysql> insert into name values('','白云','?,'1972-05-20'); 可用select命o来验证结果?br> mysql> select * from name; +----+------+------+------------+ | id | xm | xb | csny | +----+------+------+------------+ | 1 | 张三 | 甗 | 1971-10-01 | | 2 | 白云 | 奟뀀 | 1972-05-20 | +----+------+------+------------+
8、修改纪?br> 例如Q将张三的出生年月改?971-01-10 mysql> update name set csny='1971-01-10' where xm='张三';
9、删除纪?br> 例如Q删除张三的U录?br> mysql> delete from name where xm='张三';
10、删库和删表 drop database 库名; drop table 表名Q?
?ji)、增?span>MySQL用户
格式Q?/font>grant select on 数据?* to 用户名@dL identified by "密码" ?、增加一个用户user_1密码?23Q让他可以在ML上登录,q对所有数据库有查询、插入、修攏V删除的权限。首先用以root用户q入MySQLQ然后键入以下命令:
mysql> grant select,insert,update,delete on *.* to mailto:user_1@" " Identified by "123"; ?增加的用h十分危险的,如果知道了user_1的密码,那么他就可以在网上的M一台电(sh)脑上d你的MySQL数据库ƈ对你的数据ؓ所Ʋؓ了,解决办法见例2?
?span>2、增加一个用户user_2密码?23,让此用户只可以在localhost上登录,q可以对数据库aaaq行查询、插入、修攏V删除的操作Qlocalhost指本C机,即MySQL数据库所在的那台LQ,q样用户即用知道user_2的密码,他也无法从网上直接访问数据库Q只能通过MYSQLL来操作aaa库?
mysql>grant select,insert,update,delete on aaa.* to user_2@localhost identified by "123";
用新增的用户如果d不了MySQLQ在d时用如下命oQ?
mysql -u user_1 -p -h 192.168.113.50 Q?h后跟的是要登录主机的ip地址Q?
十、备份与恢复
1、备?
例如Q将上例创徏?span>aaa库备份到文gback_aaa?
[root@test1 root]# cd /home/data/mysql (q入到库目录Q本例库已由val/lib/mysql转到/home/data/mysqlQ见上述W七部分内容) [root@test1 mysql]# mysqldump -u root -p --opt aaa > back_aaa
2、恢?
[root@test mysql]# mysql -u root -p ccc < back_aaa
]]>盗版XP的解军_?/title> http://www.shnenglu.com/elva/archive/2007/06/01/25295.html叶子 叶子 Fri, 01 Jun 2007 11:06:00 GMT http://www.shnenglu.com/elva/archive/2007/06/01/25295.html http://www.shnenglu.com/elva/comments/25295.html http://www.shnenglu.com/elva/archive/2007/06/01/25295.html#Feedback 0 http://www.shnenglu.com/elva/comments/commentRss/25295.html http://www.shnenglu.com/elva/services/trackbacks/25295.html 阅读全文 ]]> 让win2000自动d http://www.shnenglu.com/elva/archive/2007/05/11/23905.html叶子 叶子 Fri, 11 May 2007 08:19:00 GMT http://www.shnenglu.com/elva/archive/2007/05/11/23905.html http://www.shnenglu.com/elva/comments/23905.html http://www.shnenglu.com/elva/archive/2007/05/11/23905.html#Feedback 1 http://www.shnenglu.com/elva/comments/commentRss/23905.html http://www.shnenglu.com/elva/services/trackbacks/23905.html 阅读全文 ]]> vi命o详解 http://www.shnenglu.com/elva/archive/2007/05/06/23516.html叶子 叶子 Sun, 06 May 2007 07:37:00 GMT http://www.shnenglu.com/elva/archive/2007/05/06/23516.html http://www.shnenglu.com/elva/comments/23516.html http://www.shnenglu.com/elva/archive/2007/05/06/23516.html#Feedback 2 http://www.shnenglu.com/elva/comments/commentRss/23516.html http://www.shnenglu.com/elva/services/trackbacks/23516.html 没有指定一个文Ӟ那么vi命o会自动生一个无名的I的工作文g。若指定的文件不存在Q?
那么按指定的文件名创徏一个新的文件。若Ҏ(gu)件的修改不保存的话,v i命oq不改变?
来文件的内容?nbsp; 阅读全文 ]]>
ۿƷþ |
þѸƵ |
պƷþþþþþõӰ |
㽶aaþëƬ |
˾þô߽avһ |
ƷþþþþþþѼ |
91鶹Ʒ91þþþþ |
þþƷĻ23ҳ |
18պҹþó |
þһ |
һֻƴƬ99þ |
þþþƷþþþþþ |
Ʒþþþþþþ |
þþƷɧ |
鶹ŷۺϾþ |
ĻƷѾþ |
þþþþAv뾫Ʒר |
þ99Ʒþ |
ŷպƷþþѹۿ |
Ҳȥþۺ |
ҹƷþþþ9999 |
ƷVAþþþþþñ |
þ |
ݺɫۺþö
|
պŮ18վþþƷ
|
þù㽶һƷ |
Ʒһþhs |
þ91ƷۺϹҳ |
þþƷĻ̾ |
äv뾫Ʒþþ |
Ʒþþþþ |
þþۺ |
Ʒ99þþƷ |
þþþþþþ뾫Ʒպ |
8090Ʒþһ |
91Ʒ91þ |
þ99ڹ |
þþƷþһ |
˺ݺۺ88ۺϾþ |
˹ھƷþþþӰԺVR |
˸ŮѲžþþ |