Existem alguns métodos transparentes para isso, infelizmente.
-
Em uma rede gerenciada centralmente, é possível usar o Kerberos, com mod_auth_gssapi ou mod_auth_kerb no lado do servidor da Web (também conhecido como "HTTP Negotiate"). O Kerberos é muito seguro, mas pode ser difícil configurar para uso na web (nem todos os navegadores o suportam, e apenas alguns permitem isso por padrão).
-
Se todos os computadores são confiáveis (ou seja, os usuários não têm permissão para adulterar o software instalado pela raiz), o protocolo Ident (RFC 1413) é uma possibilidade, mas a autenticação é muito fraca.
Mas, na maioria das vezes, sua única opção é pedir uma senha.
-
Se os usuários tiverem contas em
/etc/passwd
, como mencionado em seu comentário, infelizmente, a execução de um programa privilegiado é a maneira somente de verificar uma senha recebida em relação a/etc/shadow
.Se você fizer isso, não escreva seus próprios scripts através de
sudo
, porque você irá errar a validação de entrada pela primeira vez, e porque já é um problema resolvido. Escolha algo bem conhecido, por exemplo Cyrussaslauthd
(que pode ser executado no modo-a pam
); Dessa forma, seu site não precisará de privilégios além da conexão com o soquetesaslauthd
.