<?xml version="1.0" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>国家劳动局IT培训咨询与技术指南 - Solaris</title><link>http://www.7layer.cn/</link><description>劳动局IT培训;劳动局IT认证;劳动局IT技术;政府补贴;免费培训 - </description><generator>RainbowSoft Studio Z-Blog 1.8 Walle Build 100427</generator><language>zh-CN</language><copyright>版权所有 2008-2010 国家劳动局IT培训咨询与技术指南var gaJsHost = ((&amp;quot;https:&amp;quot; == document.location.protocol) ? &amp;quot;https://ssl.&amp;quot; : &amp;quot;http://www.&amp;quot;);document.write(unescape(&amp;quot;%3Cscript src='&amp;quot; + gaJsHost + &amp;quot;google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E&amp;quot;));try {var pageTracker = _gat._getTracker(&amp;quot;UA-12945401-1&amp;quot;);pageTracker._trackPageview();} catch(err) {}</copyright><pubDate>Sun, 05 Sep 2010 10:15:47 +0800</pubDate><item><title>Sun“高可靠扩展版”的Solaris 10 OS</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/600/600/600.html</link><pubDate>Wed, 13 Jan 2010 12:43:52 +0800</pubDate><guid>http://www.7layer.cn/cat_28/600/600/600.html</guid><description><![CDATA[<p>在2006 RSA Conference (电子数据安全技术大会)上，Sun Microsystems公司发布了Solaris 10操作系统的Solaris Trusted Extensions (高可靠扩展版)。Solaris拥有公认的满足政府部门要求的高度安全认证的良好记录，而Solaris 10这一Solaris最新商用版是我们这个星球上最安全的操作系统。Solaris高可靠扩展版将使对信息保护有着特殊要求的Solaris 10的现有客户享用到&ldquo;标号分级技术&rdquo;的优势，而以往这一特性只有专门的高度安全的操作系统才能提供。</p><p>Solaris高可靠扩展版是安全的&ldquo;标号分级技术&rdquo;的一个操作层，它将一个要求操作系统支持多级数据访问策略的环境内的数据安全策略与数据所有权限分离开来。将Solaris高可靠扩展版作为一个操作层来提供，就意味着Solaris 10的现有客户可以满足政府部门苛刻的安全要求，而无需修改他们的现有应用或更换底层硬件平台。</p><p>Solaris高可靠扩展版将成为符合分级安全保护框架(LSPP)/EAL 4+条例的Common Criteria (公共标准)，LSPP)/EAL 4+是希望在同一系统中实施多级数据保护的金融、卫生和政府等机构的绝对性要求。这一认证将添加到Solaris 10的认证中，Solaris 10也正处于针对授控安全访问保护框架(CAPP)和基于角色的安全访问保护框架(RBACPP)/ EAL 4+条例进行认证的评估中。Sun的综合性Common Criteria认证、Solaris高可靠扩展版的认证提交，以及以前Solaris 10 OS所进行的认证，都包括了所有的企业级必备组件，这样便能帮助企业和政府运行高度安全的操作系统配置。</p><p>2006年4月，Sun将提供Solaris高可靠扩展版，同时进入Common Criteria/EAL 4+鉴定的评估阶段。Common Criteria/EAL 4+是目前全球公认的针对任何商用操作系统组件认证的最高等级。当前，Solaris高可靠扩展版将向客户提供早期试用版。</p><p><strong>Solaris高可靠扩展版的标号分级能力</strong></p><p>Solaris高可靠扩展版的&ldquo;带标号的安全&rdquo;功能允许在Solaris 10操作系统内实施强大的强制性访问控制(MAC)的安全策略。这一策略确保：操作系统内所有对象都具有明确定义的、彼此容易稽核的关系，这些对象之间的通信访问将受到严格的控制。例如，每个机构至少要有两级信息，第一级的信息可以提供给任何人，而第二级的信息只能提供给被授权的用户。Solaris高可靠扩展版允许信息在多个敏感级别上进行处理。</p><p>MAC各个级别的标号与彼此必须分离地保存的信息的敏感程度相对应，即使它们被存储在同一个系统中。因为给信息加标号是自动完成的，因此MAC是强制性的。一般的用户是不能改变标号的，除非系统管理员给他们以特别授权。事实上，拥有不同级别标号的用户是不被允许共享信息的。</p><p>Solaris 10 OS的Solaris高可靠扩展版还提供其他的安全特性，包括：带标号的文档系统、带标号的联网能力、带标号的打印功能，以及带标号的桌面系统，等等。</p><p><strong>对CIS基准的支持</strong></p><p>Sun还通过CIS(Internet安全中心)Benchmark基准的设立扩展对Solaris 10 OS部署的支持服务。被《Information Security Magazine》(信息安全杂志)称之为&ldquo;最好的基准&rdquo;的CIS Benchmarks，是通过一个有数百名安全问题专家参与的全球性的评估过程来确认的、拥有最佳实践的安全的配置。针对Solaris 10 OS的CIS Level-I Benchmark，是在2005年3月确认的一个最好的安全配置基准。作为Sun与CIS成员之间密切合作关系的成果，Solaris 10 Service可使现在采用CIS安全建议的客户，在将来享用Sun对他们所选配置的支持。除了免费提供Solaris Security Toolkit(安全工具集)之外，CIS还将在本月晚些时候推出一个针对Solaris 10 OS的计分工具(Scoring Tool)，让用户迅速、容易地比照CIS Benchmark标准，对他们的系统和安全配置进行评估。</p><p><strong>Solaris 10操作系统的安全特性</strong></p><p>Solaris 10 OS是我们这个星球上最先进和最安全的操作系统，它具有以下安全特性：<br />* &bull;基于标准的密码架构(Standards-based Cryptographic Framework)<br />* &bull;综合性防火墙(Integrated Firewall)<br />* &bull;拥有安全执行的认证(Verification of Secure Execution)<br />* &bull;基础稽查与报告工具(BART：Basic Audit and Reporting Tools)<br />* &bull;提供仅有最小特权的安全性服务(Services Secured With Least Privileges)<br />* &bull;灵活的企业认证(Flexible Enterprise Authentication)<br />* &bull;安全的数据中心整合(Secure Data Center Consolidation)<br />* &bull;中央托管的用户权限管理(URM:Centrally Managed User Rights Management)<br />* &bull;最小化的安装选项(Minimized Install Option)<br />* &bull;精细过程的权限管理(Fine grained Process Rights Management)</p><p>Solaris Trusted Extensions (Solaris高可靠扩展版)对Solaris 10 OS的添加，更加强化了Solaris Enterprise System软件平台。Solaris Enterprise System是今天市场上可提供的唯一的综合性的、开放的基础软件平台。它由Solaris OS、Sun Java Enterprise System、Sun developer tools和Sun N1管理软件等组成。Solaris Enterprise System提供了一个单一的、完整的和集成的平台，该平台包括操作系统、基础软件、系统管理软件和开发者工具，而且可以无成本费用地让开发者与用户无限地使用。</p><p>Sun公司的中文网址为<a href="http://www.sun.com.cn/">http://www.sun.com.cn</a>。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/600/600/600.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=600</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=600&amp;key=be998dda</trackback:ping></item><item><title>solaris常用网络文件配置</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/599/599/599.html</link><pubDate>Wed, 13 Jan 2010 12:40:37 +0800</pubDate><guid>http://www.7layer.cn/cat_28/599/599/599.html</guid><description><![CDATA[<p><strong>网络地址<br /></strong>1. /etc/hostname.interface <br />Interface是网卡的型号，有le、hme等。Le是十兆网卡，hme为百兆网卡等等。后面跟一个数字，第一个十兆网卡为le0，第二个为le1；第二个百兆网卡为hme0，第二个为hme1等等。 <br />文件的内容是这块网卡的名字，如Sunrise、Sunny。<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃more /etc/hostname.le0 <br />Sunrise <br /># more /etc/hostname.hme0 <br />Sunny </pre>            </td>        </tr>    </tbody></table>2. /etc/hosts文件 <br />系统名与IP地址的映射 <br />与/etc/hostname.interface 协同工作，配置本机网卡地址<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre># more /etc/hosts <br />127.0.0.1 localhost loghost <br />172.16.255.1 Sunrise <br />172.18.255.1 Sunny </pre>            </td>        </tr>    </tbody></table>系统名不是机器名，机器名是唯一的，要更改机器名，用命令：hostname。 <br />有了/etc/hostname.interface和/etc/hosts两个文件，系统就知道如何配置网卡了，如第一个百兆网卡的名字是Sunny，其对应的地址是172.18.255.1。 <br />3. /etc/netmasks文件 <br />将网络的IP地址与网络地址联系一起，划分子网 <br />如果是标准网段，则不需要配置 <br />标准网段：<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>A类网：0－127（127用于本地地址） 掩码：255..0.0.0 <br />B类网：128－191 掩码：255.255.0.0 <br />C类网：192－223 掩码：255.255.255.0 <br />D类网：224－254（用于多址广播） </pre>            </td>        </tr>    </tbody></table>要配一个B类地址：172.16.255.1掩码为：255.255.255.0，则在/etc/netmasks文件中写：172.16.255.0 255.255.255.0 <br />4. ifconfig命令 <br />检测网络端口状态<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃ifconfig -a </pre>            </td>        </tr>    </tbody></table>配置网络端口地址<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃ifconfig le0 172.16.255.1 netmask 255.255.255.0 <br /></pre>            </td>        </tr>    </tbody></table>配置网络端口状态<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃ifconfig le0 up/down </pre>            </td>        </tr>    </tbody></table><br />配置网络端口是否可用<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃ifconfig le0 plumb/unplumb </pre>            </td>        </tr>    </tbody></table>5. ping命令 <br />检测网络状态 <br />测试网络速度 <br /><strong>网络服务</strong> <br />1. /etc/services文件 <br />网络服务协议的端口号 <br />网络协议的服务类型<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>#cat /etc/inet/services <br />ftp-data 20/tcp <br />ftp 21/tcp <br />telnet 23/tcp <br />smtp 25/tcp mail <br />sunrpc 111/udp rpcbind <br />sunrpc 111/tcp rpcbind <br />&hellip; </pre>            </td>        </tr>    </tbody></table>每个TCP/IP应用层服务如（FTP、Telnet）都在传输层有一个端口号。/etc/services文件包含了每个能识别出的服务协议所对应的静态端口号。应用应使用唯一分配的端口号向传输提供者和远程对等实体标识自己。 <br />文件中每一项都由服务名及其相关的端口号、传输协议提供者组成。有些服务可以在TCP和UDP上都可以运行。这时，此服务被列出两次。 <br />2. /etc/inetd.conf文件<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre># cat /etc/inet/inetd.conf <br />ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd <br />telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd <br />login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind <br />talk dgram udp wait root /usr/sbin/in.talkd in.talkd </pre>            </td>        </tr>    </tbody></table>UNIX并不是让每种服务的守护进程都在自己的端口上等待请求，而是将代表各个服务守护进程等待请求的任务交给一个叫inetd的服务进程。这样就可以大大减少对系统资源的占用。只有当超级服务进程发现一个服务请求时，它才调用该服务的守护进程。/etc/inetd.conf配置文件允许inetd在启动时决定自己将代表哪些服务等待服务请求。如果一种服务的守护进程没有包含在inetd.conf文件中，那么当inetd接收到该服务的请求时，会把该请求丢弃。 <br />文件的字段： <br />service_name 这是文件/etc/services中列出的服务的标志符。 <br />socket_type 用来标志使用的数据传输服务的类型。 <br />proto 标识传输协议的名字。是UPD和TCP <br />flags 可以被设为&quot;等待&quot;和&quot;非等待&quot;。如果被设为&quot;等待&quot; 状态，inetd在恢复监听端口上的其他请求时，必须等待服 务协议释放将其连接到网络的连接。&quot;非等待&quot;可以使 inetd立即监听其他的请求。大多数TCP协议的采用&quot;非等 待&quot;方式，而UDP采用&quot;等待&quot;方式。 <br />user 表示调用服务的用户名。 <br />server_pathname 表示inetd在响应相关服务请求时必须调用的 服务程序的完整路径名。 <br />Args 该域包括服务的程序所使用的命令行参数。即以程序名开 始，然后跟随用户设置的参数。</p><p><strong>路由和网关</strong> <br />1. /etc/defaulrouter文件 <br />配置缺省网关 <br />防止不必要的路由进程 <br />适用于只有一个路由器通向其它网段 <br />单一路由占用较小的路由表资源 <br />该文件保存了缺省路由得信息。系统安装时并没有该文件，是用户自己创建的。文件内容是缺省路由的地址。<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>＃cat /etc/defaultrouter <br />172.16.255.254 <br /></pre>            </td>        </tr>    </tbody></table>优点： <br />占用资源少，只有一条路由条目。 <br />2. /etc/gateways文件 <br />路由表文件 <br />net gateway metric <br />dest. net 目标网段 <br />router 下一跳路由器的地址 <br />count 跳数 <br />3. route命令<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>route add|delete [host|net] destination [gateway ] <br />Add a route <br />#route add net 128.50.3.0 192.168.1.1 1 <br />Delete a route <br />#route delete net 128.50.2.0 192.168.12.2 </pre>            </td>        </tr>    </tbody></table>4. 查看路由表<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre># netstat -r <br />Routing Table: <br />Destination Gateway Flags Ref Use Interface <br />----------- ---------- ----- --- --- --------- <br />localhost localhost UH 0 2272 lo0 <br />202.96.0.0 192.168.12.1 U 3 562 le0 <br />10.103.0.0 192.168.12.2 U 3 562 le0 <br /># </pre>            </td>        </tr>    </tbody></table>Destination 目标网络或主机 <br />Gateway 转发数据包的主机 <br />Flags 这条路由的状态，这个参数有这样几个选项： <br />U 端口处于激活状态（up） <br />H 目标是个主机，而不是网段 <br />Ref 同一个网络接口地址拥有的路由条目数量 <br />Use 通过这条路由的包数量，对于localhost来说，这个数字代表 所有接收的包数量 <br />Interface 路由的网络接口 <br /><strong>DNS客户端的设置</strong> <br />1. /etc/resolv.conf文件 <br />记录DNS服务器的地址和域名 <br />关键字：<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre>domainname <br />nameserver <br /># more /etc/resolv.conf <br />nameserver 172.16.255.3 <br />domainname sunrise.com.cn <br /></pre>            </td>        </tr>    </tbody></table>2. /etc/nsswitch.conf文件 <br />记录主机名的搜索顺序等信息<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre><br /># more /etc/nsswitch.conf <br /># <br /># /etc/nsswitch.dns: <br /># <br /># An example file that could be copied over to /etc/nsswitch.conf; it uses <br /># DNS for hosts lookups, otherwise it does not use any other naming service. <br /># <br /># &quot;hosts:&quot; and &quot;services:&quot; in this file are used only if the <br /># /etc/netconfig file has a &quot;-&quot; for nametoaddr_libs of &quot;inet&quot; transports. <br />passwd: files <br />group: files <br /># You must also set up the /etc/resolv.conf file for DNS name <br /># server lookup. See resolv.conf(4). <br />hosts: files dns <br />ipnodes: files <br />&hellip; <br />&hellip; </pre>            </td>        </tr>    </tbody></table>将这个文件的hosts记录配置成hosts: files dns <br />3. nslookup命令 <br />用于查询DNS服务器 <br />用于验证客户端的设置 <br />用于下载DNS数据库<table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="400" align="center" bordercolorlight="#000000" border="1">    <tbody>        <tr>            <td class="code" bgcolor="#e6e6e6">            <pre># nslookup <br />Default Server: ns.zjhzptt.net.cn <br />Address: 202.96.96.68 <br />&gt; www.sun.com <br />Server: ns.zjhzptt.net.cn <br />Address: 202.96.96.68 <br />Non-authoritative answer: <br />Name: www.sun.com <br />Address: 192.18.97.241 </pre>            </td>        </tr>    </tbody></table>&gt; <br />启动时，nslookup缺省地以本地服务器为目标。响应中包括目标服务器的名字和地址。 <br />&gt;是提示符，这意味着可以开始发送名字服务询问或配置。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/599/599/599.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=599</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=599&amp;key=8ec7fb54</trackback:ping></item><item><title>高端访谈：开源Solaris魅力何在?</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/598/598/598.html</link><pubDate>Wed, 13 Jan 2010 12:37:43 +0800</pubDate><guid>http://www.7layer.cn/cat_28/598/598/598.html</guid><description><![CDATA[<p>Solaris开源了，无论是对Sun、对开源社区，这都是一个重磅炸弹。对于Sun而言，这是将自己的三大支柱之一进行了开源，Solaris 未来如何发展令人关注。同样，关心开源软件的人士认为，开源的Solaris 可能对Linux 构成威胁。一时间，关于Solaris 开源的争论不断。 那么，Sun为什么要将Solaris开源?以什么方式开源? S u n 是怎么看待Solaris 的未来，对Linux有什么影响，这都成了众多Solaris用户、ISV(独立软件开发商)以及Linux 爱好者关心的问题。为此，本报记者采访了Sun公司负责操作平台部门的副总裁Glenn Weinberg 先生和Sun 公司负责软件部门的副总裁Tom Goguen 先生。</p><p><strong>问:Solaris 以什么授权协议开源?</strong></p><p>答:与Linux所采用的GPL协议不同，Sun 采用了CDDL 协议。与GPL 相比，CDDL 协议有三大优势:第一，在应用Solaris时，不要求ISV将自己的研发或者劳动成果进行回馈，他们可以选择不公开自己的源代码，保留自己的知识产权，从而为软件公司预留了发展空间。第二，Sun允许ISV免费应用所有与Solaris相关的专利，没有潜在的法律风险。作为对比，Linux目前还存在法律诉讼。第三，其他很多协议都首先受到美国法律的限制，而CDDL 协议则允许用户按照本地的法律来解决。例如，在中国的ISV 应用了Solaris产生了法律纠纷，就可以在中国的法庭解决，并且是适用中国的法律。</p><p><strong>问:Solaris 10 的源代码全部提供了么?</strong></p><p>答:到目前为止，Sun计划开放1000万行Solaris的源程序。Sun没有将每一行都开放的主要原因是，Sun仍旧有非常小的一部分源程序没有获得完全的知识产权，但Sun会将这些部分编辑好再提供给大家，使用户能够运行他们的程序。实际上，Sun希望能够尽快取得所有部分的知识产权，然后公开给大家。但其中的困难在于，Sun没有取得知识产权的部分很多都是与硬件相关联的，但硬件厂商可能希望保留在驱动方面的独占性，保留自己的知识产权，没有赋予 Sun开放这部分源代码的权利。但保证Solaris 10 的所有功能部分都已经开源了，例如动态跟踪功能、网格容器功能等等。</p><p><strong>问:Solaris从专用变成开源，对合作伙伴会有什么影响?</strong></p><p>答:ISV的回应都是正面的、积极的。很多ISV都已经在使用Solaris 10源程序，这使他们能够更好地理解Solaris 10，从而更方便地开发出其应用。另一方面，操作系统的安装量越大，对在其上进行开发的ISV 也越有利。显然，Solaris 10 开源以后，使用Solaris 的人肯定会大量增加。有一个比较有意思的统计数据可以与大家共享:在Solaris 10 开始产生到免费再到开源的过程当中，Sun获得了全新的50 多家ISV。</p><p><strong>问:Solaris 10 开源以后，其内核的开发速度是否会发生变化?</strong></p><p>答:Solaris 10 的进展很快，Sun有一个&ldquo;Solaris 10 特快&rdquo;活动，这是让一些用户在Solaris正式发布前进行试用。Sun在发展Solaris 的时候，非常注意操作系统的向前兼容性，例如Solaris 10 可以运行5年前、甚至10年前在老版本的Solaris上开发的程序，并且这些程序能够自动利用到新版本提供的功能，而无需对老的程序进行任何修改。作为对比，Linux并不是完全反向兼容的，当Linux的内核发生变化以后，原先开发的应用程序要利用新版本的新功能，就需要对程序重新改写了。</p><p>从技术更新的方面来说，Solaris可以分为两种不同的版本:针对开发者提供的版本，以及真正进入商用的成熟版本。实际上，Solaris快车活动在很大程度上就是针对开发者的。如果你在Kernal.org网站上看，红帽、红旗等公司的商业版本的时间间隔与Solaris 是非常接近的，都是1?3 年产生新的版本。</p><p>Solaris 特快车则是每2?3 周就会提供一个新版本。该计划已经存在18 个月了，大家一直在使用Solaris 10 并提出了反馈，这也最终形成了成熟的、商业版本的Solaris 10。这种反馈有多少呢? 18 个月内，网上有75 万次的试验版下载。</p><p><strong>问:开源以后Solaris 版本的控制由谁主持?</strong></p><p>答:从Linux 开放的角度看，似乎有成百上千的人能够为Linux贡献力量，但实际上，真正能够决定Linux核心的人只有一小部分。作为对比，Sun的Solaris 的创作环境并不是由一小撮人、一个小团队来决定Solaris 的核心。在Solaris 的开发过程中，就是由很多开发者把新的变化、新的功能的想法告知管理团队，如果变化合理，管理团队就会反馈给建议者，由建议者将这些新功能加入到程序当中去。团队只是审查建议是否合理，而不是由他们来修改、添加内核功能。因此，这个模式是一个非常有扩展性的模式，能够很自然地过渡到更大范围、更广义上的社区行为。同时，Sun并不想完全按照自己的意志去限定Solaris 10。尽管我们认为Solaris 已经有一个非常有扩展性的模式，但Sun 仍希望听取各方面的意见，并成立一个协会来更好地推广Solaris。</p><p><strong>问:在Sun提出了开放Solaris的方向时，有用户提出了在安全性方面的担忧。他们认为，封闭系统接触的人少，懂得的人也少，因此也相对安全。 Solaris开源以后，会否增加Sun 在安全方面的负担?</strong></p><p>答:首先我要声明，我并不认为规模与安全问题有直接关系。实际上，Solaris的源程序已经开放很多年了，只是没有现在这么正式、完整地提供给大家。从这些年Solaris 的开放可以看出，这并没有削弱Solaris 的安全性，安全性反而增强了。安全的关键在于，你是在建立系统之后再补遗拾缺地解决安全问题，还是在建设系统之前就已经把安全问题放在了一个很重要的先决条件上来考虑，这会产生完全不同的效果。实际上，大家都知道，最不开放的系统所产生的安全问题反而是最多的。 Solaris 在设计之前就是为网络服务的，因此将安全问题放在很重要的位置上。作为对比，Windows是为单击用户服务的，并没有考虑到网络问题，因此在网络应用上会出现很多漏洞。另一个例子是A p a c h e 与I I S 。在网络服务方面，Apache 是占据垄断地位的，IIS只占一小部分，但IIS发生的问题要比Apache多得多。</p><p><strong>问:有这么一种看法，Solaris是一个大系统，并没有多少人有能力触及Solaris的核心，开源社区对Solaris 的贡献将非常有限，更多的人将会去支持相对简单的Linux系统。您对这种说法有何评价?</strong></p><p>答:对一个大企业来说，需要操作系统要有一定复杂度，不能太简单。同时，从操作系统的内核角度来看，我并不认为Linux 的复杂度比Solaris 低多少。Sun建立一个新的开源的Solaris 社团，并不是为了挤掉Linux 社团，也不是为了挖Linux社团的墙角，而是为那些由于某些原因不愿意使用Linux的人提供一个新的选择。例如，可能有人不喜欢GPL 的授权模式、有人不满足于Linux所提供的功能，有人认为Linux的模式与自己的商业目的不符合等等。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/598/598/598.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=598</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=598&amp;key=3a7c9282</trackback:ping></item><item><title>Solaris性能监控的Swap空间管理</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/597/597/597.html</link><pubDate>Wed, 13 Jan 2010 12:36:49 +0800</pubDate><guid>http://www.7layer.cn/cat_28/597/597/597.html</guid><description><![CDATA[<p>本文介绍了在Solaris平台上Swap（交换）空间的基本概念、实现的原理以及对Swap（交换）空间进行监控的方法和调整的策略。<br /><strong>什么是SWAP（交换）空间</strong><br />对于一般的Solaris系统管理员来说，很少会接触Swap（交换）空间，在他们看来Swap区只不过是磁盘上的一两个分区或是几个Swap（交换）文件，当系统没有足够的物理内存来处理当前进程的时候，就利用Swap（交换）空间作为虚拟内存的临时存储空间，这种说法从技术角度来说是没有错的，但Solaris在实现Swap时有其非常独特的地方。&nbsp;&nbsp;</p><p><strong>SWAP空间作用</strong>&nbsp;&nbsp;&nbsp;</p><p>众所周知，现代操作系统都实现了&ldquo;虚拟内存&rdquo;这一技术，不但在功能上突破了物理内存的限制，使程序可以操纵大于实际物理内存的空间，更重要的是&ldquo;虚拟内存&rdquo;是隔离每个进程的安全保护网，使每个进程不受其他程序的干扰。&nbsp;&nbsp;</p><p>Swap空间的作用可简单描述为：当系统的物理内存不够用的时候，就需要将物理内存中的一部分空间释放出来，以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序，这些被释放的空间被临时保存到Swap空间中，等到那些程序要运行时，再从Swap中恢复保存的数据到内存中。这样，系统总是在物理内存不够时，才进行Swap交换。这种现象对于计算机使用者是经常遇到的。</p><p>有一点要声明的是，并不是所有从物理内存中交换出来的数据都会被放到Swap中（如果这样的话，Swap会不堪重负），有相当一部分的数据直接交换到文件系统。例如，有的程序会打开一些文件，对文件进行读写(其实每个程序都至少打开一个文件，那就是运行程序本身)，当这些程序的内存空间需要交换出去时，文件部分的数据就没有必要放到Swap空间中了，如果是读文件操作，那么内存数据直接就释放了，不需要交换出来，因为下次需要时，直接从文件系统就能恢复;如果是写文件，只需要将变化的数据保存到文件中，以便恢复。但是那些用malloc(3C)和new函数生成的对象的数据则不同，需要Swap空间，因为它们在文件系统中没有相应的&ldquo;储备&rdquo;文件，因此被称为&ldquo;匿名&rdquo; (Anonymous)的内存数据，这类数据还包括堆栈中的一些状态和变量数据等，所以说，Swap空间是&ldquo;匿名&rdquo;数据的交换空间。&nbsp;&nbsp;</p><p><strong>Swap的配置对性能的影响</strong>&nbsp;&nbsp;&nbsp;</p><p>太多的Swap空间会浪费磁盘的空间，而太少的Swap空间，系统则会发生错误。如果系统的物理内存用光了，你的系统就会跑得慢，但仍能运行；如果Swap空间用光了，那么系统就会发生错误。例如，Web服务器能根据不同的请求数量衍生出多个服务进程(或线程)，如果Swap空间用完，则服务进程无法进动，通常会出现&quot;application is out of memory&quot;的错误，严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。&nbsp;&nbsp;</p><p>通常情况下，Swap空间应大于或等于物理内存的大小，最小不应小于64M，通常Swap空间的大小应是物理内存的2－2.5倍(Solaris 2以上的版本有所变化，见下文)。但根据不同的应用，应有不同的配置：如果是小的桌面系统，只需要较小的Swap空间，而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器会随着访问量的增加，对Swap 空间的要求也会增加，具体配置参见各自服务器产品的说明。&nbsp;&nbsp;</p><p>另外，Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘I/O的操作，如果有多个Swap交换区，Swap空间的分配会以轮流的方式操作于所有的Swap，这样会大大均衡I/O的负载，加快Swap交换的速度。如果只有一个交换区，所有的交换操作会使交换区变得很忙，使系统大多数时间位于等待状态，效率很低，用性能监视工具就会发现，此时的CPU并不很忙，而系统却慢，这说明，瓶颈在I/O上，依靠提高CPU的速度是解决不了问题的。&nbsp;&nbsp;</p><p><strong>性能监视</strong>&nbsp;&nbsp;&nbsp;</p><p>Swap空间的分配固然很重要，而系统在运行时的性能监控却更加有价值，通过性能监视工具可以检查系统的各项性能指标，找到系统性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途。<br />最常用的是Vmstat命令，在大多数Unix平台下都有此命令，此命令可以查看大多数性能的指标。&nbsp;&nbsp;</p><p>另外使用swap －s 也能简单的查看当前swap资源的使用情况。例如：</p><p>#swap －s&nbsp;&nbsp;</p><p>total: 65896k bytes allocated ＋ 56840k reserved = 122736k used, 1069456k&nbsp;&nbsp;&nbsp;</p><p>available&nbsp;&nbsp;</p><p>能够方便的看出swap空间的已用和未用资源的大小。应该使Swap保持30％的负载以下，才能保证系统的良好性能。</p><p><strong>Solaris中Swap的特点</strong></p><p>虚拟Swap空间本来Swap空间就是为虚拟内存服务的，现在Solaris的Swap空间也成为虚拟，这到底是怎么回事呢？ 让我们看一个例子就明白了，当在Solaris 2以前版本的Solaris(或其它Unix， 如Linux)上编程时经常会出现一个问题：</p><p>假设系统当前还有可用的内存空间为30M，而只剩下10M的Swap空间了，这时，如果有一个进程开始运行并企图执行Malloc(15＊1024＊1024)的命令(分配15M空间)，这个进程会因为这个命令而失败。为什么呢？系统不是有30M可用的内存空间吗？原因在于：你的Swap空间不足，系统认为你在分配空间以后，没有能力(空间)在发生页面交换时，将这部分数据保存起来，因此认为你没有资格分配这块空间。这不是太不公平了吧！也许这15M空间根本不用交换，当前系统可是还有30M内存空间的富余啊!&nbsp;&nbsp;</p><p>还有更不公平的呢?有些大型系统配备了海量的内存，1G或4G，配了这么多内存就是为了避免交换，提高运行速度，可是系统还要为这个系统分配并不需要的Swap空间，占用了大量磁盘资源。为了弥补这个缺陷，Sun为Solaris 2 以后的版本设计了虚拟Swap空间。所谓虚拟的Swap空间，概念其实很简单，swap空间再也不是单指硬盘的分区或文件。虚拟Swap空间包含两个部分：部分物理内存和传统上的Swap分区。经过适当的配置，可以使系统需要Swap空间时，先使用内存部分的swap空间，如果内存部分的swap空间不够，再使用磁盘部分的Swap空间。这样，也许你硬盘上的Swap空间很少得到使用了，甚至根本不需要<br />Swap分区。&nbsp;&nbsp;</p><p><strong>Swap空间与TMPFS文件系统的关系</strong>&nbsp;&nbsp;&nbsp;</p><p>你知道吗？虚拟Swap空间与 /tmp目录有相当大的关系。Sun在实现/tmp目录时，充分考虑了应用程序运行的效率。许多应用程序，特别是数据库服务都会频繁使用 /tmp目录作为临时数据保存区，而Solaris将 /tmp目录下的文件都放在内存中而不是硬盘里，这样会大大提高应用程序的效率。 但是/tmp目录的空间是从系统虚拟空间里挤出来的，是虚拟Swap空间的一部分。如果说，你用完了/tmp空间，也就是用完了Swap空间，所以要小心监视系统的/tmp目录的使用情况，千万别用光了，否则系统会瘫痪!下面两点建议作为参考：&nbsp;&nbsp;</p><p>1.在Mount /tmp目录时，使用(－o Size)选项来控制/tmp目录的大小。</p><p>2.当使用编译器编译文件时，如果不想占用Swap空间，则用TMPDIR环境变量指向另外一个临时目录，而不是/tmp目录。</p><p><strong>增加Swap空间</strong>&nbsp;</p><p>1.成为超级用户 ＄su － root&nbsp;&nbsp;</p><p>2.创建Swap文件 ＃mkfile nnn[klblm] filename&nbsp;&nbsp;</p><p>如：</p><p>#mkfile 100m swapfile1&nbsp;&nbsp;</p><p>3.激活Swap文件</p><p>#/usr/sbin/swap －a /path/filename&nbsp;&nbsp;</p><p>Swap文件必须以绝对路径来指定，filename指的是上一步创建的文件。</p><p>4.现在新加的Swap文件已经起作用了，但系统重新启动以后，并不会记住前几步的操作。因此要在/etc/vfstab文件中记录文件的名字，和Swap类型，如：&nbsp;&nbsp;</p><p>/path/filename － － Swap － no －&nbsp;&nbsp;</p><p>5.效验Swap文件是否加上</p><p>/usr/sbin/swap －l&nbsp;</p><p><strong>删除多余的Swap空间</strong></p><p>1.成为超级用户&nbsp;&nbsp;</p><p>2.使用swap －d 命令收回swap空间。&nbsp;&nbsp;</p><p>#/usr/sbin/swap －d /path/filename&nbsp;&nbsp;</p><p>3.编辑/etc/ufstab文件，去掉此Swap(交换)文件的实体。&nbsp;&nbsp;</p><p>4.从文件系统中回收此文件。&nbsp;&nbsp;</p><p>#rm swap－filename&nbsp;&nbsp;</p><p>5.当然，如果此Swap(交换)空间不是一个文件，而是一个分区，则需创建一个新的文件&nbsp;&nbsp;</p><p>系统，再挂接到原来的文件系统上。　&nbsp;&nbsp;&nbsp;</p><p>例子：card.263.net&nbsp;&nbsp;</p><p>增加文件系统：在/etc/vfstab中增加&nbsp;&nbsp;</p><p>swap - /var/spool/postfix tmpfs - yes - (<a href="http://www.fanqiang.com/">http://www.fanqiang.com</a>)</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/597/597/597.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=597</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=597&amp;key=129f06f8</trackback:ping></item><item><title>Solaris中配置单网卡的Unix路由器</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/596/596/596.html</link><pubDate>Wed, 13 Jan 2010 12:35:38 +0800</pubDate><guid>http://www.7layer.cn/cat_28/596/596/596.html</guid><description><![CDATA[<p>我们一般认为，路由器连接在多个网络上，所以它应当对应每个网络有一块网卡和一个IP地址。然而在实际中可能会出现需建立一个内部网以解决Internet的IP地址不够用的情况，而工作站往往在自己的主板上又已集成了一块网卡。如何利用现有的资源设置路由器呢？似乎不好办，然而事实上单网卡工作站也可以配成TCP/IP网络路由器。在装有Solaris2.x操作系统的SUN工作站上，可以采用下述方法来配置。</p><p>一、配置路由器接口 <br />1.创建/etc/hostname.interface文件 <br />对应每个连接的网络均应有一个hostname.interface文件，其中interface为网卡的代号名。对多网卡的情况interface应不相同，但对单网卡路由器而言，这些文件的interface是相同的。怎么区别这些文件呢？可以创建hostname.interface:n文件，用n作区别来虚拟多个网卡。计算机启动时将检测此类文件的个数，如果找到多个hostname.interface文件则认为是路由器，否则认为是主机。例如一台SUN工作站连接了Internet网和内部网，则可对应创建两个文件分为hostname.le0和hostname.le0:2。</p><p>2.为接口分配主机名</p><p>在以上的每个hostname.interface文件中，加入主机名，必须注意对应不同的网络接口，即同一主机须用不同的主机名以区别不同的IP地址。对于上例，用vi命令编辑两文件分别填入sun1和sun2，实际上是一台主机。</p><p>3.在/etc/inet/hosts中加入主机名和IP地址，格式为：</p><p>IPaddresshostname <br />202.114.209.37sun1 <br />180.114.20.1sun2</p><p>注意IP地址是网卡连接的对应多个网络的不同的IP地址，其中202.114.209.37是主机在Internet上的合法地址，而180.114.20.1则是内部网上自己分配的地址，内部网上的IP地址不必担心与Internet上重名的IP地址发生冲突，因为上级网关将视其非法并拒绝给予服务。</p><p>4.修改/etc/inet/netmasks文件</p><p>如果路由器与子网相连，还应修改/etc/inet/netmasks并填入本地网号（如129.9.0.0）与屏蔽号（如255.255.255.0）。</p><p>二、路由协议选择</p><p>可采用静态路由协议或动态路由协议如路由信息协议（RIP）和ICMP寻径协议（RDISC）。</p><p>选用动态路由协议，则可将/etc/defaultrouter文件置为空。路由器将自动与RIP和RDISC交谈，这些协议跟踪路由器并广播路由信息，让路由器在本地文件模式下工作。这将保证在网络服务器的配置失效后，路由器可以照常工作。</p><p>若选择静态协议，只需在/etc/defaultrouter文件中填入缺省路由器名，这样当Unix路由器找不到寻径路由时便将IP包发往缺省路由器。如本例用misrouter作缺省路由器，还需在/etc/inet/hosts中加入其IP地址：202.114.209.19和机器名：misrouter。</p><p>三、重新启动计算机</p><p>计算机启动时，系统内部将调用ifconfig命令对所连接的多个网络进行接口配置，并检测到有多个hostname.interface文件存在，于是计算机认为自己作路由器。<br /><br />一个单网卡的路由器便配成了，所有的内部网上计算机可以用内部IP地址通信，不受所分配的有限IP地址限制，而与Internet的通信则通过单网卡的Unix路由器进行。可见它虽是单网卡，却有多个IP地址，实质是利用虚拟接口文件hostname.interface:n来&ldquo;冒充&rdquo;多网卡。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/596/596/596.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=596</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=596&amp;key=92e292d8</trackback:ping></item><item><title>Solaris下实现socks5代理</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/595/595/595.html</link><pubDate>Wed, 13 Jan 2010 12:32:15 +0800</pubDate><guid>http://www.7layer.cn/cat_28/595/595/595.html</guid><description><![CDATA[<p>刚开始找了一下，发现全是在linux下实现的，我按照readme步骤在rh9下作了一遍，用系统默认的gcc很容易的就搞定了。这里强调的gcc编译器是一个比较关键环节。先用gcc3.3是没有装过去主要问题出在<varvars.h></varvars.h>和ftp上面。没办法，找个gcc3.4准备看一下，结果解压的时候出现校验和错误，我是bin方式上传的啊，搞不懂了，先不管这个了。后来仔细了解后发现gcc2。9系列的在rh9下没有问题。好家伙，好歹要找个for-solaris-sparc的话，找到一个接近版本gcc-2.95.3-pkg.zip。好了罗嗦半天了，就是要这个东东。</p><p>当然在solaris8下的话，直接装就可以了，因为sunfreware有for这个东东，但是gcc有什么要求吗？一句话---不知道！！s9下还有哪个gcc版本可以呢，也不知道，知道的告诉我哦！</p><p>下载编译器gcc-2.95.3-pkg.zip（<a href="http://www.sunfreeware.com/">www.sunfreeware.com</a>），解压后得到安装包SFWgcc（这个编译器是要SFW支持）的。安装这个包： <br />#pkgadd &ndash;d SFWgcc <br />默认的安装目录是/opt/sfw，为正确使用这个编译器而设置环境变量： <br />#PATH=/opt/sfw/bin:/usr/local/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:. <br />#export</p><p>1. 下载socks5安装包，一搜一大堆，现在可能有两个大的区别一个是在win下一个是unix下的，后面我给出的这个包名字有的网站上说只在linux下能用，不要管他这一套，继续就是了（其实for solaris8也就是这个了。另外据我所知socks5几乎可以在任何系统下实现的，自己去实验吧）。将socks5安装包socks5-v1.0r11.tar.gz以bin方式上传到RH9/solaris9服务器上。</p><p>2. 解压缩软件包 <br />　#gunzip socks5-v1.0r11.tar.gz <br />　#tar xvf socks5-v1.0r11.tar</p><p>3. 开始编译 <br />　#cd socks5-v1.0r11 <br />　#./configure --with-threads</p><p>说明：可以根据需要参考readme来作配置，也可在安装后进行配置（推荐这样就可以了，搞了几个别的配置出错了，怕怕啊）。 <br />#make <br />#make install</p><p>4. 建立/etc/socks5.conf（许多文件都自己建吧，装完后我是没有看到自动生成的）</p><p>需要达到的目的：在局域网段(192.168.0)内提供代理服务，要求提供用户名和密码。要使用用户验证，首先要建立/etc/socks5.pwsswd文件,内容为： <br /># vi /etc/socks5.passwd <br />　&nbsp; userA passwdA （userA代表用户名。passwdA代表用户userA的密码）</p><p>完成/etc/socks5.conf配置文件：<br />#vi /etc/socks5.conf <br />　auth - - u <br />　permit u - 192.168.0. - - -</p><p>注：若改变u和192.168.0.为-，则允许任何用户（不需要用户名和密码）的任意ip使用代理服务；192.168.0.等同于192.168.0.0/255.255.255.0，这个字段同样可以设定某一个ip来使用代理服务。</p><p>在解压目录socks5-v1.0r11下的examples目录下提供了几个常用的配置文件内容，可以参考使用。 <br />#cd examples <br />#ls <br />sock5.conf.dualhomed sock5.conf.gssapi sock5.conf.multipleservers sock5.conf.server2server sock5.conf.singlehomed 。。。。 &nbsp;&nbsp; 每一个配置文件的后缀说明了它所面向的服务内容，需要时可根据其内容作适当更改。 <br />5. 运行代理服务： <br />　#socks <br />在第一次装好socks5之后可以通过运行#/usr/local/bin/socks5 &ndash;f &ndash;s来测试代理服务能否正常运行，如果出现02716:Socks5 starting at Thu May 20 20:33:58 2004 in normal mode，则表示可以正常运行。 <br />6. 停止socks5，只要运行stopsocks -KILL就行，socks5就会停止！ <br />7. 高级配置 <br />7.1 使用非默认端口：如果想让socks5服务启动的时候不启动默认监听端口1080，比如为8888，可以运行如下命令 <br /># socks5 -b 8888 <br />相应的关服务命令为： <br /># stopsocks -p 888 -KILL <br />7.2 为了密码文件的安全，使用自建的密码文件，比如/etc/myc.passwd。这时，只要修改/etc/socks5.conf文件，在其中新加一条项数： <br />set SOCKS5_PWDFILE /etc/myc.passwd <br />7.3 指定SOCKS v5绑定的ip地址和监听的端口。如果不指定绑定的IP将使用0.0.0.0 <br />set SOCKS5_BINDINFC 192.168.0.8:1080 <br />7.4 忽略ident请求。当客户机没有运行identd时，使用SOCKS5_NOIDENT将降低超时值 <br />set SOCKS5_NOIDENT <br />7.5 指定连接停顿最长时间。超过最大值后，socks5断开连接 <br />set SOCKS5_TIMEOUT 15 <br />7.6 socks5将接受SOCKS V4 协议的请求,默认不接受 <br />set SOCKS5_V4SUPPORT <br />7.7 指定同时存在的最大子进程数,Socks5预设为64 <br />set SOCKS5_MAXCHILD 4 <br />8. 添加自动启动服务和日志记录 <br /># /usr/local/bin/socks5　-t　-s　2&gt;　/var/log/socks5 <br />#echo　&quot;/usr/local/bin/socks5　-t　-s　2&gt;　/var/log/socks5&quot;　&gt;&gt;　/etc/rc2.d/rc.local <br />如果是linux则改rc2.d为rc.d <br />附录，socks5 server配置文件（只要定制好自己的配置方式后，将条目写到/etc/socks5.conf中即可。有人用cp example目录下的文件方法来生成配置文件，个人不提倡这样，反正我也出现过错，自己按格式来保证不出错）。<br />socks5.conf通常由以下几个方面的内容构成： <br />－ban host：定义拒绝服务的客户列表 <br />－authentication：定义Socks5服务器使用的用户认证方法 <br />－interface：定义Socks5服务器绑定的ip地址和服务端口 <br />－variables and flags：定义Socks5服务器运行的环境 <br />－proxies：定义客户可以通过Socks5服务器访问的地址列表以及Socks5服务器访问这些地址的方法 <br />－access control：定义Socks5服务器接受或拒绝客户连接的规则 <br />下面我们分别来讲述这些条目对应的语法： <br />ban host <br />语法：ban source-host source-port <br />说明：Socks5服务器将拒绝接受来自source-host:source-port的客户连接。 <br />authentication <br />语法：auth source-host source-port auth-methods <br />说明：对于来自source-host:source-port的客户连接，Socks5服务器将使用</p><p>auth-methods所定义的用户认证方法。对于没有定义认证方法的客户将使用任何可以使用的认证方法。 <br />interface <br />语法：interface hostpatern portpattern interface-address <br />说明：来自source-host:source-port的客户连接由interface-address处理；目的地址为source-host:source-port的客户连接由Socks5 代理服务器从 interface-address发出连接请求。 <br />variables <br />语法：set variable value <br />说明：定义Socks5运行参数，Socks5有以下一些常用的运行参数： <br />SOCKS5_BINDINTFC host:port <br />host:port 指定socks5运行的主机和端口号，用于代替缺省的端口。忽略时，socks5用0.0.0.0作为主机值。 <br />SOCKS5_CONFFILE filename <br />Filename 指定配置文件。在许多系统中，缺省是/etc/socks5.conf。在运行socks5之前，设置这个变量。如果有多个socks5 daemon运行，为每个daemon使用不同的配置文件。 <br />SOCKS5_DEMAND_IDENT&nbsp;<br />当客户没有响应ident 请求时，认证失败。使用SOCKS5_DEMAND_IDENT确认每个连接有一个关联的用户名。 <br />SOCKS_ENCRYPT&nbsp;<br />如果可能的话，请求下一个socks5进程加密数据。SOCKS5_ENCRYPT 仅仅在编译socks5时包括了GSS-API认证时，才有意义。 <br />SOCKS5_FORCE_ENCRYPT&nbsp;<br />当认证方式支持加密时，强迫客户加密数据。 <br />SOCKS5_IDENTFILE filename&nbsp;<br />Filename指定存储ident信息的文件名。在许多系统中，缺省是/tmp/socks5.ident。当有多个socks5 daemon运行时，SOCKS5_IDENTFILE非常有用。 <br />SOCKS5_MAXCHILD val&nbsp;<br />val指定同时存在的最大子进程数。Socks5预设为64。可以降低预设置。不能超过64。Socks5运行在线程模式时，忽略此参数。当运行在oneshot或inetd模式时，此参数不发生作用。 <br />SOCKS_NOIDENT&nbsp;<br />忽略ident请求。当客户机没有运行identd时，使用SOCKS5_NOIDENT将降低超时值。 <br />SOCKS_NOINTCHK&nbsp;<br />请求下一个socks5进程执行没有完整检查的代理请求。只有在编译时加入GSS-API认证时，SOCKS5_NOINTCHK才发生作用。 <br />SOCKS_NONETMASKCHECK&nbsp;<br />指示daemon忽略检查主机的子网掩码。缺省时，daemon检查掩码，如果在同一子网时，在检查配置文件之前，直接连接。 <br />SOCKS5_REVERSEMAP&nbsp;<br />总是试图影射地址到主机名。缺省时，socks5只有当主机名或域名在配置文件中使用时才影射。设置后，log文件将纪录主机名，这将降低性能。 <br />SOCKS5_SERVICENAME <br />总是影射端口号到服务名。缺省时，socks5只有当服务名在配置文件中使用时才影射。设置后，log文件将纪录服务名，这将降低性能。 <br />SOCKS5_PASSWD [password]&nbsp;<br />当socks5 daemon连接到其它socks服务器时，如果采用Username/Password 认证，用它来指定密码。 <br />SOCKS5_PIDFILE filename&nbsp;<br />指定存储socks5进程ID的文件名。Socks5缺省存贮PID在/tmp/socks5.pid。你可以用&mdash;bindintfc参数或设置SOCKS5_BINDINTFC环境变量运行socks5在不同于缺省端口的其它端口。当运行在不同于缺省端口的其它端口时，socks5存贮PID在/tmp/socks5.pid-port。 <br />SOCKS5_PWDFILE filename&nbsp;<br />指定密码文件。在许多系统中，缺省是/etc/socks5.passwd。 <br />SOCKS5_TIMEOUT minutes <br />指定连接停顿最长时间。超过最大值后，socks5断开连接。忽略此值时，缺省是15。 <br />SOCKS5_UDPPORTRANGE port1-port2&nbsp;<br />指定一个Socks5用来发送UDP包的UDP端口范围。 <br />SOCKS5_USER [user id] <br />当socks5 daemon连接到其它socks server时，如果采用Username/Password认证，用此变量指定用户名。</p><p>SOCKS5_V4SUPPORT <br />缺省时，socks5只接受SOCKS5协议(rfc 1928)的请求。设此变量后，socks5将接受SOCKS V4 协议的请求。 <br />proxies <br />语法：proxy-type dest-host dest-port proxy-list <br />说明：当客户请求的目的为dest-host:dest-port时，Socks5将使用proxy-list中的代理服务器请求数据。 <br />access control <br />语法：permit auth cmd src-host dest-host src-port dest-port [user-list] <br />deny auth cmd src-host dest-host src-port dest-port [user-list] <br />说明：通过这两条语句所定义的规则来进行客户访问控制。 <br />我们再对以上语法作进一步的解释： <br />host的表示方法： <br />-：表示任意主机 <br />n1.：表示n1.0.0.0/255.0.0.0 <br />n1.n2.：表示n1.n2.0.0/255.255.0.0 <br />n1.n2.n3.：表示n1.n2.n3.0/255.255.255.0 <br />.domain.name：表示主机名以.domain.name结尾的主机 <br />some.domain.name：表示主机名为some.domain.name的主机 <br />port的表示方法 <br />-：表示任意端口 <br />service name：用/etc/service中定义的服务名来表示，如telnet <br />port number：直接指定数字端口，如80 <br />[port_start，port_end]：指定一个端口范围，如[1024,6000]表示从端口1024到6000，（1024，6000）表示从端口1025到5999 <br />auth的值 <br />n：无用户认证 <br />u：使用username/password用户认证方法 <br />k：使用Kerberos用户认证方法 <br />-：使用任何可用的用户认证方法 <br />cmd的值 <br />-：任何命令 <br />c：connect <br />b：bind <br />u：UDP <br />p：ping <br />t：traceroute <br />user的值 <br />-：任何用户 <br />proxy的值 <br />socks5： Socks 5 <br />socks4： SOCKS 版本4 <br />noproxy：不使用代理而直接连接 <br />server的值 <br />host： 指定服务器的hostname，使用缺省服务端口 <br />host:port：指定服务器的hostname和该服务的监听端口</p><p>&nbsp;</p><p>(&nbsp;责任编辑：Huxr)</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/595/595/595.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=595</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=595&amp;key=d2fe41fb</trackback:ping></item><item><title>在Solaris下安装Oracle9i</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/594/594/594.html</link><pubDate>Wed, 13 Jan 2010 12:31:20 +0800</pubDate><guid>http://www.7layer.cn/cat_28/594/594/594.html</guid><description><![CDATA[<p>首先解释一下我的实验环境:一台Ultra 10, 系统是Solaris 8, 在XP上使用Xmanager操作.(我的机子内存是256M,当时用了一天一夜,所以大家要有强烈的心理准备!) Solaris 的安装就不用细说了吧! 咱们直接进入正题吧!<br /><strong>一. 添加系统参数和相应的用户/组</strong><br />1. 修改系统参数,编辑 /etc/system文件<br /># cp /etc/system system.bkp //修改前,最好先备份,行成好习惯<br /># vi /etc/system<br />forceload: sys/shmsys<br />set shmsys:shminfo_shmmax=67108864 //这些数值不是固定的,可自己指定,以下同<br />set shmsys:shminfo_shmmin=1<br />set shmsys:shminfo_shmmni=400<br />set shmsys:shminfo_shmseg=200<br />forceload: sys/semsys<br />set semsys:seminfo_semmns=400<br />set semsys:seminfo_semmni=100<br />set semsys:seminfo_semmsl=200<br />set ulimit=3000000 <br />2.修改文件/etc/services<br /># vi /etc/services<br />orasrv 1600/tcp #oracle<br />listener 1700/tcp #oracle<br />3.创建用户/组<br /># groupadd dba //添加一个dba组<br /># useradd -c oracle -g dba -d /home/oracle -m -s /bin/bash oracle //添加一个oracle用户<br /># passwd oracle //修改用户的密码<br /># sync<br /># sync // 保存修改的文件后,重启系统使参数生效<br /># reboot<br /><strong>二. 修改用户的环境变量</strong><br />su - oracle<br />$ vi .bash_profile<br />#bash profile<br />umask 022<br />ULIMIT=3000000<br />ORACLE_SID=ota //根据实际情况定<br />ORACLE_BASE=/home/oracle<br />ORACLE_HOME=$ORACLE_BASE/product/9.2<br />ORACLE_TERM=sun5<br />export ULIMIT ORACLE_SID ORACLE_BASH ORACLE_HOME ORACLE_TERM<br />PATH=$PATH/ORACLE_HOME/bin:.<br />export PATH<br />$ .bash_profile //保存文件后执行,使环境变量生效<br />$ mkdir product //oracle安装程序也会自己添加<br />$ cd product<br />$ mkdir 9.2<br /><strong>三. 安装oracle9i</strong><br />1. 退出,以oracle用户身份登陆,检查磁盘空间.<br />2. 将 oracle9i 的第一张CD放入CD-ROM中,开始安装<br />$cd /<br />$ /cdrom/disk1/runInstaller //在安装时关闭所有访问光驱的窗口,并不能进入CD目录下执行runInstaller程序;否则不能换盘.<br />3. oracle Universal Installer启动WELCOME界面,点击&quot;NEXT&quot;<br />4. 进入&quot;Inventory&quot;界面,使用缺省路径,点击OK<br />5. 进入&quot;Unix Group Name&quot;界面,组名输入&quot;dba&quot;,点击NEXT,有对话框跳出,按提示用root用户执行/tmp/orainstRoot.sh脚本.在 /var/opt/oracle中生成oraInst.loc文件,以root用户运行/tmp/oraInstall/orainstRoot.sh脚本.在/home/oracle中创建oraInvertory目录. <br />6. 进入&quot;File Locations&quot;界面,其中&quot;Destination...&quot;为缺省ORACLE_HOME所指的路径.点击NEXT.<br />7. 进入&quot;Available Products&quot;界面,选择第一项&quot;Oracle9i Database&quot;,点击右下角&quot;products Languages&quot;,选择&quot;Simplified Chinese&quot;,NEXT.<br />8. 进入&quot;Installation Types&quot;界面,如想最大化安装,选&quot;Enterprise Edition&quot;,自由选择则&quot;Custom&quot;,点击NEXT.<br />9. 进入&quot;Datebase Configuration&quot;界面.注意:应选择&quot;Customized&quot;,可以对数据库进行个性化创建,如:数据文件大小,位置等,NEXT.<br />10.进入&quot;Operating System Groups&quot;界面,对于OSDBA和OSOPER框输入dba.<br />11.指定Global Database Name和SID,点NEXT. //在这要注意,Name和SID一定要和指定的相同,ota<br />12.如第8步选&quot;Custom&quot;,则会有产品列表,选择完成后,点NEXT.<br />13.&quot;Summary&quot;界面,总结要安装的内容,确认后,点NEXT.<br />14.开始安装,时间比较长,其中会提示换盘,在提示中要修改PATH为:/cdrom/disk2 &amp; /cdrom/disk3.<br />15.&quot;Install Successful&quot;后,会有对话框提示:以root身份运行/home/oracle/product/9.2/root.sh脚本,Enter the full pathname of the local bin directory : y . //在/usr/local/bin中生成一些命令,在/var/opt/oracle中生成oratab文件.<br />16.开始创建数据库. //这一步在我的256M的机器上特别的慢,实在是让人忍不可忍啊.哈哈!<br />17.弹出&quot;Net Configuration Assistant&quot;界面,选中&quot;perform typical configuration&quot;项,进行网络的典型配置.<br />18.安装完毕.<br /><strong>四. oracle的启动与关闭</strong><br />Oracle9i与8i不同,去掉了SVRMGRL工具,数据库的启停只能用sqlplus.<br />$sqlplus /nolog<br />SQL&gt;connect / as sysdba<br />已连接.<br />SQL&gt;startup(或shutdown)<br />启动监听<br />$lsnrctl start<br />停止监听<br />$lsnrctl stop<br /><strong>五. Oracle 服务器在操作系统启动时自动开始</strong><br />(这里说明一下,下面的办法只可参考,不一定试用每一个实例的!)<br />1. 修改文件/var/opt/oracle/oratab<br />su - oracle<br />$ cd /var/opt/oracle<br />$ vi oratab //将ota:/home/oracle/product/9.2:N中最后的N修改为Y<br />2. 编写启动脚本/etc/init.d/dbora<br />su - root<br />$ cd /etc/init.d<br />$ vi dbora<br />ORACLE_HOME=/home/oracle/product/9.2<br />ORACLE_OWNER=oracle<br />if [ ! &quot;$1&quot; ]; then echo &quot;no parameter&quot;; exit; fi<br />if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME]<br />then<br />echo &quot;Oracle startup: cannot start&quot;<br />exit<br />fi <br />case &quot;$1&quot; in<br />'start')<br />su - $ORACLE_OWNER -c &quot;$ORACLE_HOME/bin/dbstart&quot;<br />su - $ORACLE_OWNER -c &quot;Isnrctl start listener&quot;<br />;;<br />'stop')<br />su - $ORACLE_OWNER -c &quot;$ORACLE_HOME/bin/dbshut &amp;&quot;<br />su - $ORACLE_OWNER -c &quot;lsnrctl stop listener &amp;&quot;<br />sleep 30 #give datebase some time to shutdown<br />;;<br />esac<br />$ ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora<br />$ ln -s /etc/init.d/dbora /etc/rc2.d/S99dbora<br />$ reboot // 重启系统检查<br /><strong>六. Oracle常用命令</strong><br />dbca - 用于创建,删除,管理oracle实例<br />oemapp dbassist - Database Configuration Assistant 用于数据库的管理(创建,修改,删除)<br />netca - Net8 Configuration Assistant 用于数据库服务器网络服务的配置</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/594/594/594.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=594</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=594&amp;key=503473c8</trackback:ping></item><item><title>在Solaris8上安装SSH</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/593/593/593.html</link><pubDate>Wed, 13 Jan 2010 12:30:03 +0800</pubDate><guid>http://www.7layer.cn/cat_28/593/593/593.html</guid><description><![CDATA[<p>安装步骤<br />初始步：得到Solaris 8的random补丁<br />到<a href="http://www.ccert.edu.cn/pub/safetools/ssh/112438-01.zip">112438-01.zip</a>得到补丁，解压补丁包后，根<br />据补丁目录下的README文件指示安装补丁，要使补丁起效必须重启系统（boot -r）。<br /><br />第一步：获得安装包<br />从这你可获得安装包，对于SPARC系统<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/openssh-3.5p1-sol8-sparc-local.gz">openssh-3.5p1-sol8-sparc-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/openssl-0.9.6g-sol8-sparc-local.gz">openssl-0.9.6g-sol8-sparc-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/tcp_wrappers-7.6-sol8-sparc-local.gz">tcp_wrappers-7.6-sol8-sparc-local.gz</a> (可选，但推荐安装) <br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/zlib-1.1.4-sol8-sparc-local.gz">zlib-1.1.4-sol8-sparc-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/libgcc-3.2-sol8-sparc-local.gz">libgcc-3.2-sol8-sparc-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/perl-5.6.1-sol8-sparc-local.gz">perl-5.6.1-sol8-sparc-local.gz</a> (可选)<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/prngd-0.9.25-sol8-sparc-local.gz">prngd-0.9.25-sol8-sparc-local.gz</a> (可选)<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/egd-0.8-sol8-sparc-local.gz">egd-0.8-sol8-sparc-local.gz</a> (可选)<br />对于Intel系统：<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/openssh-3.5p1-sol8-intel-local.gz">openssh-3.5p1-sol8-intel-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/openssl-0.9.6g-sol8-intel-local.gz">openssl-0.9.6g-sol8-intel-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/tcp_wrappers-7.6-sol8-intel-local.gz">tcp_wrappers-7.6-sol8-intel-local.gz</a> (可选，但推荐安装) <br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/zlib-1.1.4-sol8-intel-local.gz">zlib-1.1.4-sol8-intel-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/libgcc-3.2-sol8-intel-local.gz">libgcc-3.2-sol8-intel-local.gz</a><br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/perl-5.6.1-sol8-intel-local.gz">perl-5.6.1-sol8-intel-local.gz</a> (可选)<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/prngd-0.9.25-sol8-intel-local.gz">prngd-0.9.25-sol8-intel-local.gz</a> (可选)<br /><a href="http://www.ccert.edu.cn/pub/safetools/ssh/egd-0.8-sol8-intel-local.gz">egd-0.8-sol8-intel-local.gz</a> (可选) <br />假如你已经安装了其中一些包的话，可以跳过下载，但是很多包都是最新的。<br /><br />第二步：安装软件包<br />文件下载完之后，进入下载目录并运行如下命令（此以sparc系统为例，如是Intel系统，换为<br />Intel文件即可）：<br /># gunzip openssh-3.5p1-sol8-sparc-local.gz<br /># gunzip openssl-0.9.6g-sol8-sparc-local.gz<br /># gunzip zlib-1.1.4-sol8-sparc-local.gz<br /># gunzip libgcc-3.2-sol8-sparc-local.gz&nbsp; (假如你还未安装gcc 3.2)<br /># gunzip tcp_wrappers-7.6-sol8-sparc-local.gz (可选)<br /><br />其他可选包也可同样操作，然后用root权限运行如下命令<br /><br /># pkgadd -d openssh-3.5p1-sol8-sparc-local<br /># pkgadd -d openssl-0.9.6g-sol8-sparc-local<br /># pkgadd -d zlib-1.1.4-sol8-sparc-local<br /># pkgadd -d libgcc-3.2-sol8-sparc-local (假如你还未安装gcc 3.2)<br /># pkgadd -d tcp_wrappers-7.6-sol8-sparc-local (可选)<br />一旦你已经安装了以上包后，在目录/usr/local下你将得到很多子目录。ssl文件的默认路径是<br />/usr/local/ssl。当这些文件被编译为不将目录（/usr/local/lib和/usr/local/ssl/lib）加入<br />LD_LIBRARY_PATH，那可能将需要设置它们。现在你将可以在目录/usr/local/bin中找到ssh在目<br />录/usr/local/sbin中找到sshd。确定你将目录/usr/local/bin和目录/usr/local/sbin加到了你<br />的PATH环境变量中。在可选的egd包中的perl脚本程序（.pl后缀）将要在目录/usr/local/bin中<br />寻找perl。假如你使用的是Sun Perl，那么Perl脚本程序开头改为/usr/bin，然而使用安装包的<br />为/usr/local/bin<br /><br />第三步：建立sshd用户和/var/empty目录<br />openssh 3.5p1中采用了一种新的安全方式被称为特权分隔。具体内容你可以查看在openssh的源<br />文件目录中的README.privsep文件。现在这种方式在openssh中为默认设置。在进行之前你应该<br />阅读一下README.privsep文件，然后在用root权限执行这些步骤：<br /># mkdir /var/empty<br /># chown root:sys /var/empty<br /># chmod 755 /var/empty<br /># groupadd sshd<br /># useradd -g sshd -c 'sshd privsep' -d /var/empty -s /bin/false sshd<br /><br />/var/empty 不应该包含任何文件.<br />假如你没有做这一步并试图启动sshd的话，你将得到error信息并且守护进程不会运行。<br /><br />第四步：安装tcp_wrappers<br />tcp_wrappers是被用来限制某些有限组机器访问你的通信端口，例如sshd程序使用的22端口。假<br />如你已经运行了tcp_wrappers，那么你只要确定sshd守护进程条目是否在/etc/hosts.allow和<br />/etc/hosts.deny文件中。假如你当前没有运行tcp_wrappers，你首先应该创建文件<br />/etc/hosts.deny并在文件中加入一行<br />sshd:ALL<br />然后，创建文件/etc/hosts.allow并加入一行，例如<br />sshd:...<br />&quot;...&quot;处填写你允许与你的机器通信的IP列表，例如<br />sshd:202.112.117.<br />此例说明允许202.112.117.子网的机器访问你的机器。<br /><br />第五步：安装ssh和sshd<br />这是最后一步。每一台你想通过ssh客户端进行通信的机器都需要运行一个sshd守护进程。但是<br />首先，你需要在服务器机器上运行下面的命令来创建秘钥信息。再次确定目录/usr/local/bin和<br />/usr/local/sbin是否在你的PATH中。假如你以前曾经运行过sshd并且在/usr/local/etc下有秘<br />钥，那么运行下面这些命令将会覆盖它们。用root权限，输入：<br /># ssh-keygen -t rsa1 -f /usr/local/etc/ssh_host_key -N &quot;&quot;<br /># ssh-keygen -t dsa -f /usr/local/etc/ssh_host_dsa_key -N &quot;&quot;<br /># ssh-keygen -t rsa -f /usr/local/etc/ssh_host_rsa_key -N &quot;&quot;<br />每一条命令可能要花费几分钟的事件，这取决于你机器的速度。等到每条命令结束为止。<br /><br />完成之后，我们可以创建脚本来启动sshd守护进程。下面编辑一个简单的启动脚本，并把它放置<br />在/etc/init.d目录下（root权限）：<br /><br />#!/bin/sh<br /><br />pid=`/usr/bin/ps -e | /usr/bin/grep sshd | /usr/bin/sed -e 's/^&nbsp; *//' -e 's/ .*//'`<br />case $1 in<br />'start')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/local/sbin/sshd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />'stop')<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ &quot;${pid}&quot; !=&quot;&quot; ]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /usr/bin/kill ${pid}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />*)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo &quot;usage: /etc/init.d/sshd {start|stop}&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;;<br />esac<br /><br />然后运行如下命令：<br /># chown root /etc/init.d/sshd<br /># chgrp sys /etc/init.d/sshd<br /># chmod 555 /etc/init.d/sshd<br /># ln -s /etc/init.d/sshd /etc/rc2.d/S98sshd <br /><br /># /etc/rc2.d/S98sshd start <br />通过上面这条命令可以手工启动进程<br /># /etc/rc2.d/S98sshd stop <br />此条命令将停止sshd守护进程<br /># ps -e | grep sshd <br />此条命令可以查看是否启动了sshd<br /><br />至此完成了ssh的安装。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/593/593/593.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=593</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=593&amp;key=e49ccdf5</trackback:ping></item><item><title>SOLARIS下SSH的安装和自动运行</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/592/592/592.html</link><pubDate>Wed, 13 Jan 2010 12:25:42 +0800</pubDate><guid>http://www.7layer.cn/cat_28/592/592/592.html</guid><description><![CDATA[<p><span class="content">先用FTP到<a href="ftp://ftp.sunfreeware.com/">ftp.sunfreeware.com</a>网站上down个 ssh-3.2.5.tar.gz.到/opt下 </span></p><p>#gunzip ssh-3.2.5.tar.gz<br />#tar &ndash;xvf ssh-3.2.5.tar<br />#ln &ndash;s ssh-3.2.5 ssh<br />#cd ssh<br />#./configure<br />#make<br />#make install<br />#make clean<br />#ssh-keygen2 -b 1024</p><p>要输入密码，给它就行了。我也不知道用做什么。</p><p>#touch /etc/init.d/autossh<br />#vi /etc/init.d/autossh</p><p>echo &quot;now the ssh will be started automaticly&quot;<br />SSH_HOME=/opt/ssh<br />export SSH_HOME<br />su - root -c &quot;$SSH_HOME/startup/solaris/sshd2 start&quot; $<br />echo &quot;ssh start has be done&quot;</p><p>#chmod 777 /etc/init.d/autossh<br />#ln &ndash;s /etc/ini.d/autossh /etc/rc2.d/S99sshd<br />#chmod 744 /etc/rc2.d/S99sshd</p><p>重启就行了。在客户端用SSH（WINDOWS）就行了。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/592/592/592.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=592</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=592&amp;key=a5b45748</trackback:ping></item><item><title>Solaris到Linux应用的移植</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/591/591/591.html</link><pubDate>Wed, 13 Jan 2010 12:23:52 +0800</pubDate><guid>http://www.7layer.cn/cat_28/591/591/591.html</guid><description><![CDATA[<p>移植需要考虑的几个相关的因素：</p><pre>o 编译器语言o 代码中与硬件相关的因素（如字长或字节尾附属物）o 平台运行时服务o 构建工具附属物o 可用的数据库、联网条件和消息传递中间件o 用户界面可移植性o 测试案例和测试环境</pre><p>移植工作的规模和复杂性将与系统和环境相关的代码直接成正比。如果应用程序只使用标准语言构件和标准库，而且并不一定要在 SPARC 处理器上的 Solaris 下运行，那么移植就相对容易一点。举例来说，Java 应用程序通常就属于这个范畴。另一方面，如果应用程序是不使用 Solaris 上的 POSIX 服务的 C 程序，或者依赖于 Linux 上没有的第三方产品，那么移植工作就困难多了。当您移植应用程序时，很多情况下您都是在将不可移植的方法和附属物替换成可移植性更好的东西。您会将 Solaris 构建工具替换成 GNU 工具，并使用与 POSIX 相容的线程库代替 Solaris 中对应的库。因为这些工具和接口在 Solaris 上也能找到，所以您可以继续自由地使用 Solaris，甚至在将开发平台移植到 Linux 之后继续把握 Solaris 市场。</p><p><strong>步骤 1：</strong>在 Solaris 上用 GNU 工具（GCC/gmake）构建 C/C++ 应用程序<br />GCC（GNU Compiler Collection）工具套装包括一个 C 编译器和一个 C++ 编译器。因为 Solaris 和 Linux 中都有 GNU 编译器和 make 实用程序，所以要用这些工具开始构建应用程序相对来说比较容易。首先，请您用上面的链接下载 GNU 工具，并将它们安装在 Solaris 上。然后，请您试着用 GNU gmake 实用程序（而不是 Solaris make 实用程序）来构建应用程序。因为 GNU gmake 实用程序与 Solaris make 实用程序有所不同，所以根据您的 make 文件中使用的构件，您会碰到 GNU gmake 实用程序生成的一些错误消息。请使用上面的 make 工具文档链接来帮您识别 make 文件中的问题区域，并相应地调整 make 文件。 一旦您将 make 文件修改为使用 gmake，请在 make 文件中将被调用的 C 编译器的名称从 cc 改为 gcc ，并将 C++ 编译器的名称从 CC 改为 g++ 。然后重新构建应用程序。您在构建过程中会碰到的错误消息（如果存在的话）可以分为两类：命令行选项问题和代码问题。请辨别出那些由于 GNU 和 Sun 编译器接受的命令行选项中有所区别而产生的消息。除了少数几个基本选项（如&ldquo;-c&rdquo;和&ldquo;-g&rdquo;）之外，编译器接受的多数选项都不同。 下面，您就可以处理剩下与代码相关的错误消息和警告信息了。处理这些消息的一种简单的方法是将它们捕获在一个文件中，并挨个检查。请使用上面的编译器文档链接来了解和处理编译器之间不同的问题。本文的 迁移工具和外包部分给出了一个公司列表，这些公司可以帮助您在应用程序中解决那些由于编译器不同而产生的问题。 在移植到 Linux 和将应用程序链接到开放源代码库时，请注意与这些库相关的许可证和版权。您新移植的 C/C++ 应用程序至少将被链接到 GNU C/C++ 运行时库。这些库受 GNU&ldquo;copyleft&rdquo;许可证的保护。如果您正在移植的软件有专有属性，而且您打算在用 GNU 工具构建该软件之后马上出售它，那么您最好谨慎地全面理解 GNU 通用公共许可证和 GNU 次通用公共许可证（请参阅 参考资料）中规定的条款和条件。一旦您的软件被链接到由这些许可证保护的库上，GNU 许可证中的某些条款和条件就将沿用到您的软件上。 <br /><strong>步骤 2：</strong>（可选的）在 SPARC 的 Linux 上构建和测试应用程序<br />有一种不常见的情况，那就是被移植的应用程序有对 SPARC 硬件特定的附属物，这时步骤 2 就变成移植过程中重要的中间阶段了。它使 Solaris 开发者能够在不放弃底层 SPARC 硬件和不修改应用程序中特定于 SPARC 的部分的前提下熟悉 Linux 环境。 请通过上面的链接之一来获取可以在您的 Sun 硬件上运行的 Linux 版本。然后安装操作系统，使用所提供的 GNU 工具重新构建应用程序。因为您在步骤 1 中使用 GCC 构建了应用程序，所以在步骤 2 中将碰到的区别将被限制到 Solaris 和 Linux 之间的运行时应用程序编程接口（application programming interface，API）的区别。 <br /><strong>步骤 3：</strong>在 Linux 上为其它硬件构建和测试应用程序<br />在迁移过程的最后一个步骤中，首先请获取并在您选择的目标硬件上安装 Linux。可以直接使用 Linux 的服务器有 IBM 基于 Intel-IA32 的产品系列（包括 NetVista、IntelliStation、Netfinity）和新的 IBM eServer xSeries。IBM pSeries 和 zSeries 也可以使用 Linux（请参阅 参考资料）。您可以低价购得或免费下载流行的用于 Intel/x86 的 Red Hat Linux 分发版，而且它在几乎任何一台基于 Intel 的 PC 机上都很容易安装和设置。SuSE 提供支持 IBM pSeries 和 zSeries 的 Linux 分发版。还有，您一定要安装将使用的编译器和工具。&nbsp;<br /><strong>其它注意事项<br /></strong>* 系统管理<br />总的来说，管理 Linux 与管理任何其它 UNIX 操作系统都几乎一样。在某些具体的命令和任务上有一些区别，IBM 和 UNIXGuide 已经发布了比较图，总结了这些区别，其中不仅包括 Solaris 和 Linux 之间的区别，还包括 AIX 和其它版本的 UNIX 之间的区别（请参阅 参考资料）。有经验的 Solaris 系统管理员不必花费太大气力就能够完全适应 Linux。<br />* 源代码管理<br />对于目前正在使用 Solaris 上的 Sun Forte TeamWare 或者 SCCS（Source Code Control System，源代码控制系统）并希望继续使用 SCCS 这种风格的源代码管理系统的开发者来说，他们可以试着使用 GNU CSSC（Compatibly Stupid Source Control），开放源代码 SCCS 的克隆版本。CVS（Concurrent Versions System，并发版本系统，请参阅 参考资料）是 Linux 上更常用而且倍受推崇的源代码管理系统。 <br />* 其它第三方工具、实用程序和库<br />Solaris 上有很多常见、流行的第三方工具、实用程序和库，它们都可以在 Linux 上使用。鉴于 Linux 的日益普及，支持 Linux 的第三方供应商的数目每天都在增长。<br />* 64 位计算<br />Red Hat 和很多其它发行商为 Compaq/DEC Alpha 提供了一种 64 位版的 Linux。您可以在 AlphaLinux Web 站点上了解关于这种 Linux 的其它信息。64 位的 Solaris 和 64 位的 Linux/Alpha 都使用 LP64 数据模型，它能够带来很好的兼容性。 不久，Intel Itanium(TM) IA-64 处理器也能使用一种 64 位版的 Linux。您可以在 IA-64 Linux Project Web 站点了解关于这种 Linux 的更多信息。一种支持 IBM 64 位 PowerPC 体系结构的 Linux 也在开发之中。 请注意，尽管 SuSE Linux/UltraSPARC 的内核运行在 64 位的模式中，但 SuSE Linux/UltraSPARC 目前并不支持 64 位的用户空间应用程序。 <br />* 端（Endian）格式<br />Sun SPARC 和 UltraSPARC 处理器以大端（Big Endian）格式存储整数。如果您希望将应用程序移植到小端（Little Endian）版本的 Linux（如 Linux/Intel）上，那么您就必须解决应用程序中任何与端格式有关的问题，应用程序才能够正确运行。您也可以选择让应用程序使用 Linux/PowerPC、Linux/zSeries 或 Linux/SPARC，它们都是 Linux/Intel 之外的大端平台。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/591/591/591.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=591</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=591&amp;key=c071bcb7</trackback:ping></item><item><title>将SOLARIS设置成PPP拨入服务器</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/590/590/590.html</link><pubDate>Wed, 13 Jan 2010 12:22:09 +0800</pubDate><guid>http://www.7layer.cn/cat_28/590/590/590.html</guid><description><![CDATA[<p>目前建立在客户机／服务器（C／S）网络体系结构上的应用系统越来越多，技术上&nbsp; <br />也越来越成熟。具有多用户多任务网络特性的UNIX操作系统以其高可靠性、高伸缩性、&nbsp; <br />高开放性的特点而成为C／S结构系统后台服务器上的主流操作系统。在我们所开发的系&nbsp; <br />统中采用了SUN公司的SOLARIS2．5．1操作系统，它具有很强大的网络功能，为了充分&nbsp; <br />发挥它的作用，我们不仅让其承担数据库系统的核心工作，还让其成为系统中的PPP拨&nbsp; <br />入服务器、软路由服务器或NFS共享磁盘服务器。以下介绍我在使用中的一点体会。&nbsp; <br />将SOLARIS设置成PPP拨入服务器&nbsp; <br />由于我们所开发的系统要安装在外地，我们将SOLARIS设置成PPP拨入服务器，然后&nbsp; <br />通过远程拨号上网，在PPP的基础上使用TCP／IP协议来进行远程登录或传输文件，给我&nbsp; <br />们的维护工作以极大的方便。以下介绍设置步骤：&nbsp; <br />一、设置调制解调器：&nbsp; <br />1、用随MODEM带的串型电缆连接MODEM和SUN工作站的串口A（或B，以下以串口A为&nbsp; <br />例），打开MODEM的电源开关。&nbsp; <br />2、编辑文件／etc／remote，加入下行：&nbsp; <br />＃vi／etc／remote；编辑文件／etc／remote&nbsp; <br />cuaa：dv=／dev／cua／a：at=hayes：br＃38400；假设用A串口&nbsp; <br />3、设置MODEM，在命令行上发如下命令：&nbsp; <br />＃tipcuaa；tip是联结远程系统命令&nbsp; <br />［connected］；表示和MODEM已连接正常&nbsp; <br />ats0=1；设置成自动应答方式&nbsp; <br />OK；MODEM成功执行的返回信息&nbsp; <br />at＆c1；设置成跟踪数据载波&nbsp; <br />OK&nbsp; <br />at＆w；存储设置&nbsp; <br />OK&nbsp; <br />～．；退出tip命令&nbsp; <br />［EOT］&nbsp; <br />＃；返回到命令行状态&nbsp; <br />以上各步完成后，MODEM将有HS、AA、TR、MR四个指示灯亮（以HAYESA系列为&nbsp; <br />例）。&nbsp; <br />二、设置SUN工作站的串口：&nbsp; <br />在SOLARIS上设置工作站的串口可以通过命令行的方式一步步地来做，但也可利用&nbsp; <br />openwindow窗口环境来操作，这样比较方便：&nbsp; <br />1、启动openwindow窗口环境：&nbsp; <br />＃／usr／openwin／bin／openwin；启动命令&nbsp; <br />2、在shell命令窗口内启动admintool系统管理工具：&nbsp; <br />＃admintool＆；另开一窗口执行&nbsp; <br />3、在&ldquo;浏览&rdquo;菜单中选择&ldquo;串行口&rdquo;后，将显示出本工作站的所有串口及其状&nbsp; <br />态。&nbsp; <br />4、选择所用的串口，在&ldquo;编辑&rdquo;菜单中选取&ldquo;修改&rdquo;后，在窗口中先按&ldquo;重置&rdquo;&nbsp; <br />钮，然后按照设置的内容点选参数，选择完成后按&ldquo;设置&rdquo;钮，系统提示设置成功，最&nbsp; <br />后按&ldquo;OK&rdquo;钮，即完成了串口的设置。&nbsp; <br />5、检查串口的设置正确与否。在命令行上可用sacadm、pmadm命令来检查串口的设&nbsp; <br />置情况，如下即为正确的设置：&nbsp; <br />＃sacadm－l；带参数l，列出串口服务器&nbsp; <br />PMTAGPMTYPEFLGSRCNTSTATUSCOMMAND&nbsp; <br />zsmonttymon－0ENABLED／usr／lib／saf／ttymon＃&nbsp; <br />＃pmadm－l；列出串口监控器&nbsp; <br />PMTAGPMTYPESVCTAGFLGSID&Iota;PMSPECIFIC&Lambda;&nbsp; <br />zsmonttymonttyauroot／dev／term／ab－／usr／bin／login－38400ldterm，&nbsp; <br />ttcompatlogin：－－n＃&nbsp; <br />三、设置系统文件：&nbsp; <br />1、编辑文件／etc／hosts，以增加ppp客户机的网址：&nbsp; <br />＃vi／etc／hosts&nbsp; <br />127．0．0．1localhost&nbsp; <br />192．9．200．1serverloghost；本例的主机名及地址&nbsp; <br />192．9．200．10pppclient；ppp客户机地址和名称&nbsp; <br />2、增加一个拨号用户的注册名：&nbsp; <br />a．编辑文件／etc／passwd，增加一个用户名：&nbsp; <br />＃vi／etc／passwd&nbsp; <br />ppplogin：x：1200：1045：pppclientlogin：／：／usr／sbin／aspppls；增加&nbsp; <br />用户ppplogin&nbsp; <br />b．编辑文件／etc／shadow，加入下行：&nbsp; <br />＃vi／etc／shadow&nbsp; <br />ppplogin：：：：：：：：；对应增加&nbsp; <br />c．可以修改ppplogin用户的注册口令：&nbsp; <br />＃passwdppplogin&nbsp; <br />Newpassword：&nbsp; <br />Re－enternewpassword：&nbsp; <br />＃&nbsp; <br />3、编辑文件／etc／asppp．cf，内容如下：&nbsp; <br />＃vi／etc／asppp．cf&nbsp; <br />ifconfigipdptp0plumbserverdown；开机时启动ipdptp接口&nbsp; <br />defaults；缺省设置&nbsp; <br />interfaceipdptp＊；针对所有的ipdptp接口&nbsp; <br />inactivity&mdash;timeout120&nbsp; <br />ipcp&mdash;async&mdash;map0&nbsp; <br />path&nbsp; <br />peer&mdash;system&mdash;nameppplogin；与用户注册名一致&nbsp; <br />peer&mdash;ip&mdash;addresspppclient；与ppp客户名一致&nbsp; <br />4、查询主网卡的地址：&nbsp; <br />＃ifconfig－a；列出系统中的所有网络接口&nbsp; <br />lo0：flags=849&Iota;UP，LOOPBACK，RUNNING，MULTICAST&Lambda;mtu8232&nbsp; <br />inet127．0．0．1netmaskff000000&nbsp; <br />hme0：flags=863&Iota;UP，BROADCAST，NOTRAILERS，RUNNING，MULTICAST&Lambda;mtu1500&nbsp; <br />inet192．9．200．1netmaskffffff00broadcast192．9．200．255&nbsp; <br />ether8：0：20：1：2：3&nbsp; <br />最后一行ether后的数字串即为该网卡的地址，如本机为8：0：20：1：2：3。&nbsp; <br />5、新建可执行文件／etc／rc2．d／S99proxyarp，步骤：&nbsp; <br />＃vi／etc／rc2．d／S99proxyarp&nbsp; <br />ndd－set／dev／ipip&mdash;forwarding1&nbsp; <br />arp－spppclient8：0：20：1：2：3pub；将ppp客户名和网卡的地址的填入相应位&nbsp; <br />置&nbsp; <br />＃chmod＋x／etc／rc2．d／S99proxyarp；改变文件属性，让其可执行&nbsp; <br />四、完成以上所有设置后，重启SUN工作站。&nbsp; <br />五、检验效果：&nbsp; <br />重启后，我们用接口查询命令即可看到ipdptp0接口已启动，但还没有up：&nbsp; <br />＃ifconfig－a；列出系统中的所有网络接口&nbsp; <br />lo0：flags=849&Iota;UP，LOOPBACK，RUNNING，MULTICAST&Lambda;mtu8232&nbsp; <br />inet127．0．0．1netmaskff000000&nbsp; <br />hme0：flags=863&Iota;UP，BROADCAST，NOTRAILERS，RUNNING，MULTICAST&Lambda;mtu1500&nbsp; <br />inet192．9．200．1netmaskffffff00broadcast192．9．200．255&nbsp; <br />ether8：0：20：1：2：3&nbsp; <br />ipdptp0：flags=8d0&Iota;POINTOPOINT，RUNNING，NOARP，MULTICAST&Lambda;mtu8232&nbsp; <br />inet192．9．200．1－－&Lambda;0．0．0．0netmaskffffff00&nbsp; <br />ether0：0：0：0：0：0&nbsp; <br />在客户机上（例如WIN95），在控制面板中将拨号网络设置好后，新建一个拨号连&nbsp; <br />接并设好TCP／IP的地址（这些步骤已有许多介绍，这里不再详述）即可向工作站拨号&nbsp; <br />上网。注册成功后，我们用接口查询命令可看到ipdptp0接口已up：&nbsp; <br />＃ifconfig－a；列出系统中的所有网络接口&nbsp; <br />lo0：flags=849&Iota;UP，LOOPBACK，RUNNING，MULTICAST&Lambda;mtu8232&nbsp; <br />inet127．0．0．1netmaskff000000&nbsp; <br />hme0：flags=863&Iota;UP，BROADCAST，NOTRAILERS，RUNNING，&nbsp; <br />MULTICAST&Lambda;mtu1500&nbsp; <br />inet192．9．200．1netmaskffffff00broadcast192．9．200．255&nbsp; <br />ether8：0：20：1：2：3&nbsp; <br />ipdptp0：flags=28d1&Iota;UP，POINTOPOINT，RUNNING，NOARP，MULTICAST，&nbsp; <br />UNNUMBERED&Lambda;mtu1500&nbsp; <br />inet192．9．200．1－－&Lambda;192．9．200．10netmaskffffff00&nbsp; <br />ether0：0：0：0：0：0&nbsp; <br />这时客户机就如同远程网络上的一个主机，可以进行任何网络操作。在客户机退出&nbsp; <br />PPP后，ipdptp接口会自动down。</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/590/590/590.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=590</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=590&amp;key=6feb1b02</trackback:ping></item><item><title>Linux和Solaris建立Apache的虚拟根环境</title><author>55990359@qq.com (administrator)</author><link>http://www.7layer.cn/cat_28/589/589/589.html</link><pubDate>Wed, 13 Jan 2010 12:20:07 +0800</pubDate><guid>http://www.7layer.cn/cat_28/589/589/589.html</guid><description><![CDATA[<p><strong>介绍</strong></p><p>我曾经利用CERN httpd安装和使用了已经虚拟根环境下的Web服务器。对Web服务器建立虚拟根环境有各种各样的优点和缺点。在Web发展的早期阶段，这种技术还提供了额外的有价值的安全机制。但是在这个apache的领域中，这种技术似乎没有太大的用处，可它仍旧很有趣。</p><p>我提供对apache在linux和soloris环境下实现虚拟根环境的安装的例子，它既可以做标准的编辑（在必要的时候被标记为non-DSO）或者做动态共享对象编辑（在必要时它将被标记为DSO）。选项为DSO的Solaris的例子还没有进行文档化，所以我没有测试它（我打算在测试时使用Solaris 8）。</p><p>在Linux上安装一个虚拟根环境化的Apache目录树是相当的简单的。这个例子使用的是Red Hat 6.*和Apache 1.3.12。同时，它也包含PHP4（作为一个Apache模块），以及在虚拟根环境化的目录树上的perl5的安装。另外还安装了mod-ssl和mod-perl。</p><p>该例也假定Red Hat 安装比较完整 （即：有足够的文件、库和开发工具）。注意，如果你安装Red Hat时用了custom（prefered）的配置，并且选择了development选项；或者你就是使用了服务器（server）配置，你都会有一个完全的开发环境。</p><p>Mysql3.22.27并没有安装在实现了虚拟根环境目录树中，但是为了完整性我们在此将它包含进去。</p><p><strong>声明</strong></p><p>我并不是个专家:)，尤其在加密方面（openssl、mod-ssl和company）我的水平更是有限。我也是个普通的人，也会犯错误，所以，如果你发现了什么或是有什么建设性的意见，请告诉我。</p><p>我写这篇文章只是希望，你能从中学到一些东西，获得一些帮助。我也可以经常提供一些RPM，但如果你知道你可以从草图开始，独立的建一个自己的现代Web网站，那恐怕会更有趣些。但是，在当前的Internet上，学习、理解关于运行一个Web网站各种问题以及所冒的风险，都要靠你自己了。</p><p><strong>Solaris 例子</strong> <br />对Web目录树进行虚拟根环境化的solaris的例子与Linux的例子十分相似。当然，如果你没有安装GNU开发环境，solaris的例子就不可能像Linux例子那样容易。</p><p>Solaris的例子文档在另一个web页中。</p><p>附加的注释</p><p>使用工具ldd来发掘必要的共享库。 <br />在这个例子中，用户有这样的提示：<br />root user:<br />ROOT#<br />ordinary user:<br />$</p><p>我基本上都是作为普通用户而不是root用户来编译和安装各种软件的。这有助于避免对文件系统（尤其是在使用不熟悉的软件时）造成的不必要的破坏。这也有助于在进行危险操作前给以警示，例如在已经安装的二进制文件上的&ldquo;setuid&quot;操作，以及在不寻常的地方安装文件的操作等危险操作前的警示。 <br />在这个例子中，我作为用户soft:soft来进行编译和安装等操作。</p><p>其实，只要保证软件的所有者的身份ID与Apache目录树用户的ID（在本例中我们用的是888）不同就可以了。</p><p>Red Hat的缺省root环境中，有一个交互式的开关-I被加在命令cp、mv和rm上。如果你的root环境中没有这些设置，建议你最好将它加上。你可以检查下面的文件：</p><p>ROOT# alias |grep '-i'<br />alias cp='cp -i'<br />alias mv='mv -i'<br />alias rm='rm -i'</p><p>你应当使你的配置尽量的简单&mdash;&mdash;不要安装那些用不到或根本不必要的模块。一般说来，一个标准的non-DSO（非动态共享对象）Apache，在安装一个perl，对大多数人都是足够的。 <br />关于DSO和mod-ssl需要注意的地方: <br />如果你打算把任何东西都按照DSO模版进行编译，那你首先要建立mod-ssl，然后你确实要按照下面的顺序建立自己的Apache目录树。Mod-ssl会明显的修改Apache 建立的目录树，据我的经验，在使用我们刚才提到的软件版本的前提下，下面的顺序是做起来最简单的顺序：</p><p>建立Apache <br />在Apache中建立和增加mod-ssl <br />在Apache中建立和增加php 和mod-perl。 <br />你应该在适当的地方记录下来你是如何编译你的目录树的，以便再做时参考。（你可以将其打印出来，并加上注释） <br />安装了各种软件之后，最终的虚拟根环境化的目录树有23MB，其中包含了8MB的共享库和perl。下面是基于DSO安装的文件的总结（以KB表示）： <br />ROOT# pwd <br />/www <br />ROOT# du -s . <br />22737 . <br />ROOT# du -s * <br />6832apache <br />0 bin <br />1 dev <br />7 etc <br />6679lib <br />1 tmp <br />9215usr <br />1 webhome <br />ROOT# du -s apache /* <br />600 apache /bin <br />3 apache /cgi-bin <br />125 apache /conf <br />1560apache /htdocs <br />133 apache /icons <br />392 apache /include <br />3925apache /libexec <br />64 apache /man <br />29 apache /var <br />ROOT# du -s usr/* <br />8410usr/Local <br />336 usr/bin <br />340 usr/lib <br />128 usr/share <br />1.获得源代码</p><p>如果你想将一个包加入到你的虚拟根环境化的目录树中，那你必须获得这个包中任何一个文件的源代码。多数源文件都可以从相应的Linux版本的被称为SRPMs（RPM源代码包）的原码光盘中获取；当然也可从tarball文件（.tar.gz）中获取（这种方法很适合于你的带宽有限的情况）。</p><p>在Red Hat 系统中你作为root用户安装Source：</p><p>ROOT# rpm -i /path/to/SRPMfile.src.rpm</p><p>然后，在/usr/src/redhat/SOURCES/目录中提取出源代码。</p><p>在我们的例子中我将指出，在Internet上你可从何处获取这些源代码：</p><p>软件包版本号源代码文档信息<br />Apache 1.3.12www.apache.org/dist/<a href="http://www.apache.org/docs/">www.apache.org/docs/</a><br />MySQL3.22.27 <a href="http://www.mysql.com/downloads">www.mysql.com/downloads</a><a href="http://www.mysql.com/documentation/">www.mysql.com/documentation/</a><br />PHP4.0.2<a href="http://www.php.net/downloads.phpwww.php.net/docs.php">www.php.net/downloads.phpwww.php.net/docs.php</a><br />Perl 5.00503 <a href="http://www.cpan.org/src/">www.cpan.org/src/</a> <a href="http://www.cpan.org/doc/manual/html/index.html">www.cpan.org/doc/manual/html/index.html</a><br />mod_perl1.24 perl.apache.org/dist/ perl.apache.org/#docs<br />Hello.pm perl.apache.org/dist/contrib/<br />mod_ssl 2.6.6-1.3.12 <a href="ftp://ftp.modssl.org/source/">ftp://ftp.modssl.org/source/</a><a href="http://www.modssl.org/docs/2.6/">www.modssl.org/docs/2.6/</a><br />OpenSSL 0.9.5aftp://ftp.openssl.org/source/<a href="http://www.openssl.org/support/faq.html">www.openssl.org/support/faq.html</a><br />RSAref2.0google search google search</p><p>2.步骤细节</p><p>准备好一个虚拟根环境化后的文件系统</p><p>2.1 在任何一个地方安装目录树</p><p>注意：最好是在另一个磁盘上，或是在非系统分区上安装，这样可以避免别人从Web目录树以外建立到文件的连接，但是你可以使用symlink(例如：/www)连接来找到这棵目录树。</p><p>ROOT# mkdir /export/misc/www<br />ROOT# ln -s /export/misc/www /www</p><p>2.2 生成基本的目录，bin将是usr/bin的连接</p><p>注意： 在这些例子中（除了我直接从一般文件系统中拷贝的代码）我都省略了前导的&ldquo;/&rdquo;，所以，注意不要将你的虚拟根环境化的目录树与真正的&ldquo;/&rdquo;混淆。</p><p>在下面我将用紫红色标记出虚拟根环境化的文件</p><p>ROOT# cd /www<br />ROOT# mkdir -p usr/bin usr/lib lib etc tmp dev webhome<br />ROOT# ln -s usr/bin bin</p><p>2.3 /tmp是假定的专用perms</p><p>ROOT# chmod 777 tmp<br />ROOT# chmod +t tmp</p><p>2.4 构造特殊的装置 dev/null</p><p>ROOT# mknod -m 666 dev/null c 1 3</p><p>2.5 为你自己的时区设定时区信息（这里使用的是MET）</p><p>ROOT# mkdir -p usr/share/zoneinfo<br />ROOT# cp -pi /usr/share/zoneinfo/MET usr/share/zoneinfo/<br />ROOT# cd etc<br />ROOT# ln -s ../usr/share/zoneinfo/MET localtime<br />ROOT# cd ..</p><p>2.6 你会发现由于缺乏本地设置，perl和mod-perl多有不便，但你可以通过在实现了虚拟根环境目录树中安装本地文件来克服它：</p><p>ROOT# set |grep LANG<br />LANG=en_US<br />ROOT# mkdir /www/usr/share/locale<br />ROOT# cp -a /usr/share/locale/en_US /www/usr/share/locale/</p><p>2.7 现在，在可以提供非常基础的虚拟根环境化的文件系统的共享库</p><p>ROOT# cp -pi /lib/libtermcap.so.2 /lib/ld-linux.so.2 /lib/libc.so.6 lib/</p><p>2.8 测试你的目录树（Apachect1后面将要用到&ldquo;cat&rdquo;，但也不是必需的）</p><p>ROOT# cp -pi /bin/ls /bin/sh /bin/cat bin/<br />ROOT# chroot /www /bin/ls -l /</p><p>lrwxrwxrwx 1 00 7 Jan 29 09:24 bin -&gt; usr/bin<br />drwxr-xr-x 2 001024 Jan 29 09:28 dev<br />drwxr-xr-x 2 003072 Jan 29 13:17 etc<br />drwxr-xr-x 2 001024 Jan 29 13:12 lib<br />drwxrwxrwt 2 001024 Jan 29 09:23 tmp<br />drwxr-xr-x 5 001024 Jan 29 09:23 usr<br />drwxr-xr-x 2 001024 Jan 29 10:41 webhome</p><p>2.9 你可以移动一下ls，它只是用于测试的。</p><p>ROOT# rm bin/ls</p><p>3.准备一个用户和名字服务器</p><p>下面我们生成一个运行Apache的用户，下面是这种配置的必要的命名服务：</p><p>3.1 生成一个不存在于系统上的新的用户，给他起一个特殊的名字和用户ID(例如888)。</p><p>注意：对于存在真正的鉴定文件(/etc/passwd /etc/group)的user.group,这并不是必需的，完全有你决定：</p><p>ROOT# cd /www<br />ROOT# touch etc/passwd etc/group etc/shadow<br />ROOT# chmod 400 etc/shadow</p><p>3.2 编辑三个文件，在这个例子中，我只是将数据再传回文件中：</p><p>ROOT# echo 'www:x:888:888:Web Account:/webhome:/usr/bin/False' &gt; etc/passwd<br />ROOT# echo 'www:x:888:' &gt; etc/group<br />ROOT# echo 'www:*:10882:-1:99999:-1:-1:-1:134537804' &gt; etc/shadow</p><p>3.3 我没有给这个用户login或shell，只是为了完整，编译了一下称为false的no-go shell。</p><p>ROOT# echo 'int main(int argc, char *argv[]) { return(1); }' &gt; /tmp/False.c<br />ROOT# cc -o /www/usr/bin/False /tmp/False.c</p><p>3.4 下面让我们标记一下二进制流：</p><p>ROOT# chmod 111 usr/bin/*</p><p>3.5 一些命名服务是必须的。但是由于glibc和命名服务转换库的存在，那些库是必不可少不是那么一目了然的。至于其中的细节，你可以使用命令&ldquo;man nsswitch&rdquo;来察看。尽管在我的机器上运行着网络信息服务(NIS)，但我还是选择依赖于文件和域名服务（DNS）。注意：libresolve库也是必需的，在安装了PHP之后，这种需求就相当明显了。</p><p>ROOT# cp -pi /lib/libnss_files.so.2 lib/<br />ROOT# cp -pi /lib/libnss_dns.so.2 lib/</p><p>3.6 我们将需要三个文件来完成对命名服务的配置。</p><p>这些文件的内容决定于你IP和DNS设置。在这里我们假定web服务器的名字是ns.mynet.home，它的IP地址是:192.168.196.2（实际上它也是我的名字服务器）</p><p># ---- Contents ofetc/nsswitch.conf ----#<br />passwd: files<br />shadow: files<br />group: files<br />hosts: files dns</p><p># ---- Contents ofetc/resolv.conf ----#<br />domain mynet.home<br />## use the IP address of your naming server<br />## if bind is not installed on your web server<br />#nameserver 192.168.196.xxx<br />## use this if your web server is a (caching) name server<br />nameserver 127.0.0.1</p><p># ---- Contents ofetc/hosts ----#<br />127.0.0.1 localhost loopback<br />192.168.196.2 ns.mynet.home ns www</p><p><br />4.编译和安装Apache</p><p>4.1 为Apache的安装建立顶层目录，并且在真正的目录树中生成到它的系统连接。</p><p>ROOT# mkdir /www/apache<br />ROOT# ln -s /www/apache /apache</p><p>4.2 我都是作为一般的用户来进行安装和编译的工作的（就像这个例子中的softs），</p><p>注意：Apache的安装是需要root身份的。在这个例子中我是在usr/local/src/chr （该文件是属于softs:softs的）中进行源代码编译的</p><p>$ cd /usr/local/src/chr<br />$ tar zxf /path/to/apache_1.3.12.tar.gz<br />$ cd apache_1.3.12</p><p>4.3 编辑config.layout，这样它将包含一个称为chroot的特殊的设计(layout)。</p><p># chroot layout.</p><p>prefix:/apache<br />exec_prefix: $prefix<br />bindir:$exec_prefix/bin<br />sbindir: $exec_prefix/bin<br />libexecdir:$exec_prefix/libexec<br />mandir:$prefix/man<br />sysconfdir:$prefix/conf<br />datadir: $prefix<br />iconsdir: $datadir/icons<br />htdocsdir: $datadir/htdocs<br />cgidir:$datadir/cgi-bin<br />includedir:$prefix/include<br />localstatedir: $prefix/var<br />runtimedir:$localstatedir/logs<br />logfiledir:$localstatedir/logs<br />proxycachedir: $localstatedir/proxy</p><p><br />4.4 现在进行配置和构造</p><p>non-DSO:</p><p>$ ./configure --with-layout=chroot --enable-module=most --enable-module=so</p><p>使得模块&ldquo;so&rdquo;有效，这样以后你可以运用DSO+APXS机制，通过第三类模块（3rd party module）来扩充你的Apache安装。</p><p>DSO:</p><p>$./configure --with-layout=chroot --enable-module=most --enable-shared=max<br />$ make<br />ROOT# make install ## I am root!</p><p>4.5 现在来拷贝在例子Apache要用到的共享库</p><p>注意对于其他的配置，可能会用到其他的库（你可以通过ldd来查询）</p><p>ROOT# cd /www<br />ROOT# cp -pi /lib/libm.so.6 /lib/libcrypt.so.1 /lib/libdb.so.3 lib/<br />ROOT# cp -pi /lib/libdl.so.2 lib/</p><p>4.6 可以进行快速测试来看看结果</p><p>快速测试时，配置文件/www/apache/conf/httpd.conf中需要编辑的主要部分是：</p><p>User www<br />Group www<br />ServerName yourserver.yourdomain.here<br />Port 8088 ## pick your favourite test port</p><p>4.7 启动后台程序（daemon）</p><p>ROOT# chroot /www/apache/bin/apachectl start</p><p>4.8 测试URL</p><p>$ lynx -dump <a href="http://yourserver/">http://yourserver/</a></p><p>测试在另一个端口（如：8088）上的URL</p><p>$ lynx -dump <a href="http://yourserver:8088/">http://yourserver:8088/</a></p><p>4.9 这儿有一个小的perl脚本程序，它将大多数的注释从已生成的配置文件中删除，形成一个简化的文件。</p><p>4.10 将htdocs目录树的所有权交给Web目录树的所有者</p><p>ROOT# chown -R 888:888 /www/apache/htdocs</p><p>5.编译和安装MySQL</p><p>MySQL并不是安装在虚拟根环境化的目录树上的，事实上，它有可能是安装在其它系统上的。但在我的例子中，它是和Apache安装在一个web服务器上的。</p><p>这个例子包括生成用户和数据库所在地，以及生成初始的数据库</p><p>5.1 生成用户，他将是MySQL数据库的所有者。</p><p>例如：在home/mysql/中生成一个用户777：777</p><p>ROOT# groupadd -g 777 mysqldba<br />ROOT# useradd -c &quot;mysql DBA&quot; -d /home/mysql -u 777 -g 777 -m -n mysql</p><p>5.2 解开原码，并将原码目录树给mysql的用户</p><p>ROOT# groupadd -g 777 mysqldba<br />ROOT# useradd -c &quot;mysql DBA&quot; -d /home/mysql -u 777 -g 777 -m -n mysql</p><p>5.3 现在作为mysql用户，为mysql数据库建立目录，并开始安装和编译mysql</p><p>$ mkdir ~/db ## where the DB will reside<br />$ cd /usr/local/src/mysql-3.22.27<br />$ ./configure --localstatedir=/home/mysql/db --prefix=/usr/local/mysql<br />$ make<br />$ make install</p><p>5.4 生成*MySQL*授权表（只有在安装*MySQL之前，这才是必须的）</p><p>$ ./scripts/mysql_install_db</p><p>5.5 安装和修改数据库的启动脚本，将数据库的所有者从root变为mysql</p><p>ROOT# cd /usr/local/src/mysql-3.22.27/<br />ROOT# cp support-files/mysql.server /etc/rc.d/init.d/<br />ROOT# chmod 755 /etc/rc.d/init.d/mysql.server<br />ROOT# [ edit /etc/rc.d/init.d/mysql.server: ]<br />mysql_daemon_user=mysql ## so we can run mysqld as this user.<br />ROOT# chkconfig --add mysql.server ## permanently add server to rc scripts</p><p>5.6 在安装了mysql之后，必须清空共享库的cache。</p><p>ROOT# /sbin/ldconfig -nv /usr/local/lib</p><p>5.7 为mysql的所有者编辑PATH变量，并且设定数据库的root密码。</p><p>$ [ Edit shell login script .bash_profile: ]<br />PATH=$PATH:$HOME/bin:/usr/local/mysql/bin<br />$ . ~/.bash_profile ## source it!<br />$ mysqladmin -u root password '2mUch!data' ## pick your own password!</p><p>6.编译和安装PHP</p><p>6.1 先停止Apache后台程序（daemon）的运行</p><p>ROOT#chroot /www /apache/bin/apachectl stop</p><p>6.2 你首先要编译PHP</p><p>如果你使用的是non-DSO安装，你必须重新编译Apache。（每次要升级non-DSO包中的任何一个软件时，你都要再这样做一遍。）</p><p>$ cd /usr/local/src/chr ## I am NOT root!<br />$ tar zxf /path/to/php-4.02.tar.gz<br />$ cd php-4.02</p><p>non-DSO:</p><p>$ ./configure --with-mysql=/usr/local/mysql<br />--with-apache=../apache_1.3.12 --enable-track-vars<br />--with-config-file-path=/apache/conf --sharedstatedir=/tmp</p><p>DSO:</p><p>$ ./configure --with-mysql=/usr/local/mysql<br />--with-apxs=/apache/bin/apxs --enable-track-vars<br />--with-config-file-path=/apache/conf --sharedstatedir=/tmp</p><p>DSO:</p><p>(or add CFLAGS switch when mod_ssl was also configured as a DSO module)<br />$ CFLAGS=-DEAPI ./configure --with-mysql=/usr/local/mysql<br />--with-apxs=/apache/bin/apxs --enable-track-vars<br />--with-config-file-path=/apache/conf --sharedstatedir=/tmp<br />$ make</p><p>non-DSO:</p><p>$ make install</p><p>DSO:</p><p>ROOT# make install</p><p>进行DSO的PHP安装&ldquo;make install&rdquo;时，你必须是root。因为模块是直接进入模块目录树/apache/libexec的，另外，Apache的配置文件也改变了。</p><p>6.3 现在只讨论non-DSO安装，先重新编译Apache，再激活PHP模块</p><p>$ cd ../apache_1.3.12/<br />$ ./configure --with-layout=chroot<br />--enable-module=most --enable-module=so<br />--activate-module=src/modules/php4/libphp4.a<br />$ make<br />ROOT# make install ## I am root!</p><p>6.4 在实现了虚拟根环境目录树中，对PHP需要更多的共享库，可以用ldd来查看</p><p>For non-DSO: ldd /apache/bin/httpd</p><p>For DSO: ldd /apache/apache/libexec/libphp4.so</p><p>可以使用小的for循环，从/lib和/usr/lib中拷贝所需的文件</p><p>ROOT# cd /www<br />ROOT# for i in libresolv.so.2 libnsl.so.1 libpam.so.0 ; do<br />&gt; cp -pi /lib/$i /www/lib/ ; done<br />ROOT# for i in libgd.so.1 libgdbm.so.2 libz.so.1; do<br />&gt; cp -pi /usr/lib/$i /www/usr/lib/ ; done</p><p>6.5 如果你需要mysql，你必须从它编译的地方安装相应的库</p><p>ROOT# cp -pi /usr/local/mysql/lib/mysql/libmysqlclient.so.6 /www/usr/lib/</p><p>6.6 你必须编辑httpd.conf文件，这样它才可以识别出.php文件</p><p>ROOT# cd /apache/conf<br />ROOT# [ edit /apache/conf/httpd.conf ]<br />AddType application/x-httpd-php .php<br />AddType application/x-httpd-php-source .phps</p><p>6.7 重新启动后台程序（daemon）</p><p>ROOT# chroot /www /apache/bin/apachectl start</p><p>6.8 在non-DSO中，你可以检查已经编译过的PHP</p><p>ROOT# chroot /www /apache/bin/httpd -l | grep php<br />mod_php4.c</p><p>6.9 这儿有一个小的helloworld的脚本程序来测试php，它必须作为hello.php来安装。如果你想要浏览源代码的话可以拷贝一份或建立到hello.phps的系统连接。测试完，要关闭这个连接。</p><p>7.编译和安装perl</p><p>你可以简单的将/usr/lib/perl5拷贝到www/usr/lib,并将usr/bin/perl5.00503（假定是Red Hat6。0版本）拷贝到www/usr/bin中，这样了事。同时，你需要检测并安装任何缺少的共享库，你也需要建立从usr/bin/perl5.00503到/www中的/usr/bin/perl的硬连接。</p><p>简单的方法是：</p><p>ROOT# cp -a /usr/lib/perl5 /www/usr/lib/perl<br />ROOT# cp -p /usr/bin/perl5.00503 /www/usr/bin/<br />ROOT# cd /www/usr/bin<br />ROOT# ln perl5.00503 perl</p><p>但是，我还是讲一下怎样安装和编译perl，如果你想要安装mod-perl,你就必须在此编译perl：</p><p>7.1 建立向虚拟根环境化的目录树中安装的必要的连接。</p><p>本例中使用目录树中的usr/Local。之所以用他，是有道理的，注意不要将他与usr/local混淆。安全起见，我还是使用softs用户来安装</p><p>ROOT# mkdir /www/usr/Local<br />ROOT# ln -s /www/usr/Local /usr/local<br />ROOT# chown softs:softs /www/usr/Local</p><p>7.2 从RedHat中获取RPM的源代码</p><p>ROOT# rpm -i /path/to/perl-5.00503-2.src.rpm</p><p>7.3 作为源代码目录树的所有者，解开Perl</p><p>$ cd /usr/Local/src/chr<br />$ tar zxf /usr/src/redhat/SOURCES/perl5.005_03.tar.gz</p><p>7.4 RedHat在SRPM中包含了一些补丁。你可以使用相应版本的补丁。在这个例子中，我用了RedHat6。0的补丁。</p><p>$ cp /usr/src/redhat/SOURCES/perl*.patch .<br />$ cd perl5.005_03<br />$ patch -p1 &lt;../perl5-installman.patch<br />$ patch -p1 &lt;../perl5.005_02-buildsys.patch<br />$ patch -p1 &lt;../perl5.005_03-db1.patch</p><p>7.5 你需要运行Configure，并接受大多数的却生设置。你可能也想对man页的none加以特殊说明。下面是我对确生设置的一些修改：</p><p>$ ./Configure<br />architecture name? i386-linux<br />Installation prefix to use? /usr/Local<br />Directories to use for library searches? /lib /usr/lib /usr/Local/lib<br />install perl as /usr/bin/perl? n</p><p>7.6 编译和运行它</p><p>$ make<br />$ make test<br />$ make install</p><p>7.7 建立在usr/bin目录树中到perl的连接。</p><p>如果你没有安装mod-perl，你需要将perl目录树的所有权转交给root。（不过这也不是必须的，只要Web目录树的所有者对perl目录树的权限是只可读的就行了）</p><p>ROOT# cd /www/usr/bin<br />ROOT# ln -s ../Local/bin/perl perl</p><p>7.8 检查共享库，安装任何缺的库（这主要决定于你的配置）</p><p>在这个例子中，我们不缺任何库：</p><p>ROOT# ldd /www/usr/bin/perl<br />libnsl.so.1 =&gt; /lib/libnsl.so.1 (0x4001b000)<br />libdl.so.2 =&gt; /lib/libdl.so.2 (0x40031000)<br />libm.so.6 =&gt; /lib/libm.so.6 (0x40035000)<br />libc.so.6 =&gt; /lib/libc.so.6 (0x40052000)<br />libcrypt.so.1 =&gt; /lib/libcrypt.so.1 (0x40147000)<br />/lib/ld-linux.so.2 =&gt; /lib/ld-linux.so.2 (0x40000000)</p><p>7.9 测试你的安装：</p><p>ROOT# chroot /www /usr/bin/perl -v<br />This is perl, version 5.005_03 built for i386-linux<br />...</p><p>7.10 设置安装在Apache服务器上的perl例子的cgi bin 脚本</p><p>ROOT# cd /www/apache/cgi-bin<br />ROOT# chmod ugo+x *</p><p>7.11 启动Apache服务器，测试perl cgi bin脚本的例子</p><p>ROOT# chroot /www /apache/bin/apachectl start<br />$ lynx -dump <a href="http://yourserver/cgi-bin/printenv">http://yourserver/cgi-bin/printenv</a></p><p>同时检查test-cgi</p><p>$ lynx -dump <a href="http://yourserver/cgi-bin/test-cgi">http://yourserver/cgi-bin/test-cgi</a></p><p>7.12 最后将执行的二进制位从cgi脚本中去除，或完全去除。不要留对外的连接。</p><p>ROOT# chmod ugo-x /www/apache/cgi-bin/*</p><p>8.编译和安装mod-ssl</p><p>如果你打算使用DSO方式安装mod-ssl，我希望你已经读过前面的附加注释段。</p><p>你必须编译openssl和mod-ssl，我还选择编译了rsaref version 2.0.你应当阅读一些关于mod-ssl的文档信息，以便理解mod-ssl的一些发行版本和选项。</p><p>注意，openssl和rsaref提供了包含文件、库和开发工具，它使得你可以编译mod-ssl，所以决不能说它是虚拟根环境化的目录树的一部分，或者说是安装在该目录树中的。</p><p>8.1 抽取openssl、mod-ssl和rsaref20的源代码</p><p>$ cd /usr/local/src/chr<br />$ tar zxf /path/to/mod_ssl-2.6.6-1.3.12.tar.gz<br />$ tar zxf /path/to/openssl-0.9.5a.tar.gz<br />$ mkdir rsaref-2.0<br />$ cd rsaref-2.0<br />$ tar zxf /path/to/rsaref20.1996.tar.Z</p><p>8.2 配置和建立RSA参考库。</p><p>注意，在64位结构中你用rsaref必须在mod-ssl包中的INSTALL文件中读取文档信息。</p><p>$ cd /usr/local/src/chr/rsaref-2.0<br />$ cp -rpi install/unix local<br />$ cd local<br />$ make<br />$ mv rsaref.a librsaref.a</p><p>8.3 配置和建立openssl库</p><p>$ cd /usr/local/src/chr/openssl-0.9.5a<br />$ ./config -L/usr/local/src/chr/rsaref-2.0/local -fPIC<br />$ make<br />$ make test# inspect output for anomalies</p><p>8.4 你可能想要安装包，当然不是安装在目录树上了。</p><p>在这儿，我假设softs拥有usr/local/tree，因为安装openssl的缺省的前缀/usr/local/ssl 。但是，也不是必须要安装这个包，因为你可以在src目录树外进行操作，来建立mod-ssl。</p><p>$ make install</p><p>8.5 配置open-ssl</p><p>$ cd /usr/local/src/chr/mod_ssl-2.6.6-1.3.12<br />$ ./configure -with-apache=../apache_1.3.12</p><p>8.6 进入Apache目录树中，完成建立、配置、运行和构造</p><p>$ cd /usr/local/src/chr/apache_1.3.12</p><p>non-DSO:</p><p>$ SSL_BASE=../openssl-0.9.5a RSA_BASE=../rsaref-2.0/local<br />./configure --prefix=/apache --with-layout=chroot<br />--enable-module=most --enable-module=so --enable-module=ssl<br />--disable-rule=SSL_COMPAT --enable-rule=SSL_SDBM<br />--activate-module=src/modules/php4/libphp4.a<br />--activate-module=src/modules/perl/libperl.a</p><p>DSO:</p><p>$ cd src/modules<br />$ make clean ## seems to be necessary if you previously compiled in the apache tree<br />$ cd ../../<br />$ SSL_BASE=../openssl-0.9.5a RSA_BASE=../rsaref-2.0/local<br />./configure --prefix=/apache --with-layout=chroot<br />--enable-module=most --enable-shared=max --enable-shared=ssl<br />--disable-rule=SSL_COMPAT --enable-rule=SSL_SDBM<br />$ make</p><p>8.7 重新安装Apache。如果他在运行，要停止运行再安装。</p><p>ROOT# chroot /www /apache/bin/apachectl stop<br />ROOT# make install ## I am root!</p><p>8.8 对于non-DSO安装你可以检测内部编译模块。</p><p>ROOT# chroot /www /apache/bin/httpd -l | grep -E '(php|perl|ssl)'<br />mod_ssl.c<br />mod_php4.c<br />mod_perl.c</p><p>8.9 在实现了虚拟根环境目录树中生成随机的设备</p><p>ROOT# cd /www/dev<br />ROOT# mknod random c 1 8<br />ROOT# mknod urandom c 1 9</p><p>8.10 将缺省配置文件融合到你当前的httpd.conf文件中。</p><p>我在不同于标准端口（80端口）的其他端口上进行了测试，但是对于安全端口（443端口），没有web服务起跑再它上面，所以我马上就会用一下这个端口。</p><p>在这个例子中，我对缺省的配置文件httpd.conf的一些修改如下：</p><p>User www <br />Group www <br />ServerName yourserver.yourdomain.here <br />Port 8088 ## pick a test port <br />Listen 8088 ## in 'IfDefine SSL' section <br />Listen 443 ## this is the standard secure port!</p><p>AddType application/x-httpd-php .php <br />AddType application/x-httpd-php-source .phps <br /># your Hello.pm script for mod_perl testing:</p><p>SetHandler perl-script <br />PerlHandler Apache::Hello</p><p>SSLCertificateFile /apache/conf/server.crt <br />SSLCertificateKeyFile /apache/conf/server.key <br /># in this example I generate the key and crt files into /apache/conf <br />8.11 如果你现在还没有一个服务器的关键字（keys）和认证（certficate），那么现在就生成它。</p><p>在这个例子中我假设openssl在你的路径中，因为你已经安装了它。如果没有，你就把它加到路径中。注意，我已经认定了我的关键字，如果你要做非常重要的事，你最好利用授权机制来分发这些关键字。</p><p>ROOT# cd /www/apache/conf<br />set up a path of random files（为random文件生成路径）<br />ROOT# randfiles='/var/log/messages:/proc/net/unix:/proc/stat:/proc/ksyms'<br />generate the server key（产生服务端的密钥）<br />ROOT# openssl genrsa -rand <br />$randfiles -out server.key 1024<br />产生带签名的请求（在认证自己的时候不要加密码）<br />注意你的Common Name必须匹配你完全有权访问的web server name<br />ROOT# openssl req -new -nodes -out request.pem -key server.key<br />签上你自己的密钥（有效期一年）<br />ROOT# openssl x509 -in request.pem -out server.crt -req -signkey server.key -days 365<br />保护你的密钥和证书<br />ROOT# chmod 400 server.*<br />删除请求文件<br />ROOT# rm request.pem<br />可选择性地加密你的密钥<br />ROOT# mv server.key server.key.unencrypted<br />ROOT# openssl rsa -des3 -in server.key.unencrypted -out server.key<br />ROOT# chmod 000 server.key.unencrypted ## better yet delete it!<br />当你改变注意，你决定从你的密钥中删除加密的密码。<br />ROOT# openssl rsa -in server.key -out server.key.un<br />ROOT# mv server.key.un server.key<br />ROOT# chmod 400 server.key</p><p>8.12 不用ssl来启动Apache，以确保它在工作。</p><p>ROOT# chroot /www /apache/bin/apachectl start<br />$ lynx -dump <a href="http://yourserver:8088/">http://yourserver:8088/</a></p><p>8.13 用ssl来重启Apache，并用netscape来测试它。</p><p>ROOT# chroot /www /apache/bin/apachectl stop<br />ROOT# chroot /www /apache/bin/apachectl startssl<br />$ netscape <a href="https://yourserver/">https://yourserver/</a></p><p>8.14 现在你可能想要编辑你的server配置文件，并在标准端口(80端口)上设置服务器。</p><p>如果你测试配置，你不需要在443端口上进行配置。</p><p>9.一些安全考虑</p><p>可以从一些在线Apache文档中获取帮助。一个需要特别注意的地方是在httpd脚本上进行的授权改变。</p><p>ROOT# chmod ugo-rw /www/apache/bin/*</p><p>10.摆脱你自己的虚拟根环境化环境</p><p>当你有意要摆脱自己的虚拟根环境化环境时，一定要十分小心。在Unix世界中完成一项任务总是有不同的方法，你可以尝试其他的方法。</p><p>我提供了下面一个例子，它可以通过cgi脚本或php来激发。</p><p>...<br />/** construct the file name as $f **/<br />$cmd = &quot;/bin/mail &quot;-s Some-subject-line -t <a href="mailto:webmaster@localhost">webmaster@localhost</a> -f $f&quot;&quot;;<br />$op = exec( $cmd, $arr, $retval );<br />...<br />?&gt;</p><p>文件被称为wwwmail.c。</p><p>11.安装以后进行清除工作</p><p>11.1 去除安装时一些必要的临时连接</p><p>ROOT# rm /apache /usr/Local</p><p>11.2 通过在etc/rc.d/init.d中安装称为httpd的启动脚本文件来自动启动Apache。如：</p><p>Standard appache on port 80<br />Apache on ports 80 and 443 (startssl)</p><p>接着在其上运行chkconfig来建立象征性的连接</p><p>ROOT# chkconfig --add httpd<br />ROOT# chkconfig --list httpd<br />httpd 0:off 1:off 2:on3:on4:on5:on6:off</p><p>11.3 自动的记录triming文件。</p><p>在RedHat系统中你可以自己定义要记录那个文件，及参数，只用在etc/logrotate/conf中说明就行了。</p><p>12.基于RPM的收获文件</p><p>在这儿我没有时间完全文本化它，你可以从RPMS中获取它，然后不需要编译原码就生成一个虚拟根环境化的Web目录树。现在我有两个脚本，以后我会对他们文档化的：</p><p>Script file based on Red Hat 7.0 that will harvest the RPMs <br />Script file for creating temporary SSL key and certificate (testing purposes only!!!)</p>]]></description><category>Solaris</category><comments>http://www.7layer.cn/cat_28/589/589/589.html#comment</comments><wfw:comment>http://www.7layer.cn/</wfw:comment><wfw:commentRss>http://www.7layer.cn/feed.asp?cmt=589</wfw:commentRss><trackback:ping>http://www.7layer.cn/cmd.asp?act=tb&amp;id=589&amp;key=7d3745f2</trackback:ping></item></channel></rss>
