É possível alterar o arquivo de banco de dados de senhas (/ etc / passwd) no linux?

7

É possível alterar o arquivo de banco de dados de senhas ( /etc/passwd ) para algum outro arquivo. Como esse mecanismo de autenticação funciona internamente? Depende do pam?

    
por nitins 03.07.2012 / 14:10

4 respostas

7

Você está certo: /etc/passwd e /etc/shadow são consultados por pam_unix.so , que fazem parte do PAM. Pelo menos nos Linuxes modernos. Você poderia mudar isso remendando pam_unix.so . Se for necessário acreditar na página do manual, você não poderá alterar a localização dos bancos de dados do sistema.

E você realmente não quer. /etc/passwd não é usado apenas para autenticação, ele também é usado para resolução de nomes (reversa) e para procurar coisas como o nome completo do usuário, shell, etc. O nome e a localização são tão padronizados que movê-los quase certamente quebraria as coisas fora do PAM. Você teria que consertar muito mais do que esperava.

Atualização: Se você está tentando ocultar os arquivos /etc/{passwd,shadow,group} para segurança, não se preocupe. Segurança pela obscuridade raramente ajuda como uma política. Deixe-os onde estão e aperte o resto das suas políticas.

Atualização: uma possível solução

Se você tiver algum software personalizado, você precisa acessar um conjunto diferente de bancos de dados de usuários / grupos, você pode fazer uma cópia dos módulos PAM e NSS relevantes e atualizá-los para usar seus bancos de dados personalizados. Os bancos de dados unix originais ficam onde estão, portanto, o software não é confuso, mas você pode configurar o PAM e o NSS para usar seus módulos personalizados sempre que precisar e usar qualquer política que faça sentido para você.

Mantenha os bancos de dados Unix essencialmente originais e você tem o que pediu. Isso é praticamente o que os módulos radius e ldap PAM / NSS fazem: eles fornecem uma fonte adicional de credenciais e informações de usuário / grupo.

Indo um passo adiante: você pode voltar ao PAM e ao NSS e desabilitar completamente as pesquisas de banco de dados unix. Deixe os arquivos lá para o software antigo (naturalmente, suas visões dos bancos de dados do usuário / grupo serão imprecisas, mas pelo menos elas não serão quebradas).

    
por 03.07.2012 / 14:19
5

O que você está procurando é o módulo pam_pwdfile . No Debian / Ubuntu o pacote é libpam-pwdfile (não tenho certeza sobre as distribuições derivadas do RedHat).

O README incluído no pacote explica como usá-lo.

    
por 04.07.2012 / 02:08
2

Não tenho certeza se é possível sair da caixa, mas é definitivamente possível com alguns hackers. Para fazer isso, você precisará:

  1. Ajustar / hackar a biblioteca nsswitch (/lib/libnss_files.so ou libnss_db.so - verifique seu /etc/nsswitch.conf) para ler algum outro arquivo.
  2. Ajustar / hackar o módulo pam_unix para que ele leia alguns outros arquivos.
por 03.07.2012 / 14:21
1

Use NIS ou LDAP para autenticar seus usuários. Suas senhas não serão armazenadas no arquivo / etc / {password / shadow}.

    
por 04.07.2012 / 10:09