Sun WebServer 2.0 与 1.0 相比,访问控制已经发生了很大变化。在试图将旧的 Sun WebServer 访问控制结构向新的迁移之前,应该参阅 Sun WebServer 2.0 访问控制文档。下面列出最重要的变更:
领域概念已经被大大地扩展了,并添加了一个新的配置文件 realm.conf。
访问控制代理已经去除。
为 "/sws-administration" URL 指定的访问控制在整个 Sun WebServer 使用。当 URL 在服务器级 access.conf 中指定时,用来确定服务器管理员;当在站点级 access.conf 中指定时,用来确定站点管理员。
对于系统上的所有实例有一个单一的服务器级 access.conf 文件(位于 /etc/http/access.conf)。此文件含有单一 "/sws-administration" URL,用来定义允许谁来管理所有实例。
每一个 Web 站点还有其自己的站点级 access.conf 文件,用来指定站点管理员。
领域现在可以将更多的源用于用户数据。 领域可以依照标准的 HTPASSWD
数据库或 NIS+ 数据库来鉴别用户。
若要将 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_file
和 group_file
指令因此已经作废。所有 1.0 领域在 2. 0 中将为 HTPASSWD
领域,因为这些由用户创建的数据库是 1.0 中唯一可用的源。
假定在 /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 } |
创建一个领域以容纳口令和组文件。这可以通过下列步骤完成:
# 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/ |
将用户和组文件复制到 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 |
从 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 中。
假定有下列 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 } |
假定有下列 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 |
这些必须被折叠进一个单一的 ACL 中:
url /statistics { realm admins administrators { user joe group adm } + group stat_admins } |