为什么我无法用密码保护特定的 URL 路径?

为什么我无法用密码保护特定的 URL 路径?

我有一个目录,只希望真正的用户能够访问。

该目录是www.example.com/video

我已经进入 /etc/apache2/apache2.conf 并确保设置了以下内容:

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
</Directory>

然后我进入路径 /var/www/example.com/public_html/video 并创建以下 .htaccess 文件:

AuthType Basic
AuthName "Restricted Content"
AuthUserFile /etc/passwd
Require valid-user

根据我看过的其他帖子,我意识到 passwd 文件似乎放在一个奇怪的地方。但是当我 cat 它时,它有所有密码,包括我今天创建的测试用户。

我得到了正确的弹出窗口,

但它不会接受任何用户及其密码。我放弃并单击“取消”后得到的网页是:

未授权

此服务器无法验证您是否有权访问所请求的文档。您提供的凭据有误(例如密码错误),或者您的浏览器无法提供所需的凭据。

Apache/2.4.29 (Ubuntu) 服务器位于www.example.com端口 80

对我做错什么有什么想法吗?

答案1

你可以,但你需要遵循规则如上所述:

AuthUserFile 指令设置包含用户身份验证的用户和密码列表的文本文件的名称。File-path 是用户文件的路径。如果不是绝对路径,则将其视为相对于 ServerRoot 的路径。

用户文件的每一行包含一个用户名,后跟一个冒号,再后跟加密的密码。

对于 mod_auth_basic,请使用作为二进制分发版的一部分安装的实用程序 htpasswd,或者可以在 src/support 中找到它。有关更多详细信息,请参阅手册页。简而言之:

  • 创建一个密码文件 Filename,以用户名作为初始 ID。它将提示输入密码:

    htpasswd -c Filename username
    
  • 在密码文件Filename中添加或者修改username2:

    htpasswd Filename username2
    

安全

确保 AuthUserFile 存储在 Web 服务器的文档树之外。不要将其放在受保护的目录中。否则,客户端可能会下载 AuthUserFile。

您需要使用 创建密码文件htpasswd

相关内容