我想知道在 Ubuntu 上的 Apache2 中限制每个用户访问目录的最佳方法是什么?如果我使用 .htpasswd 来处理用户并创建一个与该用户同名的目录,那么让我更好地解释一下我只希望该用户能够访问他们的目录,而不是其他人,即使他们在同一个文件夹。示例:/var/www/html/admins/john & /var/www/html/admins/sarah john 不应该能够看到 sarahs 目录。这怎么能动态地完成?
我正在尝试这样的事情,但最终没有成功。我是 apache2 的新手所以请原谅我的无知。
<Directory /var/www/html/admins>
AuthType Basic
AuthName "Restricted Area"
AuthUserFile /etc/apache2/.htpasswd
Require group admins
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/user/([^/]+)
RewriteRule .* - [E=USER_DIR:/var/www/html/%1]
<RequireAny>
# e.g. /var/www/html/user1 can be accessed by user1, but not by user2 or user3
Require expr "%{REMOTE_USER} == %{ENV:USER_DIR} || %{REQUEST_URI} =~ m#^/user/[^/]+$#"
Require all granted
</RequireAny>
</Directory>