我正在试图设置一个别名的权限不同于根,比如
www.restricted.com – 一个用户
www.restricted.com/alias – 另一个用户
这可能吗?
我已经在一个单独的目录(不是子目录)中使用自己的<directory>条目和单独的authentication设置在httpd.conf中设置了别名。 但是,在尝试访问/别名时,对于这两个部分,我都会得到两个密码请求。 我不确定是因为我的错误还是devise错误。
例:
<VirtualHost *:443> ServerName www.restricted.com DocumentRoot /var/www/site/main/ <Directory /var/www/site/main/> AuthUserFile /var/www/site/.htpasswd AuthGroupFile /dev/null AuthName "main site" AuthType Basic Require user joe </Directory> Alias /alias /var/www/site/subsite/ <Directory /var/www/site/subsite/> AuthUserFile /var/www/site/.htpasswd AuthGroupFile /dev/null AuthName "subsite" AuthType Basic Require user admin </Directory> </VirtualHost>
由于虚拟主机根和别名位于服务器上的不同目录中,我认为<Directory>指令比<Location>更合适。
我更喜欢使用<Location>指令来限制对不同位置的访问。
您可以使用Require user-id指令只允许访问特定的用户。 请参阅该链接中提供的示例。 这是另一个例子,从我自己的configuration中解除。
实际上,“AuthUserFile”可以在两个位置之间共享,因为AuthUserFile只处理authentication,而不是授权 。
# This will allow access to / for 'user1' <Location /> AuthName "Access allowed for user1" AuthType Basic AuthUserFile /etc/httpd/htpasswd.user1 Require user user1 </Location> # This will allow access to /alias for 'user2' Alias /alias/ /web/alias/ <Location /alias/> AuthName "Access only allowed for user2" AuthUserFile /etc/httpd/htpasswd.user2 Require user user2 </Location>
使用Directory指令在物理目录结构上应用权限; 这是为了防止无意的特权授予。
按照您希望的方式使用Location指令的方式取而代之; 这将仅在您使用指令指定的http虚拟path上应用权限设置。