libpam-radius-auth
deve funcionar exatamente como você precisa. Eu uso isso nessa capacidade sem problemas. Você só precisa
- Configure em
/etc/pam.d
em algum lugar, provavelmentecommon-auth
. - Configure o servidor RADIUS em
/etc/raddb/server
However, they can't authenticate if they aren't local users.
Sim, é verdade. Os usuários devem existir em primeiro lugar.
Parece que você está lidando com um problema diferente da autenticação aqui. Tenha em mente a diferença entre esses dois subsistemas:
-
NSS (switch de serviço de nome): implementa o banco de dados de usuários (e grupos, e hosts, etc ...). Isso suporta consultas para listar usuários e obter suas propriedades, como nome, uid, diretório inicial e shell. O backend mais comum do NSS é "arquivos", que obtém informações do usuário de
/etc/passwd
, mas você pode usar muitos outros back-ends que obtêm informações de arquivos de banco de dados, do LDAP e assim por diante. -
PAM (módulos de autenticação conectáveis): implementa a autenticação (e alterações de contabilidade e senha). Esse sistema usa módulos conectáveis que verificam a autenticação de um usuário e permitem ou não logins. O backend mais comum do PAM é "arquivos", que solicita ao usuário uma senha simples e o verifica em um hash em
/etc/shadow
, mas você pode usar muitos outros back-ends que consultam serviços como RADIUS, sistemas de senhas únicas, Kerberos e em.
Parece que você está fazendo autenticação (PAM) com o RADIUS, mas também gostaria de usar algo baseado em rede para o próprio banco de dados do usuário (NSS). Essa é uma questão completamente diferente, não relacionada à autenticação.
Você não pode usar o RADIUS como um back-end de banco de dados porque o protocolo RADIUS não oferece funcionalidade de banco de dados. Ou seja, ele não permite que você consulte detalhes de usuários como uid, home directory e shell, muito menos para enumerar usuários no banco de dados. Portanto, não existe um backend RADIUS NSS (% hipotéticolibnss-radius
).
Para um banco de dados de usuários baseado em rede, você pode usar o LDAP, ou talvez MySQL ou Postgres. O LDAP é provavelmente a melhor recomendação.