Apache补遗




  有关Apache配置及使用在LinuxAid中已经有不少文章做了详细阐述本文讨论了在使用Apache时有关配置文件使用及对文件访问控制等内容算是对Apache使用所做些补充吧!
  如果您对Apache有了解特别是对几个配置文件有了解这将会有助于您对本文内容理解;如果恰巧您不是很了解这几个配置文件使用那么就借着这个机会来起熟悉下吧
  
  、有关CGI执行脚本配置
  
  这里有两种设置CGI脚本思路方法、CGI脚本文件以.cgi为扩展名;第 2、设置脚本可执行目录但是这两种思路方法都需要将要执行文件设置为711才可以被执行
  第种思路方法我们需要在access.conf文件种将你要发行目录设置为Option ExecCGI All在srm.conf资源配置文件中加上下列句:
  
  AddHandle cgi-script .cgi
  
  这样在所有目录种只要你文件是.cgi为扩展名且文件访问权限为711无论给文件在你发行目录任何个地方都可以做为CGI被Apache这种思路方法般没有第 2种思路方法
  第 2种思路方法是将个目录作为个可执行目录将所有cgi文件都放在其中这里就不定非得是以.cgi为扩展名得文件可以执行而是只要有711属性文件就可以被执行而且其它非可执行文件都被禁止访问我们默认配置文件种就有个很好例子:
  access.conf:
  
  Allow Override None
  Options ExecCGI
  

  srm.conf
  ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
  这样只要在/home/httpd/cgi-bin/目录中可执行文件都可以被Web而其它非可执行文件将被拒绝访问
  
   2、配置用户发行目录
  
  这里有两种设置思路方法:
  第种是系统默认思路方法即用户目录下public_html目录为用户发行目录且默认主页文件为index.html且该目录不支持CGI
  第 2种是在其它目录种专门为用户设置发布目录如我想在/home/html目录做为用户web目录那管理员就应该在该目录下为每个用户设置个子目录如:/home/html/user01、/home/html/user02等那么srm.conf文件中UserDir后面就不能再是public_html了应该改为:UserDir /home/html/*/注意这里“*”代表anyone当你再浏览器中请求个如http://www.do/~user01时Apache服务器就会自动将你请求转移到/home/html/user01中然后去寻找index.html文件
  这种设置不需要到access.conf中设置该目录访问属性还有当我们设置虚拟主机时也不用设置目录访问属性但是如果你想让某个目录具有CGI权限都要到Access.conf文件中去配置目录访问权限如:你想让你所有用户在他们发布目录中具有CGI访问权则需要在你access.conf中这样设置:
  
  Allow Override None
  Options ExecCGI
  
  注意这里设置用户目录中cgi-bin子目录为cgi执行目录这是设置而且也是种UNIX习惯
  
   3、如何将Apache服务器设置为inetd子服务
  
  当你安装了Apache后默认设置为standalone方式运行如果你想将它设置为inetd子服务首先在每次激活Linux时不激活httpd然后编辑/etc/inetd.conf在其中加入下列语句:http stream tcp nowait root /usr/sbin/httpd httpd
  然后重新激活inetd服务器这样你用ps -aux命令查看进程运行情况时你不会发现httpd进程存在但是旦有客户请求个页面时inetd就激活个httpd进程为该请求服务的后就自动释放这种运行方式有助于节省系统资源但是如果你web服务很重要般不建议设置为这种方式运行
  
   4、将httpd.conf做为唯配置文件
  
  在Apache中给用户提供了 3个配置文件: srm.conf、 access.conf 和 httpd.conf files 实际上这 3个文件是平等所有配置都可以放在个单独httpd.conf文件中事实上在Apache 1.3.2中就已经这样做了在httpd.conf中应包括以下两条指令来防止Apache对srm.conf和access.conf两个配置文件访问:
  AccessConfig /dev/null
  ResourceConfig /dev/null
  在apache1.3.2中只要注释掉以下这两行即可:
  AccessConfig conf/access.conf
  ResourceConfig conf/srm.conf
  
   5、用户授权和访问控制
  
  你也许在访问某些网站WebSite时会遇到过这样情况当你点击某个连接时浏览器会弹出个身份验证对话框要求输入账号及密码如果没有就无法继续浏览了有人会以为这是用CGI做出来其实不然这是WWW服务器用户授权和访问控制机制在发挥作用
  你是否还记得在设置Apache服务环境过程中……..<./Directory>这个指令可以对区别目录提供区别保护但是这样设定需要重新启动服务器才会生效灵活性较差通过AccessFile指令指定访问控制文件方式则比较灵活在Apache服务器中设置用户访问控制权限步骤如下:
  
  1、首先对httpd.conf文件进行设置如下:
  
  
  # AllowOverride FileInfo AuthConfig Limit
  # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
  Options Includes FollowSymLinks Indexes
  AllowOverride All //*注意AllowOverride 定要设置为All这样后面.htaccess文件才会起作用
  
  Order allow,deny
  Allow from all
  

  #
  # Order deny,allow
  # Deny from all
  #

  

  #指定配置存取控制权限文件名称
  AccessFileName .htaccess
  
  2、创建.htaccess文件內容
  
  要控制某目录访问权限必须建立访问控制文件文件名前面指定“.htaccess”其内容格式如下:
  
  AuthUserFile 用户帐号密码文件名
  AuthGroupFile 群组帐号密码文件名
  AuthName 画面提示文字
  AuthType 验证方式
  
  密码验证方式
  

  用户验证方式AuthType目前提供了Basic和Digest两种
  密码检验设定思路方法和httpd.conf中相关设定相同
  具体例子如下:
  AuthUserFile /etc/secure.user
  AuthName 安全认证中心
  AuthType Basic
  
  require valid-user
  

  
  3、建立用户密码文件
  
  如果你是第次创建用户密码命令格式如下:
  htpasswd -c 密码文件名 用户名称
  在上面例子中我们将用户密码文件放到了/etc/secure.user文件中所以这里应按照如下进行操作:
  htpasswd -c /etc/secure.user sword
  会提示你输入两次用户口令然后用户密码文件就已经创建sword这个用户也添加完毕了
  如果要向密码文件中添加新用户按照如下命令格式进行操作:
  htpasswd 密码文件 用户名称
  这样重新启动httpd后进行该WEB目录时就会有个对话框弹出要求输入用户名及用户口令了
  
  4、如何减少访问控制对Apache性能影响
  频繁使用访问控制会对Apache性能产生较大影响那么如何才能减少这种影响呢?最简单也是最有效思路方法的就是减少.htaccess文件数目这样可以避免Apache对每个请求都要按照.htaccess文件内容进行授权检查它不仅在当前目录中查找.htaccess文件它还会在当前目录父目录中查找
  
  /
  /usr
  /usr/local
  /usr/local/etc
  /usr/local/etc/httpd
  /usr/local/etc/httpd/htdocs
  /usr/local/etc/httpd/htdocs/docs
  通常在根目录下没有htaccess文件但Apache仍然会进行例行检查以确定该文件确实不存在这是影响很影响服务器工作效率事情下面思路方法可以消除这个讨厌过程:将AllowOverride选设置为None这样Apache就会检查.htaccess文件了将/根目录AllowOverride选项设为None只将需要进行访问控制目录下AllowOverride选项设置为all如下面例子中将/根目录AllowOverride 选项关闭了只打开了/usr/local/etc/httpd/htdocs目录下AllowOerride选项这样系统就只在/usr/local/etc/httpd/htdocs中检查.htaccess文件达到提高服务效率
  
  
  AllowOverride None
  

  
  
  AllowOverride All
  

  
  
  如果除了根目录以外还有其它存放WWW文件目录你也可以采取同样思路方法进行设置比如:如果你使用UserDir来允许用户访问自己目录AllowOverride设置如下:
  
  AllowOverride FileInfo Indexes IncludesNOEXEC
  

  
  5、防止用户访问指定文件
  系统中有些文件是不适宜提供给WWW用户如:.htaccess、htpasswd、*.pl等可以用达到这个目:
  
  order allow,deny
  deny from all
  

  用户访问控制 3个.htaccess文件、.htpasswd和.htgroup(用于用户授权) 为了安全起见应该
Tags: 

延伸阅读

最新评论

发表评论