maneira rápida de adduser e userdel em várias máquinas

3

Atualmente, basta acessar cada um dos nossos servidores para digitar

adduser <username> --firstuid 1101 --gid 1001 --disabled-password

para adicionar um usuário. Existe uma maneira mais rápida de fazer isso em todos os servidores ao mesmo tempo? Obrigado.

ATUALIZAÇÃO:

Depois de executar o comando acima, algumas informações do usuário precisam ser preenchidas: "Nome Completo:", "Número da Sala", "Telefone Comercial", etc. Eu gostaria de preencher esta informação apenas uma vez e ser usado para a criação do usuário em todas as máquinas. Obrigado.

    
por Kenneth 29.01.2013 / 10:36

2 respostas

3

UPDATE

Não tenho certeza se você precisa adicionar os usuários mesmos a cada servidor ou se cada servidor tiver seu próprio usuário. Eu vou te dar uma solução para qualquer situação.

Adicionando uma lista de usuários para cada servidor

A melhor ferramenta para este trabalho é newusers . Você precisará criar um arquivo de texto contendo a lista de usuários e seus detalhes. Se você quiser adicionar o usuário mesmo a cada servidor, esse arquivo precisará apenas de uma linha.

  1. Crie a lista do usuário. O formato geral do arquivo é

    username:passwd:UID:GID:full name,room number,work phone,home phone,other:directory:shell
    

    Então, no seu caso, você precisaria usar algo como

    tom:password1:::"Tom Hanks","101","123456","654321","Tall"::
    danny:password2:::"Danny DeVito","102","222333","333222","Short"::
    

    Note que deixei as opções UID, GUID, directory e shell vazias. Isso significa que os valores padrão serão usados.

  2. Agora que você criou a lista, precisará copiá-la para cada máquina remota e depois adicionar os novos usuários. Para isso, você ainda precisará de uma lista de nomes de host ou IPs relevantes, um por linha, como na sugestão anterior. Depois de configurar tudo isso, salve este pequeno script como newusers.sh :

    #!/bin/bash
       while read ip; do
         scp users.txt root@$ip:/home/root
         ssh root@$ip newusers users.txt
       done
    
  3. Torne o script executável ( chmod a+x newusers.sh ) e execute-o para cada IP no seu arquivo:

    newusers.sh < IPs.txt
    
  4. Isso tudo será muito mais fácil se você tiver o ssh sem senha configurado. Se você não fizer isso, execute os seguintes comandos para usar chaves ssh permitindo acesso sem senha (você ainda precisará de uma frase secreta):

    ssh-keygen -t rsa
    while read ip; do ssh-copy-id -i ~/.ssh/id_rsa.pub root@$ip; done < IPs.txt
    

Adicionando um usuário diferente a cada servidor

Neste caso, criaria um arquivo ligeiramente diferente. Ele deve ter um IP ou nome de host, seu usuário correspondente e os detalhes necessários para criá-la em cada linha. Supondo que você deseja configurar senhas, você pode ter a senha em texto simples (obviamente, algumas preocupações de segurança aqui, não sei se são relevantes no seu caso) como o quarto campo. Além disso, para analisar corretamente os nomes com espaços, certifique-se de usar um caractere não espacial como separador de campo . No exemplo abaixo, estou usando - :

192.168.1.10-tom-"Tom Hanks","101","123456","654321","Tall"-pass1
192.168.1.10-danny-"Danny DeVito","102","222333","333222","Short"-pass2

Agora percorra o arquivo e crie cada usuário na máquina correspondente. Certifique-se de definir o IFS variabe para o seu separador de campo para analisar os espaços corretamente:

while IFS='-' read ip name opts pass; do \
   ssh root@$ip useradd $name -mc $opts -p 'openssl passwd $pass' -s /bin/bash \
done < list.txt
    
por 29.01.2013 / 13:53
0

Por que não usar algum banco de dados de usuários centralizado, como o LDAP (o OpenLDAP ou o 389 Directory Server )?

    
por 29.01.2013 / 15:13