O que modifica os arquivos PAM na instalação do rpm para adicionar alterações na configuração?

2

Esta questão é para aplicação geral, mas posso usar alguns exemplos específicos para ilustrar a natureza da minha pergunta. Quando certos pacotes de autenticação do Linux como krb5, sssd ou pam_pkcs11 são instalados, algo entra nos arquivos no diretório de configuração do PAM (como /etc/pam.d/system-auth e / etc / pam.d / password-auth ) e adicionará ou modificará uma linha para apontar para os novos arquivos .so que foram instalados, como pam_krb5.so , pam_sssd.so , ou pam_pkcs11.so para uso.

Isto parece acontecer automaticamente para certos pacotes sem intervenção do usuário apenas instalando os pacotes rpm (com o yum ou diretamente com a ferramenta rpm), como observei ao instalar o pacote sssd (no RHEL 7 pelo menos ) que adicionará referências a pam_sssd.so nos arquivos PAM * - auth . Eu percebi que a única maneira que isso poderia ser possível era através dos scripts internos que o rpms pode ter, então procurei listar os scripts internos no SPEC do rpm, montar uma imagem do RHEL 7 para examinar os pacotes de origem e correu dentro do diretório Packages:

sudo rpm --scripts -qpl sssd-* | grep -i pam

No entanto, não recebo nenhuma linha retornada que indique que alguma coisa está tocando os arquivos no diretório /etc/pam.d, mesmo que, se eu remover o grep, eu veja resultados para if / then script logic fazendo outras coisas, então o O parâmetro - scripts está funcionando.

Eu também estou curioso, em um exemplo muito particular, o que adiciona essa linha ao meu /etc/pam.d/system-auth file:

auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_pkcs11.so nodebug

Se não é um script interno para os RPMs, eu queria saber se poderia ter sido um certo binário entre os arquivos recém-instalados que foram executados inicialmente, e é isso que é responsável por adicionar essas mudanças, mas não vi qualquer evidência disso.

Além disso, eu também tinha grep para linhas authconfig nos scripts RPM, já que sei que authconfig pode fazer isso, mas não encontrei nada . No entanto, parece que deve estar executando authconfig ou algo equivalente em segundo plano para fazer isso.

Alguém tem alguma ideia do que faz essas alterações?

    
por SeligkeitIstInGott 01.06.2017 / 01:46

1 resposta

2

Questão muito intrigante, eu admito.

O RedHat é uma organização enorme, que pode se permitir reescrever qualquer software de código aberto que ele forneça em suas distribuições (RHEL, CentOS). E isso acontece.

Eu decidi fazer um strace ao instalar samba em uma máquina CentOS7.3, e aqui está o que eu vi (saída parcial):

open("/etc/pam.d/samba;593a8da8", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 47
fcntl(47, F_SETFD, FD_CLOEXEC)          = 0
umask(022)                              = 0777
write(47, "#%PAM-1.0\nauth       required\tpa"..., 177) = 177
close(47)                               = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
ioctl(1, SNDCTL_TMR_TIMEBASE or SNDRV_TIMER_IOCTL_NEXT_DEVICE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
lstat("/etc/pam.d/samba", 0x7ffeed35d250) = -1 ENOENT (No such file or directory)
rename("/etc/pam.d/samba;593a8da8", "/etc/pam.d/samba") = 0
getuid()                                = 0
getuid()                                = 0
chown("/etc/pam.d/samba", 0, 0)         = 0
chmod("/etc/pam.d/samba", 0644)         = 0
utime("/etc/pam.d/samba", [2017/05/25-07:33:05, 2017/05/25-07:33:05]) = 0
getuid()

Cria o arquivo /etc/pam.d/samba com o seguinte conteúdo:

#%PAM-1.0
auth       required     pam_nologin.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth
password   include      password-auth

Além disso, há uma ferramenta que pode atualizar automaticamente, pode ser usada para fazer backup e / ou restaurar arquivos de configuração pam.d - isso é authconfig . Meu palpite é que ele pode ser usado durante a instalação de certos pacotes para atualizar arquivos de configuração PAM . Por exemplo, parte do procedimento do RedHat para configurar SSSD para autenticação do sistema (que inclui a configuração PAM ) é:

Use authconfig to enable SSSD for system authentication.
# authconfig --update --enablesssd --enablesssdauth This automatically updates the PAM configuration to reference all of the

E aqui está a saída de rpm --scripts -qpl samba-4* | grep -i pam no meu servidor de teste: /etc/pam.d/samba - que é o novo arquivo criado durante a instalação do samba.

    
por 09.06.2017 / 14:18