如何使用 Nginx PAM 模块验证本地 Linux 用户?

如何使用 Nginx PAM 模块验证本地 Linux 用户?

我希望能够让本地 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 应用程序读取影子文件的安全隐患。

相关内容