保持快乐,善于表达,敢于创新

发布新日志

  • PERL, APACHE, SOLARIS CGI 配置

    2009-12-25 18:40:17

    今天很高兴能够安装和运行用perl作为脚本语言实现web服务。

    配置apache文件

    /etc/apache/httpd.conf

    更改如下:
    更改为红色字体:
    -----------------------------------------------------------------------------------

    MaxClients 256

    ---------------------------------------------------------------------------------

        #
        # ScriptAlias: This controls which directories contain server scripts.
        # ScriptAliases are essentially the same as Aliases, except that
        # documents in the realname directory are treated as applications and
        # run by the server when requested rather than as documents sent to the client.
        # The same rules about trailing "/" apply to ScriptAlias directives as to
        # Alias.
        #
        ScriptAlias /cgi-bin/ "/var/apache/htdocs/cgi-bin/"

    ---------------------------------------------------------------------------------------------
        #
        # "/var/apache/cgi-bin" should be changed to whatever your ScriptAliased
        # CGI directory exists, if you have that configured.
        #
        <Directory "/var/apache/htdocs/cgi-bin">
            AllowOverride all
            Options all
            Order allow,deny
            Allow from all
        </Directory>

    </IfModule>
    ------------------------------------------------------------------------------------------
     #
        # AddHandler allows you to map certain file extensions to "handlers",
        # actions unrelated to filetype. These can be either built into the server
        # or added with the Action command (see below)
        #
        # If you want to use server side includes, or CGI outside
        # ScriptAliased directories, uncomment the following lines.
        #
        # To use CGI scripts:
        #
        AddHandler cgi-script. .cgi .pl

    寻找到AddHandler   cgi-script.   .cgi。删除前面的#,在后面加上   .pl。

    -------------------------------------------------------------------------------------------
        #
        # AddType allows you to tweak mime.types without actually editing it, or to
        # make certain files to be certain types.
        #
        AddType application/x-tar .tgz
        AddType application/x-httpd-perl .pl


        AddType application/x-httpd-perl .cgi
    -------------------------------------------------------------------------------------------------


    #  General setup for the virtual host
    DocumentRoot "/var/apache/htdocs"
    ServerName 10.224.102.11
    ServerAdmin mysql@10.224.102.11
    ErrorLog /var/apache/logs/error_log
    TransferLog /var/apache/logs/access_log







  • Solaris 上的 APACHE 配置

    2009-12-25 10:05:14

    默认apache安装目录是:/usr/apache/
    配置目录是:/etc/apache/ , 此目录下面有三个文件:httpd.conf,access.conf和srm.conf, 目前其实有用的只有http.conf文件, 因为是为了兼容旧版本, 所以httpd.conf 里面已经包含access.conf 和 srm.conf的配置。
    httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同 用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
    除了这三个设置文件之外,Apache还使用mime.types文件用于标识不同文件对应的MIME类型, magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。

    由于在新版本的Apache中,所有的设置都被放在了httpd.conf中,因此只需要调整这个文件中的设置。以下使用缺省提供的httpd.conf为例,解释Apache服务器的各个设置选项。

    HTTP守护进程的运行参数
      httpd.conf中首先定义了一些httpd守护进程运行时需要的参数,来决定其运行方式和运行环境。
      ServerType standalone
      ServerType定义服务器的启动方式,缺省值为独立方式standalone,httpd


    ServerRoot "/usr/local"
      ServerRoot用于指定守护进程httpd的运行目录,httpd在启动之后将自动将进程的当前目录改变为这个目录,因此如果设置文件中指定的文件或目录是相对路径,那么真实路径就位于这个ServerRoot定义的路径之下。

      由于httpd会经常进行并发的文件操作,就需要使用加锁的方式来保证文件操作不冲突,由于NFS文件系统在文件加锁方面能力有限,因此这个目录应该是本地磁盘文件系统,而不应该使用NFS文件系统。

      #LockFile /var/run/httpd.lock
      LockFile参数指定了httpd守护进程的加锁文件,一般不需要设置这个参数, Apache服务器将自动在ServerRoot下面的路径中进行操作。但如果ServerRoot为NFS文件系统,便需要使用这个参数指定本地文件系统中的路径。

      PidFile /var/run/httpd.pid
      PidFile指定的文件将记录httpd守护进程的进程号,由于 httpd能自动复制其自身,因此系统中有多个httpd进程,但只有一个进程为最初启动的进程,它为其他进程的父进程,对这个进程发送信号将影响所有的 httpd进程。PidFILE 定义的文件中就记录httpd父进程的进程号。

      ScoreBoardFile /var/run/httpd.scoreboard
      httpd使用 ScoreBoardFile来维护进程的内部数据,因此通常不需要改变这个参数,除非管理员想在一台计算机上运行几个Apache服务器,这时每个 Apache服务器都需要独立的设置文件htt pd.conf,并使用不同的ScoreBoardFile。
     
      #ResourceConfig conf/srm.conf
      #AccessConfig conf/access.conf
      这两个参数ResourceConfig和AccessConfig,就用于和使用 srm.conf 和 access.conf 设置文件的老版本Apache兼容。如果没有兼容的需要,可以将对应的设置文件指定为/dev/null,这将表示不存在其他设置文件,而仅使用 httpd.conf 一个文件来保存所有的设置选项。
      Timeout 300
      Timeout定义客户程序和服务器连接的超时间隔,超过这个时间间隔(秒)后服务器将断开与客户机的连接。

    KeepAlive On
      在HTTP 1.0中,一次连接只能作传输一次HTTP请求,而KeepAlive参数用于支持HTTP 1.1版本的一次连接、多次传输功能,这样就可以在一次连接中传递多个HTTP请求。虽然只有较新的浏览器才支持这个功能,但还是打开使用这个选项。

    MaxKeepAliveRequests 100
      MaxKeepAliveRequests为一次连接可以进行的HTTP请求的最大请求次数。将其值设为0将支持在一次连接内进行无限次的传输请求。事实上没有客户程序在一次连接中请求太多的页面,通常达不到这个上限就完成连接了。

      KeepAliveTimeout 15
      KeepAliveTimeout测试一次连接中的多次请求传输之间的时间,如果服务器已经完成了一次请求,但一直没有接收到客户程序的下一次请求,在间隔超过了这个参数设置的值之后,服务器就断开连接。

      MinSpareServers 5MaxSpareServers 10
      在使用子进程处理HTTP请求的Web服务器上,由于要首先生成子进程才能处理客户的请求,因此反应时间就有一点延迟。但是,Apache服务器使用了一个特殊技术来摆脱这个问题,这就是预先生成多个空余的子进程驻留在系统中,一旦有请求出现,就立即使用这些空余的子进程进行处理,这样就不存在生成子进程造成的延迟了。在运行中随着客户请求的增多,启动的子进程会随之增多,但这些服务器副本在处理完一次HTTP请求之后并不立即退出,而是停留在计算机中等待下次请求。但是空余的子进程副本不能光增加不减少,太多的空余子进程没有处理任务,也占用服务器的处理能力,因此也要限制空余副本的数量,使其保持一个合适的数量,使得既能及时回应客户请求,又能减少不必要的进程数量。

      因此就可以使用参数MinSpareServers来设置最少的空余子进程数量, 以及使用参数MaxSpareServers 来限制最多的空闲子进程数量,多余的服务器进程副本就会退出。根据服务器的实际情况来进行设置,如果服务器性能较高,并且也被频繁访问,就应该增大这两个参数的设置。对于高负载的专业网站,这两个值应该大致相同,并且等同于系统支持的最多服务器副本数量, 也减少不必要的副本退出。

      StartServers 5
      StartServers参数就是用来设置httpd启动时启动的子进程副本数量,这个参数与上面定义的MinSpareServers和MaxSpareServers参数相关,都是用于启动空闲子进程以提高服务器的反应速度的。这个参数应该设置为前两个值之间的一个数值,小于MinSpareServers和大于MaxS pareServers都没有意义。

     MaxClients 150
      在另一方面,服务器的能力毕竟是有限的,不可能同时处理无限多的连接请求,因此参数 Maxclient s就用于规定服务器支持的最多并发访问的客户数,如果这个值设置得过大,系统在繁忙时不得不在过多的进程之间进行切换来为太多的客户进行服务,这样对每个客户的反应就会减慢,并降低了整体的效率。如果这个值设置的较小,那么系统繁忙时就会拒绝一些客户的连接请求。当服务器性能较高时,就可以适当增加这个值的设置。对于专业网站,应该使用提高服务器效率的策略,因此这个参数不能超过硬件本身的限制,如果频繁出现拒绝访问现象,就说明需要升级服务器硬件了。对于非专业网站,不太在意对客户浏览器的反应速度,或者认为反应速度较慢也比拒绝连接好,就也可以略微超过硬件条件来设置这个参数。

      这个参数限制了MinSpareServers和MaxSpareServers的设置,它们不应该大于这个参数的设置。

      MaxRequestsPerChild 30
      使用子进程的方式提供服务的Web服务,常用的方式是一个子进程为一次连接服务,这样造成的问题就是每次连接都需要生成、退出子进程的系统操作,使得这些额外的处理过程占据了计算机的大量处理能力。因此最好的方式是一个子进程可以为多次连接请求服务,这样就不需要这些生成、退出进程的系统消耗,Apache就采用了这样的方式,一次连接结束后,子进程并不退出,而是停留在系统中等待下一次服务请求,这样就极大的提高了性能。

      但由于在处理过程中子进程要不断的申请和释放内存,次数多了就会造成一些内存垃圾,就会影响系统的稳定性,并且影响系统资源的有效利用。因此在一个副本处理过一定次数的请求之后,就可以让这个子进程副本退出,再从原始的httpd进程中重新复制一个干净的副本,这样就能提高系统的稳定性。这样,每个子进程处理服务请求次数由MaxRe questPerChild定义。缺省的设置值为30,这个值对于具备高稳定性特点的Linux系统来讲是过于保守的设置,可以设置为1000甚至更高,设置为0支持每个副本进行无限次的服务处理。

      #Listen 3000
      #Listen 12.34.56.78:80
      #BindAddress *

      Listen参数可以指定服务器除了监视标准的80端口之外,还监视其他端口的HTTP请求。由于FreeBSD系统可以同时拥有多个IP地址,因此也可以指定服务器只听取对某个BindAddress< /B>的IP地址的HTTP请求。如果没有配置这一项,则服务器会回应对所有IP的请求。
    即使使用了BindAddress参数,使得服务器只回应对一个IP地址的请求,但是通过使用扩展的Listen参数,仍然可以让HTTP守护进程回应对其他IP地址的请求。此时Listen参数的用法与上面的第二个例子相同。这种比较复杂的用法主要用于设置虚拟主机。此后可以用VirtualHost参数定义对不同IP的虚拟主机,然而这种用法是较早的HTTP 1.0标准中设置虚拟主机的方法,每针对一个虚拟主机就需要一个IP地址,实际上用处并不大。在HTTP 1.1中,增加了对单IP地址多域名的虚拟主机的支持,使得虚拟主机的设置具备更大的意义。

      LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
      LoadModule info_module libexec/apache/mod_info.so
      LoadModule speling_module libexec/apache/mod_speling.so
      LoadModule proxy_module libexec/apache/libproxy.so
      LoadModule rewrite_module libexec/apache/mod_rewrite.so
      LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
      LoadModule db_auth_module libexec/apache/mod_auth_db.so
      LoadModule digest_module libexec/apache/mod_digest.so
      LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
      LoadModule expires_module libexec/apache/mod_expires.so
      LoadModule headers_module libexec/apache/mod_headers.so
      LoadModule usertrack_module libexec/apache/mod_usertrack.so
      LoadModule unique_id_module libexec/apache/mod_unique_id.so
      ClearModuleList
      AddModule mod_env.c
      AddModule mod_log_config.c
      AddModule mod_mime_magic.c
      AddModule mod_mime.c
      AddModule mod_negotiation.c
      AddModule mod_status.c
      AddModule mod_info.c
      AddModule mod_include.c
      AddModule mod_autoindex.c
      AddModule mod_dir.c
      AddModule mod_cgi.c
      AddModule mod_asis.c
      AddModule mod_imap.c
      AddModule mod_actions.c
      AddModule mod_speling.c
      AddModule mod_userdir.c
      AddModule mod_proxy.c
      AddModule mod_alias.c
      AddModule mod_rewrite.c
      AddModule mod_access.c
      AddModule mod_auth.c
      AddModule mod_auth_anon.c
      AddModule mod_auth_db.c
      AddModule mod_digest.c
      AddModule mod_cern_meta.c
      AddModule mod_expires.c
      AddModule mod_headers.c
      AddModule mod_usertrack.c
      AddModule mod_unique_id.c
      AddModule mod_so.c
      AddModule mod_setenvif.c

      Apache服务器的一个重要特性就是其模块化的结构,这不但表现为其能在编译时能通过新的模块加入新的功能,还表现为其模块可以动态加载入 http服务程序中,而不必载入不需要的模块。使用Apache的动态加载模块只需要设置好Load Module和AddModule参数就可以了,这种特性就是Apache的 DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一个简单的事情,不适当的改动这里的设置就可能造成服务器不能正常启动。因此如果不是要增加或减少服务器提供的功能,就不要改动这里的设置。
    上面这些列表就显示了Linux下的缺省Apache服务器支持的模块,事实上很多模块是没有必要的,不必要模块不会被载入内存。模块可以静态连接到pache 服务器内部,也可以这样动态加载,将Apache的特性都编译成动态可加载模块是该Port的做法,而不是Apache的缺省做法,这样就以牺牲很小的性能的同时,带来极大的灵活性。

      因而动态可加载的能力还是对性能有轻微的影响,因此可以重新编译Apache,将自己所需要的功能编译进Apache 服务器内部,可以让系统显得更为干净,效率也有轻微的提高。通常仅仅为了这一个目的就重新编译Apache是没有必要的,如果需要增加其他特性而重新编译 Apache,不妨在增加其他模块的同时将所有的模块都静态连接入Apache 服务器。有的使用者更喜欢动态加载模块,那么也不妨全部都使用动态加载模块。

      这些模块都被放置到/usr/local/apache/libexec/目录下,每个模块对应Apache服务器的一个特性。详细解释每个模块的功能需要相当多的篇幅,其中比较重要的特性将在后面相应的地方中进行解释,而具体每个模块的功能及用法就需要查看Apache的文档。

      #ExtendedStatus On
      Apache服务器可以通过特殊的HTTP请求,来报告自身的运行状态,打开这个ExtendedStatus 参数可以让服务器报告更全面的运行状态信息。
      
      主服务器设置
      Apache服务器需要各种设置,以定义自己使用各种参数以提供Web服务。对于使用虚拟主机的情况,除了在虚拟主机的定义项中覆盖的设置之外(有的设置必须重新定义),这里的设置也是虚拟主机的缺省设置。

      Port 80
      Port定义了Standalone模式下httpd守护进程使用的端口,标准端口是80。这个选项只对于以独立方式启动的服务器才有效,对于以inetd方式启动的服务器则在inetd.conf中定义使用哪个端口。

      在Unix下使用80端口需要root权限,一些管理员为了安全的原因,认为 httpd 服务器不可能没有安全漏洞,因而更愿意使用普通用户的权限来启动服务器,这样就不能使用80端口及其他小于1024的端口,而必须使用大于 1024的端口来启动httpd,一般情况下8000或8080也是常用的端口。而Apache httpd服务器本身可以在以root权限打开80端口后再改变为普通用户身份进行运行,这样就减少了危险性,因而就不需要考虑这个安全问题。但是如果普通用户也想安装配置自己的WWW服务器,那么就不得不使用大于1024的端口。
    User nobody
      Group nogroup
      User和Group配置是Apache的安全保证,Apache 在打开端口之后,就将其本身设置为这两个选项设置的用户和组权限进行运行,这样就降低了服务器的危险性。这个选项也只用于 Standalone模式,inetd模式在inetd.conf中指定运行Apache的用户。由于服务器必须执行改变身份的setuid()操作,因此初始进程应该具备root权限,如果是使用非root用户来启动Aapche,这个配置就不会发挥作 用。

      缺省设置为nobody和nogroup,这个用户和组在系统中不拥有文件,保证了服务器本身和由它启动的CGI 进程没有权限更改文件系统。在某些情况下,例如为了运行CGI与Unix交互,也需要让服务器来访问服务器上的文件,如果仍然使用nobody和 nogroup,那么系统中将会出现属于nobody的文件,这对于系统安全是不利的,因为其他程序也会以no body和nogroup的权限执行某些操作,就有可能访问这些nobody拥有的文件,造成安全问题。一般情况下要为Web服务设定一个特定的用户和组,同时在这里更改用户和组设置。

      ServerAdmin you@your.address
      配置文件中应该改变的也许只有ServerAdmin,这一项用于配置WWW服务器的管理员的email地址,这将在HTTP服务出现错误的条件下返回给浏览器,以便让Web使用者和管理员联系,报告错误。习惯上使用服务器上的webmaster作为WWW服务器的管理员,通过邮件服务器的别名机制,将发送到 webmaster 的电子邮件发送给真正的Web管理员。

      #ServerName new.host.name
      缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者没有正式的DNS名字,也可以在这里指定IP地址。当 ServerName设置不正 确的时候,服务器不能正常启动。

      通常一个Web服务器可以具有多个名字,客户浏览器可以使用所有这些名字或IP地址来访问这台服务器,但在没有定义虚拟主机的情况下,服务器总是以自己的正式名字回应浏览器。ServerName就定义了Web服务器自己承认的正式名字,例如一台服务器名字(在DNS中定义了A类型)为exmaple.org.cn,同时为了方便记忆还定义了一个别名(CNAME记录)为www.exmaple.org.cn,那么Apache自动解析得到的名字就为example.org.cn,这样不管客户浏览器 使用哪个名字发送请求,服务器总是告诉客户程序自己为 example.org.cn。虽然这一般并不会造成什么问题,但是考虑到某一天服务器可能迁移到其他计算机上,而只想通过更改DNS中的www别名配置就完成迁移任务,所以不想让客户在其书签中使用 Linux 记录下这个服务器的地址,就必须使用ServerName来重新指定服务器的正式名字。

    DocumentRoot "/www/"
      DocumentRoot定义这个服务器对外发布的超文本文档存放的路径,客户程序请求的UR L就被映射为这个目录下的网页文件。这个目录下的子目录,以及使用符号连接指出的文件和目录都能被浏览器访问,只是要在URL上使用同样的相对目录名。

      注意,符号连接虽然逻辑上位于根文档目录之下,但实际上可以位于计算机上的任意目录中,因此可以使客户程序能访问那些根文档目录之外的目录,这在增加了灵活性的同时但减少了安全性。Apache在目录的访问控制中提供了FollowSymLinks选 项来打开或关闭支持符号连接的特性。

      Options FollowSymLinks
      AllowOverride None
      Apache服务器可以针对目录进行文档的访问控制,然而访问控制可以通过两种方式来实现,一个是在设置文件 httpd.conf(或access.conf)中针对每个目录进行设置,另一个方法是在每个目录下设置访问控制文件,通常访问控制文件名字为.htaccess。虽然使用这两个方式都能用于控制浏览器的访问,然而使用配置文件的方法要求每次改动后重新启动httpd守护进程,比较不灵活,因此主要用于配置服务器系统的整体安全控制策略,而使用每个目录下的.htaccess文件设置具体目录的访问控制更为灵活方便。

      Directory语句就是用来定义目录的访问限制的,这里可以看出它的标准语法,为一个目录定义访问限制。上例的这个设置是针对系统的根目录进行的,设置了允许符号连接的选项FollowSymLinks ,以及使用AllowOverride None表示不允许这个目录下的访问控制文件来改变这里进行的配置,这也意味着不用查看这个目录下的相应访问控制文件。

      由于Apache对一个目录的访问控制设置是能够被下一级目录继承的,因此对根目录的设置将影响到它的下级目录。注意由于 AllowOverride None的设置,使得Apache服务器不需要查看根目录下的访问控制文件,也不需要查看以下各级目录下的访问控制文件,直至httpd.conf(或 access.conf )中为某个目录指定了允许Alloworride,即允许查看访问控制文件。由于Apache对目录访问控制是采用的继承方式,如果从根目录就允许查看访问控制文件,那么Apache就必须一级一级的查看访问控制文件,对系统性能会造成影响。而缺省关闭了根目录的这个特性,就使得Apache从httpd.conf中具体指定的目录向下搜寻,减少了搜寻的级数,增加了系统性能。因此对于系统根目录设置 AllowOverride None不但对于系统安全有帮助,也有益于系统性能。

      Options Indexes FollowSymLinks
      AllowOverride None
      Order allow,deny
      Allow from all
      这里定义的是系统对外发布文档的目录的访问设置,设置不同的 AllowOverride选项,以定义配置文件中的目录设置和用户目录下的安全控制文件的关系,而Options选项用于定义该目录的特性。
    配置文件和每个目录下的访问控制文件都可以设置访问限制,设置文件是由管理员设置的,而每个目录下的访问控制文件是由目录的属主设置的,因此管理员可以规定目录的属主是否能覆盖系统在设置文件中的设置,这就需要使用 啊AllowOverride参数进行设置,通常可以设置的值为:

      AllowOverride的设置 对每个目录访问控制文件作用的影响
      All 缺省值,使访问控制文件可以覆盖系统配置
      None 服务器忽略访问控制文件的设置
      Options 允许访问控制文件中可以使用Options参数定义目录的选项
      FileInfo 允许访问控制文件中可以使用AddType等参数设置

      AuthConfig 允许访问控制文件使用AuthName,AuthType等针对每个用户的认证机制,这使目录属主能用口令和用户名来保护目录 Limit 允许对访问目录的客户机的IP地址和名字进行限制每个目录具备一定属性,可以使用Options来控制这个目录下的一些访问特性设置,以下为常用的特性选项:

      Options设置 服务器特性设置
      All 所有的目录特性都有效,这是缺省状态
      None 所有的目录特性都无效

      FollowSymLinks 允许使用符号连接,这将使浏览器有可能访问文档根目录 (DocumentRoot)之外的文档 SymLinksIfOwnerMatch 只有符号连接的目的与符号连接本身为同一用户所拥有时,才允许访问,这个设置将增加一些安全性ExecCGI 允许这个目录下可以执行CGI程序 Indexes 允许浏览器可以生成这个目录下所有文件的索引,使得在这个目录下没有index.html(或其他索引文件)时,能向浏览器发送这个目录下的文件列表

      此外,上例中还使用了Order、Allow、Deny等参数,这是Limit语句中用来根据浏览器的域名和 IP地址来控制访问的一种方式。其中Order定义处理Allow和Deny的顺序,而Allow、Deny则针对名字或IP进行访问控制设置,上例使用 allowfrom all,表示允许所有的客户机访问这个目录,而不进行任何限制。

      UserDir public_html
      当在一台Linux上运行Apache服务器时,这台计算机上的所有用户都可以有自己的网页路径,形如 http://example.org.cn/~user,使用波浪符号加上用户名就可以映射到用户自己的网页目录上。映射目录为用户个人主目录下的一个子目录,其名字就用UseDir这个参数进行定义,缺省为public_html。如果不想为正式的用户提供网页服务,使用DISABLED作Use rDir的参数即可。

    # AllowOverride FileInfo AuthConfig Limit
      # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
      # Order allow,deny
      # Allow from all
      # Order deny,allow
      # Deny from all
      这里可以看到Directory的另一个用法,即可以通过简单的模式匹配方法,针对分布在不同目录下的子目录定义访问控制权限。这样设置就需要Apache服务器对每个路径进行额外的处理,因此就会降低服务器的性能,所以缺省情况并没有打开这种访问限制。

      这里可以看到另外一个语句Limit,Limit语句就是用来针对具体的请求方法来设定访问控制的,其中可以使用GET、POST等各种服务器支持的请求方法做Limit的参数,来设定对不同请求方法的访问限制。一般可以打开对GET、POST、 HEAD三种请求方法,而屏蔽其他的请求方法,以增加安全性。Limit语句中,可以用Order 、Allow、Deny,Allow和Deny中可以使用匹配的方法针对域名和IP进行限制,只是对于域名是从后向前匹配,对于IP地址则从前向后匹配。

      DirectoryIndex index.html
      很多情况下,URL中并没有指定文档的名字,而只是给出了一个目录名。那么 Apache服务器就自动返回这个目录下由DirectoryIndex定义的文件,当然可以指定多个文件名字,系统会这个目录下顺序搜索。当所有由 DirectoryInde x指定的文件都不存在时,Apache服务器可以根据系统设置,生成这个目录下的所有文件列表,提供用户选择。此时该目录的访问控制选项中的 Indexes选项(Options Indexes )必须打开,以使得服务器能够生成目录列表,否则Apache将拒绝访问。

      AccessFileName .htaccess
      AccessFileName定义每个目录下的访问控制文件的文件名,缺省为.htaccess,可以通过更改这个文件,来改变不同目录的访问控制限制。

      Order allow,deny
      Deny from all
      除了可以针对目录进行访问控制之外,还可以根据文件来设置访问控制,这就是File语句的任务。使用File 语句,不管文件处于哪个目录,只要名字匹配,就必须接受相应的访问控制。这个语句对于系统安全比较重要,例如上例将屏蔽所有的使用者不能访问.htaccess文件,这样就避免.htaccess中的关键安全信息不至于被客户获取。

      #CacheNegotiatedDocs
      缺省情况下如果代理服务器和Apache服务器协商是否缓存其网页,Apache给予否定的回答,不希望自己的网页被代理服务器缓存。然而这样就不能有效的利用代理服务器的优势,因此可以设置CacheNegotiatieDocs 选项, 使得代理服务器可以对网页进行缓存。然而即使不设置这个选项,有的代理服务器(或通过调整设置)也能对网页进行缓存。

    UseCanonicalName On
      打开这个UseCanonicalName是Web服务器的标准做法,因为客户发送的大部分请求都是对本服务器的引用,这样服务器就能使用ServerName和Port选项的设置内容构建完整的URL,并回应客户,使浏览器能得到规范的 URL。如果 将这个参数设置为Off,那么Apache将使用从客户请求中获得服务器的名字和端口值(支持HTTP 1.1的客户的请求中将会有这些信息),重新构建URL。

      TypesConfig /usr/local/apache/etc/mime.types
      TypeConfig用于设置保存有不同的MIME类型数据的文件名,在Linux下缺省设置为/usr/local/apache/etc/mime.types。

      DefaultType text/plain
      如果Web服务器不能决定一个文档的缺省类型,这通常表示文档使用了非标准的后缀,那么服务器就使用 DefaultType定义的MIME类型将文档发送给客户浏览器。这里的设置为text/plain,这样设置的问题是,如果服务器不能判断出文档的 MIME,那么大部分情况下这个文档为一个二进制文档,但使用 text/plain格式发送回去,浏览器将在内部打开它而不会提示保存。因此建议将这个设置更改为 application/octet-stream,这样浏览器将提示用户进行保存。

      MIMEMagicFile /usr/local/apache/etc/magic
      除了从文件的后缀出发来判断文件的 MIME类型之外,Apache还可以进一步分析文件的一些特征,来判断文件的真实MIME类型。这个功能是由mod_mime_magic 模块实现的,它需要一个记录各种MIME类型特征的文件,以进行分析判断。上面的设置是一个条件语句,如果载入了这个模块,就必须指定相应的标志文件 magic的位置。

      Apache服务器配置全攻略(六)
      通常连接时,服务器仅仅可以得到客户机的IP地址,如果要想获得客户机的主机名,以进行日志记录和提供给 CGI程序使用,就需要使用这个HostnameLookups 选项,将其设置为On打开DNS反查功能。但是这将使服务器对每次客户请求都进行DNS查询,增加了系统开销,使得反应变慢,因此缺省设置为使用Off关闭此选项。关闭选项之后,服务器就不会获得客户机的主机名,而只能使用IP地址来记录客户。

      ErrorLog /var/log/httpd-error.log
      LogLevel warn
      LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent} "" combined
      LogFormat "%h %l %u %t "%r" %>s %b" common
      LogFormat "%{Referer}i -> %U" referer
      LogFormat "%{User-agent}i" agent
      #CustomLog /var/log/httpd-access.log common
      #CustomLog /var/log/httpd-referer.log referer
      #CustomLog /var/log/httpd-agent.log agent
      CustomLog /var/log/httpd-access.log combined
      这里定义了系统日志的形式,对于服务器错误记录, 由ErrorLog、 LogLevel 来定义不同的错误日志文件及其记录内容。

    对于系统的访问日志,缺省使用CustomLog参数定义日志的位置,缺省使用 combined 参数指定将所有的访问日志放在一个文件中,然而也可以将不同种类的访问日志放在不同的日志记录文件中,这是通过在 CustomLog中指定不同的记录类型来完成的。common表示普通的对单页面请求访问记录,referer表示每个页面的引用记录,可以看出一个页面中包含的请求数,agent表示对客户机的类型记录,显然可以将现有的combined 定义的设置行注释掉,并使用common、referer和agent作为CustomLog的参数,来为不同种类的日志分别指定日志记录文件。

      显然,LogFormat是用于定义不同类型的日志进行记录时使用的格式, 这里使用了以%开头的宏定义,以记录不同的内容。

      如果这些参数指定的文件使用的是相对路径,那么就是相对于ServerRoot的路径。

      ServerSignature On
      一些情况下,例如当客户请求的网页并不存在时,服务器将产生错误文档,缺省情况下由于打开了 ServerSignature选项,错误文档的最后一行将包含服务器的名字、Apache的版本等信息。有的管理员更倾向于不对外显示这些信息,就可以将这个参数设置为Off,或者设置为Email,最后一行将替换为对 ServerAdmin 的Email提示。

      Alias /icons/ "/www/icons/"
      Options Indexes MultiViews
      AllowOverride None
      Order allow,deny
      Allow from all
      Alias参数用于将URL与服务器文件系统中的真实位置进行直接映射,一般的文档将在DocumentRoot 中进行查询,然而使用Alias定义的路径将直接映射到相应目录下,而不再到DocumentRoot 下面进行查询。因此Alias可以用来映射一些公用文件的路径,例如保存了各种常用图标的icons路径。这样使得除了使用符号连接之外,文档根目录(DocumentRoot)外的目录也可以通过使用了Alias映射,提供给浏览器访问。

      定义好映射的路径之后,应该需要使用Directory语句设置访问限制。

      ScriptAlias /cgi-bin/ "/www/cgi-bin/"
      AllowOverride None
      Options None
      Order allow,deny
      Allow from all

      ScriptAlias也是用于URL路径的映射,但与Alias的不同在于,ScriptAlias 是用于映射CGI程序的路径,这个路径下的文件都被定义为CGI程序,通过执行它们来获得结果,而非由服务器直接返回其内容。缺省情况下CGI程序使用 cgi-bin目录作为虚拟路径。

    # Redirect old-URI new-URL
      Redirect参数是用来重写URL的,当浏览器访问服务器上的一个已经不存在的资源的时候,服务器返回给浏览器新的URL,告诉浏览器从该URL中获取资源。这主要用于原来存在于服务器上的文档,改变了位置之后,而又希望能使用老URL能访问到, 以保持与以前的URL兼容。

      IndexOptions FancyIndexing
      AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
      AddIconByType (TXT,/icons/text.gif) text/*
      AddIconByType (IMG,/icons/image2.gif) image/*
      AddIconByType (SND,/icons/sound2.gif) audio/*
      AddIconByType (VID,/icons/movie.gif) video/*
      AddIcon /icons/binary.gif .bin .exe
      AddIcon /icons/binhex.gif .hqx
      AddIcon /icons/tar.gif .tar
      AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
      AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
      AddIcon /icons/a.gif .ps .ai .eps
      AddIcon /icons/layout.gif .html .shtml .htm .pdf
      AddIcon /icons/text.gif .txt
      AddIcon /icons/c.gif .c
      AddIcon /icons/p.gif .pl .py
      AddIcon /icons/f.gif .for
      AddIcon /icons/dvi.gif .dvi
      AddIcon /icons/uuencoded.gif .uu
      AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
      AddIcon /icons/tex.gif .tex
      AddIcon /icons/bomb.gif core
      AddIcon /icons/back.gif ..
      AddIcon /icons/hand.right.gif README
      AddIcon /icons/folder.gif ^^DIRECTORY^^
      AddIcon /icons/blank.gif ^^BLANKICON^^
      DefaultIcon /icons/unknown.gif
      #AddDescription "GZIP compressed document" .gz
      #AddDescription "tar archive" .tar
      #AddDescription "GZIP compressed tar archive" .tgz
      ReadmeName README
      HeaderName HEADER

      IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
      当一个 HTTP请求的URL为一个目录的时候,服务器返回这个目录中的索引文件。但如果一个目录中不存在缺省的索引文件,并且该服务器又许可显示目录文件列表的时候,就会显示出这个目录中的文件列表,为了使得这个文件列表能具有可理解性,而不仅仅是一个简 单的列表,就需要前面的这些设置参数。

    如果使用了IndexOptions FancyIndexing选项,可以让服务器产生的目录列表中针对各种不同类型的文档引用各种图标。而哪种文件使用哪种图标,则使用下面的 AddIconByEncoding、AddIconByType以及AddIcon来定义,分别依据MIME 的编码、类型以及文件的后缀来判断使用何种图标。如果不能确定文档使用的图标,就使用 DefaultIcon定义的缺省图标。

      同样,使用AddDescription可以为不同类型的文档加入不同的描述。并且,服务器还在目录下,查询使用ReadmeName和 HeaderName定义的文件(自动加上 .html后缀,如果没有发现,再使用.txt后缀进行搜索),如果发现了这些文件,就在文件列表之前首先显示这些文件的内容,以使得普通目录列表具备更大的可理解性。

      IndexIgnore让服务器在列出文件列表时忽略相应的文件, 这里使用模式配置的方式定义文件名。
      AddEncoding x-compress Z
      AddEncoding x-gzip gz
      AddEncoding用于告诉一些使用压缩的MIME类型,这样可以让浏览器进行解压缩操作。
      AddLanguage en .en
      AddLanguage fr .fr
      AddLanguage de .de
      AddLanguage da .da
      AddLanguage el .el
      AddLanguage it .it
      LanguagePriority en fr de

      一个HTML文档可以同时具备多个语言的版本,如对于file1.html文档可以具备file1.html.en、 file1.html.fr 等不同的版本,每个语言后缀必须使用 AddLanguage进行定义。这样服务器可以针对不同国家的客户,通过与浏览器进行协商,发送不同的语言版本。而LanguagePriority 定义不同语言的优先级,以便在浏览器没有特殊要求时,按照顺序使用不同的语言版本回应对file1.html 的请求。这个国际化的能力实际的应用并不多。

      #AddType application/x-httpd-php .phtml
      #AddType application/x-httpd-php-source .phps
      AddType参数可以为特定后缀的文件指定MIME类型,这里的设置将覆盖 mime.types中的设置。
      #AddHandler cgi-script. .cgi

      AddHandler是用于指定非静态的处理类型,用于定义文档为一个非静态的文档类型,需要进行处理,再向浏览器返回处理结果。例如上面注释中的设置是将以.cgi结尾的文件设置为cgi-script类型,那么服务器将启动这个CGI程序以进行处理。如果需要在前面AliasScript定义的路径之外执行CGI程序,就需要使用这个参数进行设置,此后以.cgi结尾的文件将被当作CGI程序执行。

      在配置文件、这个目录中的.htaccess以及其上级目录的.htaccess中必须允许执行CGI程序,这需要通过Options ExecCGI参数设定。

      #AddType text/html .shtml
      #AddHandler server-parsed .shtml

      另外一种动态进行处理的类型为server-parsed,由服务器自身预先分析网页内的标记,将标记更改为正确的HTML标识。由于 server-parsed需要对text/html 类型的文档进行处理,因此首先定义了对应的.shtml为text/html类型。

      然而要支持SSI,还要首先要在配置文件(或.htaccess)中使用Options Includes允许该目录下的文档可以为SSI类型,或使用Options IncludesNOExec让执行普通的SSI标志,但不执行其中引用的外部程序。

      另一种指定server-parsed类型的方式为使用XBitBack设置选项,如果将 XBitHack设置为On,服务器将检查所有text/html类型的文档(包括.html后缀的文档),如果发现文件属性具备执行位 “x",则服务器就认为它是服务器分析文档,需要服务器进行处理。推荐使用AddHandler进行设置,而将XBitBack 设置为Off,因为使用XBitBack将对所有的HTML文档都执行额外的检查,降低了效率。

      #AddHandler send-as-is asis
      #AddHandler imap-file map
      #AddHandler type-map var

      上面被注释的AddHandler用于支持Apache服务器的asis、map和var处理能力

      # Action media/type /cgi-script/location
      # Action handler-name /cgi-script/location

      因为Apache内部提供的处理功能有限,因此可以使用Action为服务器定义外部程序作为可处理的动态文档类型,这些外部程序与标准CGI 程序相同,都是对输入的数据处理之后,再输出不同MIME类型的结果。例如要定义一个对特殊后缀wri都先执行 wri2txt进行处理操作,再返回结果的操作,可以使用:

      Action windows-writer /bin/wri2txt
      AddHandler windows-writer wri

      更进一步,可以直接使用Action定义对某个MIME类型预先进行处理操作,这需要例子中第一种格式的Action 参数设置方式。这样设置方式就不再需要额外的AddHandler用来将处理操作与文件后缀联系起来,而是使用Action直接处理MIME类型的文件。但如果文档后缀没有正式的MIME类型,还需要先定义一个MIME类型。

      #MetaDir .web
      #MetaSuffix .meta.

      Meta信息是在文档发送给客户之前,预先发送给客户浏览器一些数据,因此浏览器可以通过HEAD请求来访问这些Meta信息而不必真正通过 GET来返回全部文档数据。服务器通常发送给浏览器的是一些标准的HTTP头信息,如果要想增加额外的信息,就需要使用MetaDir来定义Meta数据存放的目录, 而MetaS uffix用于指定包含Meta数据的文件后缀。

      #ErrorDocument 500 "The server made a boo boo.
      #ErrorDocument 404 /missing.html
      #ErrorDocument 404 /cgi-bin/missing_handler.pl
      #ErrorDocument 402
      http://some.other_server.com/subscription_info.html

      如果客户请求的网页不存在,或者没有访问权限等情况发生时,服务器将产生一个错误代码,同时也将回应客户浏览器一个标识错误的网页。

      ErrorDocument就用于设置当出现哪个错误时应该回应客户浏览器那些内容,ErrorDocument的第一个参数为错误的序号,第二个参数为回应的数据,可以为简单的文本,本地网页,本地CGI程序,以及远程主机上的网页。

      BrowserMatch "Mozilla/2" nokeepalive
      BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
      BrowserMatch "RealPlayer 4.0" force-response-1.0
      BrowserMatch "Java/1.0" force-response-1.0
      BrowserMatch "JDK/1.0" force-response-1.0
      BrowserMatch命令为特定的客户程序,设置特殊的参数,以保证对老版本浏览器的兼容性,并支持新浏览器的新特性。
      # SetHandler server-status
      # Order deny,allow
      # Deny from all
      # Allow from .your_domain.com
      # SetHandler server-info
      # Order deny,allow
      # Deny from all
      # Allow from .your_domain.com
      # Deny from all
      # ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi

      用于设置访问控制的设置主要是针对目录和文件进行设置的,然而也可以针对不同的URL进行访问控制的设置,这样就不必担心 ScriptAlias、Alias是否将路径设置到了受控制的目录之外了。针对URL进行控制的语句为 Location语句,这样不但能对服务器上的文件、CGI提供保护,此外,它还能保护不能找到对应文件,而是由服务器本身提供的特殊功能URL。http://servername/server-status用于报告当前Apache服务器的状态,http://servername/server-info用于报告Apache 服务器的统计信息。与此相关的设置还有ExtendedStatus参数,可以让服务器输出更详细的的报告。

      #ProxyRequests On
      # Order deny,allow
      # Deny from all
      # Allow from .your_domain.com
      #ProxyVia On
      #CacheRoot "/www/proxy"
      #CacheSize 5
      #CacheGcInterval 4
      #CacheMaxExpire 24
      #CacheLastModifiedFactor 0.1
      #CacheDefaultExpire 1
      #NoCache a_domain.com another_domain.edu joes.garage_sale.com

      Apache服务器本身就具备代理的功能,然而这要求加载入mod_proxy模块。这能使用IfModule语句进行判断,如果存在 mod_proxy模块,就使用ProxyRequests打开代理支持。此后的Directory用于设置对Pro xy功能的访问权限设置,以及用于设置缓冲的各个参数设置。

      虚拟主机

      #NameVirtualHost 12.34.56.78:80
      #NameVirtualHost 12.34.56.78
      # ServerAdmin webmaster@host.some_domain.com
      # DocumentRoot /www/docs/host.some_domain.com
      # ServerName host.some_domain.com
      # ErrorLog logs/host.some_domain.com-error_log
      # CustomLog logs/host.some_domain.com-access_log common

      缺省设置文件中的这些内容是用于设置命名基础的虚拟主机服务器时使用。

      其中NameVirtualHost 来指定虚拟主机使用的IP地址,这个IP地址将对应多个 DNS名字,如果Apache使用了Listen 参数控制了多个端口,那么就可以在这里加上端口号以进一步进行区分对不同端口的不同连接请求。此后,使用 VirtualHost 语句,使用NameVirtualHost指定的IP地址作参数,对每个名字都定义对应的虚拟主机设置。

      虚拟主机是在一台Web服务器上,可以为多个单独域名提供Web服务,并且每个域名都完全独立,包括具有完全独立的文档目录结构及设置,这样域名之间完全独立,不但使用每个域名访问到的内容完全独立,并且使用另一个域名无法访问其他域名提供的网页内容 。

      虚拟主机的概念对于ISP来讲非常有用,因为虽然一个组织可以将自己的网页挂在具备其他域名的服务器上的下级往址上,但使用独立的域名和根网址更为正式,易为众人接受。传统上,必须自己设立一台服务器才能达到单独域名的目的,然而这需要维护一个单独的服务器,很多小单位缺乏足够的维护能力,更为合适的方式是租用别人维护的服务器。ISP也没有必要为一个机构提供一个单独的服务器,完全可以使用虚拟主机能力,使服务器为多个域名提供Web服务,而且不同的服务互不干扰,对外就表现为多个不同的服务器。

      有两种设定虚拟主机的方式,一种是基于HTTP 1.0标准,需要一个具备多IP地址的服务器,再配置DNS 服务器,给每个IP地址以不同的域名,最后才能配置Apache的配置文件,使服务器对不同域名返回不同的Web文档。由于这需要使用额外的IP地址,对每个要提供服务的域名都要使用单独的IP地址,因此这种方式实现起来问题较多。

      可以在一个网络界面上绑定多个IP地址,Linux下需要使用ifconfig的 alias参数来进行这个配置,但此时会影响网络性能。

      HTTP 1.1标准在协议中规定了对浏览器和服务器通信时,服务器能够跟踪浏览器请求的是哪个主机名字。因此可以利用这个新特性,使用更轻松的方式设定虚拟主机。这种方式不需要额外的IP地址,但需要新版本的浏览器支持。这种方式已经成为建立虚拟主机的标准方式。

      要建立非IP基础的虚拟主机,多个域名是不可少的配置,因为每个域名就对应一个要服务的虚拟主机。因此需要更改DNS服务器的配置,为服务器增加多个C NAME选项,如:

      linux IN A 192.168.1.64
      vhost1 IN CNAME linux
      vhost2 IN CNAME linux

      基本的设置选项都是为了linux主机设定的,如果要为vhost1和vhost2设定虚拟主机,就要使用VirtualHost语句定义不同的选项,在语句中可以使用配置文件前面中的大部分选项,而可以重新定义几乎所有的针对服务器的设置。

      NameVirtualHost 192.168.1.64
      DocumentRoot /www/data
      ServerName linux.example.org.cn
      DocumentRoot /vhost1
      ServerName vhost1.example.org.cn
      DocumentRoot /vhost2
      ServerName vhost2.example.org.cn

      这里需要注意的是,VirtualHost的参数地址一定要和NameVirtualHost定义的地址相一致,必须保证所有的值严格一致,Apache服务器才承认这些定义是为这个IP地址定义的虚拟主机。
      此外,定义过NameVirtualHost之后,那么对这个IP地址的访问都被区分不同的虚拟主机进行处理,而对其他IP地址的访问,例如127.0.0.1,才应用前面定义的缺省选项。
  • 通过网络安装恢复Solaris的启动文件

    2009-11-03 12:50:46

    近日有个开发高手在俺们的solaris工作站上修改了一些文件, 具体文件未知. 只是重启后可以到登陆的界面, 但root就是无法登陆上去,怀疑是/etc下面的用户相关信息被改了.

    成功修复步骤:
    1. 网络启动 (详见此博客以前文章)
      ok boot net -s //单用户模式

    2. 出现"#" 后, 证明已经成功走到shell的一步了
    输入 # mount /dev/dsk/c0t0d0s0 /mnt  //将装有系统的硬盘mount到当前虚拟boot的系统上.

    3. 打开硬盘上的 /etc目录:
       #cd /mnt/etc
    4. 备份 passwd 文件和 shadow 文件.
      # cp passwd passwd_bak
      # cp shadow shadow_bak   //防止万一弄错了, 可以修复
    5. 更改passwd的root的信息
      #vi passwd
      这个时候只给出root的用户信息, 因为你登陆时候的用户是unknown, solaris不知道你身份, 所以只给出root用户让你更改, 其实这样也就足够解决问题了.
    6. 更改完成后, 保存重启
      #reboot



  • unix的日志管理命令详解

    2009-09-04 14:09:15

    Linux日志管理详解
    转chinaunix文章。

      日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
     

    在Linux系统中,有三个主要的日志子系统:
    连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。

    进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

    错误日志--由syslogd执行。各种系统守护进程、用户程序和内核通过syslog向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
    常用的日志文件如下:
       access-log         纪录HTTP/web的传输
       acct/pacct         纪录用户命令
       aculog           纪录MODEM的活动
       btmp            纪录失败的纪录
       lastlog           纪录最近几次成功登录的事件和最后一次不成功的登录
       messages          从syslog中记录信息(有的链接到syslog文件)
       sudolog           纪录使用sudo发出的命令
       sulog           纪录使用su命令的使用
       syslog           从syslog中记录信息(通常链接到messages文件)
       utmp            纪录当前登录的每个用户
       wtmp            一个用户每次登录进入和退出时间的永久纪录
       xferlog           纪录FTP会话

    utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键--保持用户登录进入和退出的纪录。
    有关当前登录用户的信息记录在文件 utmp中;
    登录进入和退出纪录在文件wtmp中;
    最后一次登录文件可以用lastlog命令察看。
    数据交换、关机和重起也记录在wtmp文件中。
    所有的 纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一 天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后 命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7。
     
    每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后 login程序在lastlog中纪录新的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登 录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。
    下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。
    具体命令
    wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、lastac来使用这两个文件包含的信息。
     
    who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示:

       chyang     pts/0 Aug     18 15:06
       ynguo     pts/2 Aug     18 15:32
       ynguo     pts/3 Aug     18 13:55
       lewis     pts/4 Aug     18 13:35
       ynguo     pts/7 Aug     18 14:12
       ylou     pts/8 Aug     18 14:15

    如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。

    w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27。

       USER   TTY    FROM     LOGIN@ IDLE JCPU PCPU  WHAT
       chyang pts/0 202.38.68.242  3:06pm 2:04 0.08s 0.04s -bash
       ynguo pts/2 202.38.79.47   3:32pm 0.00s 0.14s 0.05   w
       lewis pts/3 202.38.64.233  1:55pm 30:39 0.27s 0.22s -bash
       lewis pts/4 202.38.64.233  1:35pm 6.00s 4.03s 0.01s sh /home/users/
       ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail
       ylou  pts/8 202.38.64.235  2:15pm 1:09m 0.10s 0.04s  -bash

    users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同 的次数。例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo

    last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:

      chyang pts/9  202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
       cfan  pts/6  202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
       chyang pts/4  202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40)
       lewis pts/3  202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03)
       lewis pts/2  202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12)

    如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:

       ynguo  pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
       ynguo  pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
       ynguo  pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)
       ynguo  pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25)
       ynguo  pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12)
       ynguo  pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11)
       ynguo  pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55)

    ac:ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47 :

       ac -d(回车)显示每天的总的连结时间
       Aug 12 total 261.87
       Aug 13 total 351.39
       Aug 14 total 396.09
       Aug 15 total 462.63
       Aug 16 total 270.45
       Aug 17 total 104.29
       Today total 179.02
       ac -p (回车)显示每个用户的总的连接时间
       ynguo 193.23
       yucao 3.35
       rong 133.40
       hdai 10.52
       zjzhu 52.87
       zqzhou 13.14
       liangliu 24.34
       total 5178.24

    lastlog:lastlog文件在每次有用户登录时被查询。可以使用lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显 示"**Never logged**。注意需要以root运行该命令,例如:

       rong      5   202.38.64.187         Fri Aug 18 15:57:01 +0800 2000
       dbb                           **Never logged in**
       xinchen                         **Never logged in**
       pb9511                         **Never logged in**
       xchen     0   202.38.64.190         Sun Aug 13 10:01:22 +0800 2000

    另外,可一加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限制上一周的报告。


    进程统计
     UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它对还跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。  
    在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。Accton命令的形式accton file,file必须先存在。先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton: accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何 参数的accton命令。
       lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、 tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。下面的例子:
       crond     F   root   ??   0.00 secs Sun Aug 20 00:16
       promisc_check.s S   root   ??   0.04 secs Sun Aug 20 00:16
       promisc_check     root   ??   0.01 secs Sun Aug 20 00:16
       grep          root   ??   0.02 secs Sun Aug 20 00:16
       tail          root   ??   0.01 secs Sun Aug 20 00:16
       sh           root   ??   0.01 secs Sun Aug 20 00:15
       ping      S   root   ??   0.01 secs Sun Aug 20 00:15
       ping6.pl    F   root   ??   0.01 secs Sun Aug 20 00:15
       sh           root   ??   0.01 secs Sun Aug 20 00:15
       ping      S   root   ??   0.02 secs Sun Aug 20 00:15
       ping6.pl    F   root   ??   0.02 secs Sun Aug 20 00:15
       sh           root   ??   0.02 secs Sun Aug 20 00:15
       ping S root ?? 0.00 secs Sun Aug 20 00:15
       ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15
       sh root ?? 0.01 secs Sun Aug 20 00:15
       ping S root ?? 0.01 secs Sun Aug 20 00:15
       sh root ?? 0.02 secs Sun Aug 20 00:15
       ping S root ?? 1.34 secs Sun Aug 20 00:15
       locate root ttyp0 1.34 secs Sun Aug 20 00:15
       accton S root ttyp0 0.00 secs Sun Aug 20 00:15

     进程统计的一个问题是pacct文件可能增长的十分迅速。这时需要交互式的或经过cron机制运行sa命令来保持日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct 中。这些摘要包含按命令名和用户名分类的系统统计数据。sa缺省情况下先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一 些标记项:
       avio--每次执行的平均I/O操作次数
       cp--用户和系统时间总和,以分钟计
       cpu--和cp一样
       k--内核使用的平均CPU时间,以1k为单位
       k*sec--CPU存储完整性,以1k-core秒
       re--实时时间,以分钟计
       s--系统时间,以分钟计
       tio--I/O操作的总数
       u--用户时间,以分钟计
       例如:
       842   173.26re    4.30cp 0avio 358k
       2   10.98re     4.06cp 0avio 299k find
       9   24.80re     0.05cp 0avio 291k ***other
       105   30.44re     0.03cp 0avio 302k ping
       104   30.55re     0.03cp 0avio 394k sh
       162   0.11re     0.03cp 0avio 413k security.sh*
       154   0.03re     0.02cp 0avio 273k ls
       56   31.61re     0.02cp 0avio 823k ping6.pl*
       2   3.23re     0.02cp 0avio 822k ping6.pl
       35   0.02re     0.01cp 0avio 257k md5sum
       97   0.02re     0.01cp 0avio 263k initlog
       12 0.19re 0.01cp 0avio 399k promisc_check.s
       15 0.09re 0.00cp 0avio 288k grep
       11 0.08re 0.00cp 0avio 332k awk
       用户还可以根据用户而不是命令来提供一个摘要报告。例如sa -m显示如下:
           885   173.28re    4.31cp 0avk
       root  879   173.23re    4.31cp 0avk
       alias 3   0.05re     0.00cp 0avk
       qmailp 3   0.01re     0.00cp 0avk

      Syslog设备
      Syslog已被许多日志函数采纳,它用在许多保护措施中--任何程序都可以通过syslog 纪录事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主机上的事件。
       Syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。 它还包括一个设备和一个优先级范围(但不在日之中出现)。
       每个syslog消息被赋予下面的主要设备之一:
       LOG_AUTH--认证系统:login、su、getty等
       LOG_AUTHPRIV--同LOG_AUTH,但只登录到所选择的单个用户可读的文件中
       LOG_CRON--cron守护进程
       LOG_DAEMON--其他系统守护进程,如routed
       LOG_FTP--文件传输协议:ftpd、tftpd
       LOG_KERN--内核产生的消息
       LOG_LPR--系统打印机缓冲池:lpr、lpd
       LOG_MAIL--电子邮件系统
       LOG_NEWS--网络新闻系统
       LOG_SYSLOG--由syslogd(8)产生的内部消息
       LOG_USER--随机用户进程产生的消息
       LOG_UUCP--UUCP子系统
       LOG_LOCAL0~LOG_LOCAL7--为本地使用保留
       Syslog为每个事件赋予几个不同的优先级:
       LOG_EMERG--紧急情况
       LOG_ALERT--应该被立即改正的问题,如系统数据库破坏
       LOG_CR99v--重要情况,如硬盘错误
       LOG_ERR--错误
       LOG_WARNING--警告信息
       LOG_NOTICE--不是错误情况,但是可能需要处理
       LOG_INFO--情报信息
       LOG_DEBUG--包含情报的信息,通常旨在调试一个程序时使用

       syslog.conf文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一 行。对每类消息提供一个选择域和一个动作域。这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的 消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指 明"crit",那所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如, 如果想把所有邮件消息纪录到一个文件中,如下:
       #Log all the mail messages in one place
       mail.* /var/log/maillog
       其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:
       # Save mail and news errors of level err and higher in aspecial file.
       uucp,news.crit /var/log/spooler
       当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。
       #Everybody gets emergency messages, plus log them on anther machine
       *.emerg *
       *.emerg @linuxaid.com.cn
       alert消息应该写到root和tiger的个人账号中:
       #Root and Tiger get alert and higher messages
       *.alert root,tiger
       有时syslogd将产生大量的消息。例如内核("kern"设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:
       #Log all kernel messages to the console
       #Logging much else clutters up the screen
       #kern.* /dev/con
  • solaris 查看系统信息命令

    2009-04-16 14:19:12

    1.showrev
    查看系统Hostid: 24cc7225
              Release: 5.9
              Kernel architecture: i86pc
              Application architecture: i386
              Hardware provider: COMPAQ
              Domain: sinomos.com
              Kernel version: SunOS 5.9 Generic 112234-10 Nov 2003
    showrev -p可以查看系统的安装的补丁
    2、vmstat监视cpu
       iostat监视磁盘
       iostat -E现在磁盘信息,包括大小和错误数量,厂家等等
    3、prtconf显示系统信息
    4、prtdiag显示系统cpu,内存,以及OBP
    5、netstat -r路由信息
       netstat -i接口信息
    6、查看网卡状态
       ndd -get /dev/eri link_status or link_speed
    7、prtvtoc /dev/rdsk/c0t0d0s2
       查看分区信息
    8、dos2unix | -ascii <filename>;
       转换dos文件的格式为unix格式
    9、prtconf | grep "Memory size"
        显示内存大小
    10、prstat -a类似top的命令

    --显示设备配置信息
    我们经常使用prtconf、sysdef和dmesg命令来察看系统和设备信息。
    prtconf显示系统中设备的树状互连结构。此命令的输出中表示设备时,用设备的instantname。用此命令不但能看出系统中有哪些设备,而且能看出每个设备是通过哪些总线、哪些控制器连接到系统中,每个设备的逻辑设备号。
    sysdef命令可以显示更详细的系统信息,包括hostid、核心结构、设备树、系统中的可加载模块、系统核心参数、部分可调参数的值等。其中也包含prtconf的输出。
    prtconf和sysdef命令的输出与机型有关。
    dmesg从系统日志中搜集错误信息并输出。
  • install solaris10 from network

    2009-04-14 16:45:56

    1. download the iso file from sun site.
    2. setup install server (for the dhcp install)
    a. #lofiadm -a SolarisIsoFile /dev/lofi/1
    b. #mount -F hsfs /dev/lofi/1 /mnt
    c. #cd /mnt/Solaris_10/Tools
    d. #./setup_install_server /export/home/xx
    e. #share -F nfs -o ro, /export/home/xx
    3. add the client to install sever.
    a. #vi /etc/hosts  to add your client ip to this file, eg: 10.224.104.131  solsp
    b. #vi /etc/ethers  if not exit, you can make one. add your client network mask to it. eg: 0:3:ba:5c:79:ce solsp
    c. #cd /export/home/xxx/Solaris_10/Tools/
    d. #./add_install_client -d solsp sun4u
    e. #./add_install_client -d -e 0:3:ba:5c:79:ce sun4u
    f. #./add_install_client -s YourInstallSeverIP:/export/home/xxx solsp sun4u
    g. #more /etc/bootparame to verify your boot config.
    4. install client
    a. go to install computer 'stop+a'
    b. ok: boot net - install

    if it can work, you will find the "/" will rotate.

  • solaris10 sparc 安装oracle9i我之实践。

    2008-06-12 15:11:40


    A.硬件配置要求
     安装Oracle 9i要求的最低硬件配置如下:  
      Memory:512MB
      Swap space:1G
      Disk space: Database software:3.5G;seed database:1G
      Temporary disk space:400MB in /tmp 
    1. 如果swap不够,执行下面:
      #mkfile 1000m filename
      #swap -a filename
      #swap -l
     note: swap选项: -a表示增加,-l表list, -d表delete.
    2. 临时目录/tmp不够:
     # mkdir tmp
     # chmod 777 tmp
     # set TEMP=/tmp; export TEMP
     # set TMPDIR=/tmp ;export TEMP
    B.设置系统参数:
    1。配置系统信息:
      #vi /etc/system
     添加下面
    set shmsys:shminfo_shmmax=268435456
    set shmsys:shminfo_shmmin=1
    set shmsys:shminfo_shmmni=100
    set shmsys:shminfo_shmseg=10
    set semsys:seminfo_semmni=110
    set semsys:seminfo_semmns=1024

    2。设置用户/组
     #groupadd dba
     #useradd -g dba -d /export/home/oracle -m oracle
     #passwd  //设定密码。
    3. 退出root, 启动 user oracle
     #su - oracle
     #vi .profile
    添加下面:
    ORACLE_BASE=/export/home/oracle
    ORACLE_HOME=$ORACLE_BASE/product/9.0
    ORACLE_SID=9i
    PATH=$ORACLE_HOME/bin:/usr/sbin:/usr/bin:/bin
    TMPDIR=/var/tmp
    LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/usr/lib
    export ORACLE_BASE ORACLE_HOME ORACLE_SID  PATH TMPDIR LD_LIBRARY_PATH
    DISPLAY=172.16.244.83:0.0
    export DISPLAY
    umask 022

     执行.profile, 让其生效。
     #./.profile
     #sync
     #sync //同步。
     #su
     #reboot


    C.用oracle用户登陆系统,下载ORACLE软件,地址如下:
    http://www.oracle.com/technology/software/products/oracle9i/index.html
    选择:Oracle9i Database Release 2 Enterprise Edition for Sun SPARC Solaris (64-bit)
    下载三个文件:
    solaris64_9.2.0.1.0.disk1.cpio.gz
    solaris64_9.2.0.1.0.disk3.cpio.gz
    solaris64_9.2.0.1.0.disk2.cpio.gz
    1. gunzip solaris64_9.2.0.1.0.disk1.cpio.gz, 用gunzip解包
    2. 用cpio -idmv < solaris64_9.2.0.1.0.disk1.cpio.gz 导出文件。
    将三个文件按照这个顺序都导出来

    D.安装
    1。打开Disk1,运行runinstaller
     $./runinstaller
    2.开始安装,时间比较长,其中会提示换盘,在提示中要修改PATH为:/$SOURCEFILE/disk2 & /$SOURCEFILE/disk3
    3.根据提示一一下一步, 在安装完成时候,会让你用root运行,/$oraclehome/bin/root.sh
    4.运行完后,在点击ok, 继续安装。
    5。全部完成后,设置数据库sys,system密码。
    6。用sqlplus 检验。
     $ sqlplus /nolog
     $ connect / as sysdba
     $ startup (or shutdown)
     启动监听
     $lsnrctl start
     停止监听
     $lsnrctl stop
    E. Oracle 服务器在操作系统启动时自动开始
    1. 修改文件/var/opt/oracle/oratab
     #su - oracle

     $ cd /var/opt/oracle

     $ vi oratab //将ota:/home/oracle/product/9.2:N中最后的N修改为Y

    2. 编写启动脚本/etc/init.d/dbora

     #su - root

     $ cd /etc/init.d

     $ vi dbora

     ORACLE_HOME=/home/oracle/product/9.2

     ORACLE_OWNER=oracle

    if [ ! "$1" ]; then echo "no parameter"; exit; fi

    if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME]

    then

    echo "Oracle startup: cannot start"

    exit

    fi

    case "$1" in

    'start')

    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart"

    su - $ORACLE_OWNER -c "Isnrctl start listener"

    ;;

    'stop')

    su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut &"

    su - $ORACLE_OWNER -c "lsnrctl stop listener &"

    sleep 30 #give datebase some time to shutdown

    ;;

    esac

     $ ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora

     $ ln -s /etc/init.d/dbora /etc/rc2.d/S99dbora

     $ reboot // 重启系统检查


  • lofiadm 用法

    2008-06-11 13:38:44

    1.挂载一个iso文件:
    lofiadm -a /export/home/sol_10_807_x86.iso
    /dev/lofi/1
    使用lofiadm查看:
    # lofiadm
     Block        Device File
    /dev/lofi/1 /export/home/sol_10_807_x86.iso
    # lofiadm /dev/lofi/1
    /export/home/sol_10_807_x86.iso
    挂载:
    # mount -F hsfs -o ro /dev/lofi/1 /mnt
    # df -ah
    Filesystem size used avail capacity Mounted on
    /dev/lofi/1 2.5G 2.5G 0K 100% /mnt
    # ls /mnt
    Copyright License boot
    JDS-THIRDPARTYLICENSEREADME Solaris_10 installer
    卸载:
    # umount /mnt
    # lofiadm -d /dev/lofi/1
    # lofiadm
    Block Device File
    ...

    2.在一个文件上创建一个NFS文件系统:
    创建一个指定大小的文件:
    # mkfile 50m /export/home/test
    # lofiadm -a /export/home/test
      Block     Device File
    /dev/lofi/1 /export/home/test
    使用newfs创建文件系统:
    #newfs /dev/lofi/1
    newfs: construct a new file system /dev/rlofi/1: (y/n)? y
    /dev/rlofi/1: 102340 sectors in 170 cylinders of 1 tracks, 602 sectors
    50.0MB in 11 cyl groups (16 c/g, 4.70MB/g, 2240 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
    32, 9664, 19296, 28928, 38560, 48192, 57824, 67456, 77088, 86720,
    96352
    挂载:
    # mount /dev/lofi/1 /tools/
    # df
    Filesystem size used avail capacity Mounted on
    /dev/dsk/c0d0s0 7.7G 4.2G 3.4G 56% /
    /devices 0K 0K 0K 0% /devices
    ctfs 0K 0K 0K 0% /system/contract
    proc 0K 0K 0K 0% /proc
    mnttab 0K 0K 0K 0% /etc/mnttab
    swap 996M 876K 995M 1% /etc/svc/volatile
    objfs 0K 0K 0K 0% /system/object
    /usr/lib/libc/libc_hwcap1.so.1
    7.7G 4.2G 3.4G 56% /lib/libc.so.1
    fd 0K 0K 0K 0% /dev/fd
    swap 995M 44K 995M 1% /tmp
    swap 995M 28K 995M 1% /var/run
    /dev/dsk/c0d0s3 945M 51M 837M 6% /export/home
    /vol/dev/dsk/c1t0d0/sol_10_807_x86
    2.5G 2.5G 0K 100% /cdrom/sol_10_807_x86
    /dev/lofi/1 47M 1.0M 41M 3% /tools
    #cd /tools/
    #ls
    lost+found
    卸载:
    # umount /mnt
    # lofiadm -d /dev/lofi/1
  • solaris 上将iso文件设为虚拟光盘

    2008-06-10 10:46:04

    x86 系统:
    1。先要将具有iso文件的盘符mount到solaris 上。
      如:把E盘mount上去:
       #mount -F pcfs /dev/dsk/c0d0p0:1 /mnt   c0d0p0:1指的是你dos状态下的盘符在unix下的表示。
    2。生成虚拟镜像光驱。
      用Solaris的DVD镜像做虚拟光驱:
      #lofiadm -a /mnt/xxx.iso
      /dev/lofi/1

    3. 将虚拟光驱MOUNT到系统光驱上。
      #mount -F hsfs /dev/lofi/1 /cdrom (必须mount在/cdrom目录中)

    sparc 系统:

    直接用上面2。3 步骤就可以了,无需第一步。
    1。生成虚拟镜像光驱。
      用Solaris的DVD镜像做虚拟光驱:
      #lofiadm -a /mnt/xxx.iso
      /dev/lofi/1

    2. 将虚拟光驱MOUNT到系统光驱上。
      #mount -F hsfs /dev/lofi/1 /cdrom (必须mount在/cdrom目录中)

  • share mount 的使用

    2008-06-06 17:17:33


    关于在solaris中share目录的问题

    谢谢大家,我找到帖子了,再贴一下,方便别人一下


    share 和 mount 命令

      这是系统管理员常用的两个命令,share命令用于把本机的目录共享出来,以便其它UNIX系统可以使用;mount命令则用于把其它UNIX系统共享出来的目录挂接到本机的挂接点上,从而可以使用其它UNIX系统的资源。 例如:

      在机器A上输入 machineA# share -F nfs -o rw /share-dir

      在机器B上输入 machineB# mount -F nfs machineA:/share-dir /mount-point

      第一条命令把机器A的 share-dir 目录共享出来,并且共享的权限是可读写;

      第二条命令把机器A的共享目录挂接到机器B的 mount-point 目录上。

      完成这两个命令后,用户在机器B上通过对mount-point的访问就可以操作机器A上的share-dir目录了。

      但是有时我们操作时,在机器B上执行了mount命令后,会返回"RPC: Program not registered"这样的错误,这是因为在机器A上缺少mountd和nfsd 这两个守护进程(daemon)。UNIX系统启动时,系统会自动检查/etc/dfs/dfstab文件,如果文件中有要共享的资源,则启动这两个守护进程,反之,则不启动。所以如果我们在/etc/dfs/dfstab中没有内容,则系统不能启动mountd和nfsd这两个守护进程,用share命令共享的目录也不能真正被别的系统共享。

      解决这个问题的方法很简单,我们可以把要共享的目录放入/etc/dfs/dfstab中,则下一次系统启动时会自动共享这个目录;另外,我们也可以手动启动这两个守护进程,方法是首先用超级用户(root)登陆,在命令行输入如下命令:

        machine_A# /etc/rc3.d/S15nfs.server start

      或输入:

        machine_A# /usr/lib/nfs/mountd
        machine_A# /usr/lib/nfs/nfsd -a 16

      就可以启动这两个守护进程了。
     
    #/etc/init.d/nfs.server stop NFS 即可停止

    #/etc/init.d/nfs.server start NFS 就是重新启动进程。

      守护进程启动后,共享目录才真正被共享出去,这时再在机器B上用mount命令就可以把机器A的目录挂接到机器B上了。

    去掉share 使用: unshare -F nfs /data

    NFS即网络文件系统,是UNIX系统直接用以共享文件的协议。
    NFS服务器:提供网络共享资源的系统
    NFS客户:使用网络共享资源的系统

    当客户端发出一个NFS请求时,挂接进程联系挂接守护进程(/usr/lib/nfs/mountd)。本地挂接进程将挂接信息写到/etc/mnttab文件中。一旦客户完成NFS挂接请求,服务器中的/etc/rmtab文件中会写入挂接信息。当客户卸载了NFS共享资源后,这些信息就会从文件中删除。

    NFS 服务器守护进程
    当客户试图访问远程共享资源时,NFS服务器的守护进程(/usr/lib/nfs/nfsd)响应请求并返回数据。服务器守护进程由/etc/init.d/nfs.server产生。如果/etc/dfs/dfstab文件中有共享条目,这些共享目录会在守护进程启动时自动共享。
    客户端NFS 守护进程
    客户端有两个守护进程,/usr/lib/nfs/statd和/usr/lib/nfs/lockd。这些进程在系统进入运行级别2时自动运行。

    # more /etc/dfs/dfstab
    # Place share(M) commands here for automatic execution
    # on entering init state 3.
    #
    # Issue the command '/etc/init.d/nfs.server start' to run the NFS
    # daemon processes and the share commands, after adding the very
    # first entry to this file.
    #
    # share [-F fstype] [ -o options] [-d ""] [resource]
    # e.g,
    # share -F nfs -o rw=engineering -d "home dirs" /export/home2

    share命令
    share [ -F FSType ] [ -o options ] [ -d descrīption ] pathname
    参数
    -F FSType 指定文件系统的类型。如果/etc/dfs/fstypes文件中缺省的远程文件类型是NFS,则不需要指定
    -o options 控制客户端访问NFS共享资源的权限
    -d descrīption 共享资源的描述
    pathname 要共享的资源

    unshare命令
    unshare [ -F nfs ] pathname

    dfshares命令
    用以查看服务器的共享资源

    # dfshares
    RESOURCE SERVER ACCESS TRANSPORT
    venus:/usr/share/man venus - -
    #dfshares mars
    RESOURCE SERVER ACCESS TRANSPORT
    mars:/export mars - -

    dfmounts命令
    服务器上查看共享资源被利用的状况

    # dfmounts
    RESOURCE SERVER PATHNAME CLIENTS
    - venus /usr/share/man earth, pluto,(anon)


    挂接远程网络文件系统
    mount [ -F nfs ] [ -o options ] server:pathname mount_point

    # mount venus:/usr/share/man /usr/share/man
    solaris 共享文件拥有root权限-o rw,anon=0

    share -F nfs -o rw,anon=0 /export/home/bea_new/wlserver6.1/config/mydomain/applications/DefaultWebAp




  • solaris 分辨率更改

    2008-06-06 17:01:40

    1。 sparc 系统。
       命令:
     根据你的硬件不同,你可以按照下面逐一试
    fbconfig
    m64config
    afbconfig

    我的机器是m64config可以用的。
    #m64config -res 1024x768x75 -depth 24

    2. x86系统。
      命令:
    配置文件是xorg.conf.
    #/usr/X11/bin/xorgconfig
    根据提示步骤可以设置,注意你的显卡型号是属于哪个系列。如不清楚,可以选sun的配置。
  • solaris 上安装新硬盘

    2008-06-03 15:28:21

    Solaris的分区、格式化、建立文件系统的过程。

    一:装载硬盘到SUN主机,开机进入系统。

    二:运行format命令,先择要进行分区格式化的磁盘:

    bash-2.05# format
    Searching for disks...done


    AVAILABLE DISK SELECTIONS:
           0. c0d0
              /pci@0,0/pci-ide@7,1/ide@0/cmdk@0,0
           1. c0d1
              /pci@0,0/pci-ide@7,1/ide@0/cmdk@1,0
    Specify disk (enter its number): 1
    selecting c0d1
    Controller working list found
    [disk formatted, defect list found]
    Warning: Current Disk has mounted partitions.


    FORMAT MENU:
            disk       - select a disk
            type       - select (define) a disk type
            partition  - select (define) a partition table
            current    - describe the current disk
            format     - format and analyze the disk
            fdisk      - run the fdisk program
            repair     - repair a defective sector
            show       - translate a disk address
            label      - write label to the disk
            analyze    - surface analysis
            defect     - defect list management
            backup     - search for backup labels
            verify     - read and display labels
            save       - save new disk/partition definitions
            volname    - set 8-character volume name
            !     - execute , then return
            quit

    三:输入命令fdisk,对硬盘进行分区后,退出fdisk界面。

    format> fdisk  
                 Total disk size is 8322 cylinders
                 Cylinder size is 1008 (512 byte) blocks

                                                   Cylinders
          Partition   Status    Type          Start   End   Length    %
          =========   ======    ============  =====   ===   ======   ===
              1                 Solaris           1  8321    8321    100

    SELECT ONE OF THE FOLLOWING:

       1. Create a partition
       2. Specify the active partition
       3. Delete a partition
       4. Exit (update disk configuration and exit)
       5. Cancel (exit without updating disk configuration)
    Enter Selection: 5

    四:输入命令partition,修改完毕后,必要要运行label命令,以把分区表写入到磁盘中,退出partition状态。

    format> partition


    PARTITION MENU:
            0      - change `0' partition
            1      - change `1' partition
            2      - change `2' partition
            3      - change `3' partition
            4      - change `4' partition
            5      - change `5' partition
            6      - change `6' partition
            7      - change `7' partition
            select - select a predefined table
            modify - modify a predefined partition table
            name   - name the current table
            print  - display the current table
            label  - write partition map and label to the disk
            ! - execute , then return
            quit
    partition> label
    Ready to label disk, continue? yes

    partition>

    五:运行命令save保存分区信息,保存文件名使用默认文件,然后退出format状态。

    format> save
    Saving new disk and partition definitions
    Enter file name["./format.dat"]:
    format>

    六:建立文件系统。

    bash-2.05# newfs /dev/dsk/c0d1s0
    newfs: /dev/rdsk/c0d1s0 last mounted as /test
    newfs: construct a new file system /dev/rdsk/c0d1s0: (y/n)? y
    /dev/rdsk/c0d1s0:       4195296 sectors in 4162 cylinders of 16 tracks, 63 sectors
            2048.5MB in 66 cyl groups (64 c/g, 31.50MB/g, 5312 i/g)
    super-block backups (for fsck -F ufs -o b=#) at:
     32, 64608, 129184, 193760, 258336, 322912, 387488, 452064, 516640, 581216,
     3613216, 3677792, 3742368, 3806944, 3871520, 3936096, 4000672, 4065248,
     4128800, 4193376,
    bash-2.05#

    七:建立目录

    bash-2.05#mkdir /test

    八:mount分区

    bash-2.05#mount /dev/dsk/c0d1s0 /test

    九:完毕。

  • solaris10 sparc system installation

    2008-06-03 14:19:00

       click this link to browser: http://docs.sun.com/app/docs/doc/820-4039/webstart-91?a=view
Open Toolbar