Como posso alterar senhas em um mestre Linux NIS?

3

Isto parece que deve ser simples, mas se for, devo estar perdendo alguma coisa. Eu tenho um mestre Linux NIS do qual eu gostaria de poder alterar as senhas dos usuários (em casos de senhas esquecidas e coisas semelhantes), mas não posso.

Alguns detalhes: Estou executando o Scientific Linux 6.4, com ypserv-2.19-26, ypbind-1.20.4-30 e yp-tools-2.9-12. O NIS é configurado para usar /etc/yp/passwd para seu mapa passwd (ou seja, não o arquivo passwd do sistema). O sistema é um cliente de si mesmo e ypwhich retorna "localhost".

Como usuários não privilegiados não devem fazer login no mestre do NIS, temos o seguinte conjunto em /etc/nsswitch.conf :

passwd:     files compat

e isso no final de /etc/passwd :

+::::::/bin/false

Além disso, /etc/pam.d/passwd contém as diretivas padrão do RHEL:

password   substack system-auth

/etc/pam.d/system-auth é um link simbólico para /etc/pam.d/system-auth-ac , que contém:

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so md5 shadow nis nullok try_first_pass use_authtok
password    required      pam_deny.so

(Como observação, estamos usando o md5 em vez do sha512 porque temos alguns clientes do Solaris que não suportam o sha512.)

Se eu executar passwd como root, ele solicitará a nova passwd, mas não conseguirá alterá-la:

$ sudo passwd phil
Changing password for user phil.
New password: 
Retype new password: 
NIS password could not be changed.
passwd: Authentication token manipulation error

O arquivo de log ( /var/log/secure ) não ajuda:

passwd: pam_unix(passwd:chauthtok): password not changed for phil on ypmaster.domain.tld

Se, em vez disso, eu executar yppasswd , eu posso alterar a senha:

$ sudo yppasswd phil
Changing NIS account information for phil on ypmaster.domain.tld.
Please enter root password:
Changing NIS password for phil on ypmaster.domain.tld.
Please enter new password:
Please retype new password:

The NIS password has been changed on ypmaster.domain.tld.

Mas isso requer qualquer sysadmin que precise redefinir uma senha para saber (ou procurar por nossa senha bloqueada) a senha raiz do sistema, que é um cenário que gostaria de evitar.

Então, como eu preciso configurar o mestre para nos permitir alterar senhas de usuário sem precisar digitar a senha de root do sistema toda vez?

    
por asciiphil 21.08.2013 / 16:06

1 resposta

4

Como você descobriu, não é possível usar passwd como root em um cliente NIS para alterar as senhas dos usuários no servidor NIS. Isso é realmente segurança do senso comum.

Da mesma forma, você descobriu que o yppasswd requer a senha de root (no servidor NIS) antes de permitir que você altere a senha de um usuário. Esta é uma segurança adicional baseada no fato de que você deve ser o administrador do NIS (root no servidor NIS) para mudar as senhas de outras pessoas. Infelizmente esse pouco de segurança não é o que você quer, então o yppasswd está atrapalhando aqui.

I think this is actually a relatively new thing, or an OS-specific variant -- back in my Sun Admin days when I dealt with NIS regularly yppasswd just trusted you if you were root on the NIS server...

Por causa de sua exigência (permitir que os administradores autorizados façam alterações nas senhas do NIS) O que eu gostaria de sugerir é escrever um script de shell (ou idioma de sua preferência) que edite os mapas NIS diretamente e os reconstrua / empurre. Você pode fazer isso com um pouco de sed de trabalho criativo e, em seguida, conceder a seus administradores a capacidade de executar esse script usando sudo .

Em última análise, embora você provavelmente queira considerar o afastamento do NIS ( o LDAP é o novo ponto strong para substituir o NIS , um substituto fácil, e muito mais fácil de gerenciar).

    
por 21.08.2013 / 23:03