
Gostaria que um usuário Linux local pudesse ser autenticado (login) usando o módulo Nginx PAM. Estou usando um servidor CentOS 7. Especificamente, o abaixo é o que estou tentando fazer ...
OLeia-mepara o módulo ngx http auth pam diz:
Observe que o módulo é executado como usuário do servidor web, portanto os módulos PAM utilizados devem ser capazes de autenticar os usuários sem serem root; isso significa que se você quiser usar o módulo pam_unix.so para autenticar usuários você precisa deixar o usuário do servidor web ler o arquivo /etc/shadow se isso não te assustar (em sistemas do tipo Debian você pode adicionar o www-data usuário para o grupo shadow).
Minha primeira pergunta é que neste caso 'nginx' é o usuário do servidor web? Minha segunda pergunta é como posso definir as permissões para o usuário do servidor web ler o arquivo /etc/shadow? Alguém pode me fornecer etapas que funcionaram para eles. Acompanhei muitos tutoriais que encontrei on-line, mas sem sucesso. Atualmente, ao acessar o site no qual desejo que um usuário local do Linux possa fazer login, recebo um prompt de autenticação (para inserir o nome de usuário e a senha), mas ao inserir as credenciais de um usuário local do Linux, não há sucesso, e apenas me pede para inseri-lo novamente.
Obrigado, qualquer ajuda será apreciada e posso dar mais informações se necessário.
Editar:
Eu configurei o PAM no nginx primeiro construindo o nginx a partir da fonte usando as etapasaqui. No meu arquivo nginx.conf adicionei a seguinte linha no topo para incluir o módulo PAM...
load_module /etc/nginx/modules/ngx_http_auth_pam_module.so;
Também incluí as duas linhas abaixo em minha diretiva de localização no nginx.conf...
auth_pam "Secure area";
auth_pam_service_name "nginx";
No diretório '/etc/pam.d' do arquivo de serviço nginx, tenho as duas linhas a seguir ...
auth required /usr/lib/security/pam_unix.so
account required /usr/lib/security/pam_unix.so
Olhando para oLeia-mepara o módulo ngx http auth pam, vejo que teria que dar ao usuário do servidor web permissão de leitura para o arquivo /etc/shadow. Para fazer isso, primeiro criei um novo grupo chamado 'shadow'. Em seguida, atribuí o usuário do servidor web (que presumo ser nginx) ao grupo 'shadow'. Em seguida, alterei as permissões do arquivo /etc/shadow. Os comandos que executei para fazer isso estão abaixo ...
groupadd shadow
usermod -a -G shadow nginx
chown root:shadow /etc/shadow
chmod g+r /etc/shadow
Depois de fazer isso, verifiquei as permissões do arquivo /etc/shadow usando o comando
ls -l /etc/shadow
e foi esse o resultado...
----r-----. 1 root shadow 1390 Aug 30 12:51 /etc/shadow
Também defini uma senha para o usuário nginx. E só para reiterar, ao acessar o site que desejo ter autenticação, quando eu digito o nome de usuário e a senha do nginx ele apenas me solicita novamente para digitá-los.
Responder1
Acho que você já instalou o nginx-module-auth-pam e também configurou o /etc/pam.d/nginx
.
Caso contrário: instale o arquivo rpm, pois tudo estará configurado para você. Em outras palavras: você não precisa ajustar manualmente /etc/shadow
as configurações de acesso. Na verdade vocêNão deveajuste /etc/shadow
caso você esteja usando pam. Este arquivo contém as senhas (com hash) para seus usuários, portanto, além disso, você não deseja conceder a nenhum processo ou programa (exceto pam) ou acesso de usuário (exceto root) a este arquivo por motivos de segurança.
Caso você tenha uma assinatura:
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install nginx-module-auth-pam
Se não: pegue ou construa a partirhttps://github.com/jfut/nginx-module-auth-pam-rpm
Por que não responder apenas à sua pergunta? Como os exemplos que você trouxe são para sistemas tipo Debian mas a forma de configurá-lo é um pouco diferente para sistemas tipo Redhat, como CentOS 7.
Você encontrará exemplos de configuração adicionais para este módulo emGitHub.
Verifique tambémhttps://nginx-extras.getpagespeed.com/para exemplos de configuração adicionais.