我希望能够让本地 Linux 用户在访问网站时使用其凭据进行身份验证。我正在使用 ngx_http_auth_pam_module。在 nginx.conf 文件中,我对 location 指令进行了以下配置:
location / {
proxy_pass http://somewebsite:5000;
root html;
index index.html index.htm;
auth_pam "Secure area";
auth_pam_service_name "nginx";
}
使用 nginx.conf 文件中的“auth_pam”和“auth_pam_service_name”语法,我在访问网站时会收到输入凭据的提示。在 /etc/pam.d 目录中,我创建了一个“nginx”服务文件,其中包含以下内容:
auth required pam_unix.so
account required pam_unix.so
我在 CentOS 7 服务器上运行它。我知道我必须创建一个本地 Linux 用户和/或组,并可能提供对 /etc/shadow 文件的访问权限,但使用我在网上找到的教程,我仍然无法以本地用户身份登录。有人能为我提供一些操作步骤,以便我在访问网站时可以以本地 Linux 用户身份登录吗?
谢谢,任何帮助我都会感激,如果需要我可以提供更多信息。
答案1
这自述对于这个第三方 nginx 模块说:
请注意,该模块以 Web 服务器用户身份运行,因此所使用的 PAM 模块必须能够在非 root 身份下对用户进行身份验证;这意味着如果您想使用该
pam_unix.so
模块对用户进行身份验证,您需要让 Web 服务器用户读取该/etc/shadow
文件(如果这并不让您害怕的话)(在类似 Debian 的系统上,您可以将www-data
用户添加到shadow
组中)。
请注意允许您的 Web 服务器和/或 Web 应用程序读取影子文件的安全隐患。