具有不同权限的htaccess用户

时间:2011-07-19 10:48:56

标签: .htaccess .htpasswd multiple-users

我正在尝试用htacess实现以下功能:

** adminuser **

/dir  <= has access to directory listing or parent dir
/dir/subdir-n  <= has access to directory listing of any sub-dir

** clientuser **

/dir  <= DOES NOT have access to directory listing or parent dir (preferably Directory Index that points to a blank index.html file)
/dir/subdir-n  <= has access to directory listing of any sub-dir

基本上我们希望我们的管理员能够通过管理员登录和我们的个人客户端查看所有子目录列表,只能看到我们将与他们通信但所有具有相同登录名的目录。

1 个答案:

答案 0 :(得分:1)

对于不同的子目录,可以使用不同的htpasswd文件。

对于adminuser,您进行登录:pw对,在/dir中,您需要来自仅具有管理员登录名的文件的auth用户:pw。

对于clientuser,您为该用户进行登录:pw对,并在同一个.htpasswd文件中为THAT目录添加adminuser login:pw对。

这样,您的管理员可以查看所有目录,而客户端用户只能查看自己的目录。

澄清一下,这是您拥有的文件:

/dir
/subdiruser1
/subdiruser1/.htaccess
...
/.htaccess
/.htpasswdadmin
/.htpasswduser1

在.htpasswdadmin中你有一行:

admin:weofj2p8jöeoif2p84

在.htpasswduser1中你有两行:

user1:we2pr832urp823rpup
admin:weofj2p8jöeoif2p84

请注意,您的htpasswd文件可以是任何名称,但最好以.ht开头,因为许多apache配置会阻止对此类文件名称的Web访问。此外,您不应该像在我的示例中那样在webroot中访问您的.htpasswd文件,而是将它们保存在无法从Web访问的文件夹中。最后一点:显然你看到了这方面的局限性,当需要更改或添加新的管理员密码时,需要将该登录名:pw对添加到所有子目录.htpasswd文件中。

如果有人有更好的解决方案,我会非常好奇。