我有一个目录,只希望真正的用户能够访问。
我已经进入 /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
。