Sun WebServer 安装指南,Solaris for Intranets 版

迁移 Sun WebServer 1.0 access.acl 文件

Sun WebServer 2.0 与 1.0 相比,访问控制已经发生了很大变化。在试图将旧的 Sun WebServer 访问控制结构向新的迁移之前,应该参阅 Sun WebServer 2.0 访问控制文档。下面列出最重要的变更:

若要将 Sun WebServer 1.0 access.acl 文件迁移到 2.0,需要创建或选择鉴别领域,修改映射的 URL 的访问控制语法以反映新的 2.0 语法,并将 access.acl 文件和被代理文件中的访问控制收集到每个单独的 Web 站点的 access.conf 文件中。

领域

在 Sun WebServer 1.0 中, realm 指令除作为浏览器的标识符(印在鉴别对话框中)外,没有什么重要性。在 Sun WebServer 2.0 中,领域指定了一组预先存在的用户和组用来鉴别对一个 URL 的访问。领域信息存储在 realms.conf 文件中。HTPASSWD 领域也有与它们相关联的一个目录(在 realm.conf 中定义),含有将用于鉴别的“用户”和“组”文件。 Sun WebServer 1.0 ACL 中的 password_filegroup_file 指令因此已经作废。所有 1.0 领域在 2. 0 中将为 HTPASSWD 领域,因为这些由用户创建的数据库是 1.0 中唯一可用的源。

向 Sun WebServer 2.0 领域迁移
  1. 假定在 /etc/http/access.acl 中有下列 Sun WebServer 1.0 访问控制用于主机 widgets:


    url /reports {
    	realm															Managers
    	authentication_type		basic
    
    	password_file							/usr/auth/Managers/Maners_users
    	group_file										/usr/auth/Managers/Managers_groups
    
    	+ group														report_managers
    	- user															Joe
    }
  2. 创建一个领域以容纳口令和组文件。这可以通过下列步骤完成:


    # htrealm add -i server1 -h widgets -r Managers -s HTPASSWD
    

    此命令将为站点 widgets 向 realms.conf 添加下列条目:


    realm Managers {
    	realm_source HTPASSWD
    }

    它还在站点 widgets 创建下列目录:


    /var/http/server1/websites/widgets/conf/realms/Managers/
  3. 将用户和组文件复制到 Managers 目录:


    # cp /usr/auth/Managers/Managers_users \
    	/var/http/server1/websites/widgets/conf/realms/Managers/users
    # cp /usr/auth/Managers/Managers_groups \
    	/var/http/server1/websites/widgets/conf/realms/Managers/groups
    
  4. 从 Sun WebServer 1.0 ACL 中去除文件指令,并将新的 ACL 放置在 Sun WebServer 2.0 ACL 文件中:/var/http/server1/websites/widgets/conf/access.conf:


    url /reports {
    	realm 															Managers
    	authentication_type			basic
    
    	+ group 													 report_managers
    	- user															Joe
    }

代理

代理的概念已从 Sun WebServer 2.0 中去除。原来位于被代理文件中的所有访问控制都必须重新定位到一个特定站点的单一的 access.conf 中。

转换被代理的 ACL
  1. 假定有下列 Sun WebServer 1.0 ACL 和代理文件:

    • /etc/http/access.acl 中的 ACL:


      url /statistics {
      	delegate 		/var/http/acls/.admin_acl
      }
    • /var/http/acls/.admin_acl 文件:


      realm 									admin
      password_file		/usr/auth/admin_user
      group_file					/usr/auth/admin_group
      
      + group								stat_admins
    • 这些必须被折叠进一个单一的 ACL 中:


      注意:

      领域 admin 必须已经先创建;见前面的示例。



      url /statistics {
      	realm 		 admin
      	+ group		stat_admins
      }
转换被代理的 ACL(高级)
  1. 假定有下列 Sun WebServer 1.0 ACL 和被代理文件:

    • access.acl 中的 ACL:


      url /statistics {
      	delegate 		/var/http/acls/.admin_acl
      }
    • /var/http/acls/.admin_acl 文件(此文件的所有权为 joe:adm


      realm 									 admins
      password_file			/usr/auth/admin_user
      group_file						/usr/auth/admin_group
      
      + group									stat_admins
  2. 这些必须被折叠进一个单一的 ACL 中:


    url /statistics {
    	realm					 admins
    
    	administrators {
    		user					 joe
    		group				 adm
    	}
    
    	+ group				stat_admins
    }