Como editar o arquivo / etc / shadow em muitos servidores Linux?

2

Eu gostaria de alterar a senha do root em cerca de 20 servidores Linux. Principalmente CentOS e Ubuntu.

Então eu olhei para Puppet, chef e cfengine, mas eu não posso dizer se eles podem fazer isso, ou se eles matariam demais para a tarefa?

Alguém tem recomendações sobre como editar arquivos de configuração, /etc/shadow entre outros, em muitos servidores Linux?

    
por Sandra 28.10.2010 / 01:32

6 respostas

3

pssh pode ser o que você está procurando

    
por 28.10.2010 / 03:08
7

Você pode simplesmente executar o comando usermod -p '_hash_' root , em que hash é o hash da senha apropriada para esse sistema. Então um comando como usermod -p '$1$aNwwp0wS$RzSqCt3ntYs.V2TxcXheA' root faria o root ter uma senha de password .

Se você quiser fazer isso da maneira correta, você também geraria um sal exclusivo e um hash exclusivo para cada sistema. Se estiver instalado, você pode usar mkpasswd para essa finalidade.

$ # create a md5 password has for 'password'
$ echo 'password' | mkpasswd -s -m md5
$1$mJrKn6xs$NTfRbrqbaVzsqcPzyXXt3/

PS Pessoalmente, prefiro configurar o root para ter uma senha desativada e, em seguida, usar a autenticação baseada em chave ssh para qualquer acesso à conta root. Você deve conseguir criar um script para facilitar a atualização do arquivo root authorized_keys . Dependendo do seu nível de log SSH, você também verá qual tecla foi usada para acessar a conta root, isso pode ser útil para rastrear quem quebrou algo.

    
por 28.10.2010 / 02:59
5

Você não faz. Não, não edite diretamente o / etc / shadow. Para 20 servidores, eu provavelmente apenas logaria e mudaria a senha do root com o passwd.

o que você pode fazer se tiver que fazer isso com frequência é usar Espere e coloque em um loop como :

for i in 'cat <file_with_server_names>'
do 
     ssh <user>@$i
     <expect stuff here> 
done

Desculpe pelo código psuedo frágil que não usei em cerca de 6 meses.

root é complicado, pessoalmente eu não gosto de vinculá-lo a qualquer serviço externo como um plano de fallback caso a rede / serviço esteja inoperante. Normalmente eu teria sugerido integração LDAP ou AD (se você já tinha um domínio AD!)

    
por 28.10.2010 / 01:39
5

O Puppet pode gerenciar usuários (e uma infinidade de outras coisas). Eu recomendo calorosamente qualquer administrador com mais de 3 servidores integrando fantoche em seu ambiente. O wiki em puppetlabs.com tem muitos artigos que ajudarão você a começar a trabalhar rapidamente. As vantagens definitivamente valem o seu tempo. Considere escrever este trecho de código uma vez:

User {"sandra":
 ensure => present,
 group => ["sysadmin","dba"]
}

... e tê-lo aplicado em muitos servidores dentro de um determinado período de tempo.

E sim, não edite seu arquivo shadow manualmente:)

Também existem pacotes como o cluster-ssh, mas na minha experiência, embora útil, o fluxo de trabalho com esse tipo de software torna-se desconfortável com mais de 3-4 servidores - isso é apenas um sábio na tela. Eu não estou nem falando sobre vários problemas que surgirão devido a diferenças nos layouts do sistema de arquivos do servidor (digamos tchau para conclusão da tabulação), pacotes instalados, etc

    
por 31.10.2010 / 21:42
1

Se você tiver a troca de chaves ssh estabelecida para todos os sistemas, consideraria um loop básico para ssh em cada sistema e atualizaria a senha. Caso contrário, pode fazer mais sentido apenas ssh para cada sistema individualmente e alterar a senha. 20 sistemas não são um número tão grande.

    
por 28.10.2010 / 01:53
1

Dê uma olhada em sshpass . Você pode fazê-lo fazendo um loop através de uma matriz associativa com a chave é o endereço IP e o valor é a senha correspondente.

A senha pode ser alterada com:

passwd <<EOF
ch4ng#m3
ch4ng#m3
EOF

Você deve limpar o histórico depois de fazer isso.

    
por 22.06.2011 / 19:09