我想用密码保护一个网站,只允许 Linux 用户及其存储的密码/etc/passwd
登录/etc/shaddow
。
Apache 和 nginx 允许使用 HTTP 限制访问auth_basic使用特定的用户和密码文件。是否可以使用/etc/passwd
和/etc/shadow
来代替或以某种方式保持文件同步?
答案1
直接方法存在两个问题:
本地用户帐户的密码哈希存储在/etc/shadow
/etc/shadow
具有比仅更多的字段login:hash
- 权限
/etc/shadow
仅允许 root 用户读取内容,并且您的 Web 服务器不应以 root 身份运行
因此该文件不能与基本身份验证和最常见的模块一起使用https://httpd.apache.org/docs/2.4/mod/mod_authn_file.html
你可以做什么:
使用 mod_authnz_pam 让 Apache 使用 PAM 认证机制来认证用户。 https://github.com/adelton/mod_authnz_pam
或者将 mod-auth-external 与 pwauth 结合使用