Como posso adicionar rapidamente muitos usuários a um servidor Ubuntu a partir da linha de comando?

2

Acabei de me familiarizar com o uso básico do adduser. Gostaria de eliminar a interação / prompts . Como estarei reconstruindo essa máquina com frequência, gostaria de fazer o script do processo ou, em pior , apenas copiar e colar uma instrução completa que adiciona o usuário ao grupo correto e define a senha em um comando .

Algo como:
sudo adduser username1 senha primarygroup secondarygroup, ternarygroup "nome completo1"
sudo adduser username2 senha primarygroup secondarygroup, ternarygroup "nome completo2"
sudo adduser username3 senha primarygroup secondarygroup, ternarygroup "nome completo3"
sudo adduser username4 senha primarygroup secondarygroup, ternarygroup "nome completo4"
...
sudo adduser username999 senha primarygroup secondarygroup, ternarygroup "nome completo999"

    
por Michael Prescott 01.10.2009 / 16:44

6 respostas

4

Digite " man adduser " em um prompt do shell. Ele lhe dará documentação sobre como usar adduser . Em geral, man fornecerá documentação sobre qualquer comando da CLI.

Mas você realmente quer usar useradd e não adduser .

Resumindo:

useradd -c "Real Name" -m -g primarygroup -G secondarygroup1,secondarygroup2 username

Ah, e se você quiser definir a senha ao mesmo tempo, é preciso pré-codificá-la. Eu continuamente reescrevo este pequeno programa para fazer criptografia de sal padrão Unix:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char *argv[]) {

        char *salt;

        if (argc < 2 || argc > 3) {
                fprintf(stderr, "Usage: %s string [salt]\n", argv[0]);
                exit(1);
        } else {
                if ( argc == 2 ) {
                        salt = argv[1];
                } else {
                        salt = argv[2];
                }
                printf("%s\n", crypt(argv[1], salt));
                exit(0);
        }
}

Com isso compilado como crypt , você pode adicionar a opção:

-p 'crypt password'

O ideal é que você nunca queira colocar senhas em uma linha de comando, já que existem vários locais que podem ser exibidos (saída do ps, histórico do shell, etc.), nenhum dos quais é particularmente seguro.

    
por 01.10.2009 / 16:53
6

Você pode criar um arquivo contendo a lista de nomes de usuário, etc., e usar o comando newusers . Ele quer que o arquivo pareça com o formato de /etc/passwd , com poucas exceções, uma é que a senha é texto simples ( newusers criptografa).

newusers userfile.txt

Ele não lida com vários grupos, no entanto.

    
por 01.10.2009 / 19:03
2

Se você precisar adicionar muitos usuários e estiver constantemente reconstruindo máquinas, talvez seja necessário usar Puppet . Essa é uma receita bastante simples e você pode expandir a partir daí para cobrir outras tarefas.

    
por 01.10.2009 / 18:20
1

Como é o Ubuntu, a sintaxe é um pouco diferente. Provavelmente corresponde ao debian:

adduser --gecos "Real Name" --gid PRIMARYGROUP USERNAME
usermod -G SECONDARYGROUP1,SECONDARYGROUP2 -p $(openssl passwd -1 -salt shaker "USERPASSWORD") USERNAME
    
por 01.10.2009 / 17:32
0

Você pode gravar uma sessão interativa do adduser com o autoexpect, depois criar um modelo onde você substituirá nomes de usuário, etc.

    
por 01.10.2009 / 19:02
0

você pode querer abstrair seus usuários de / etc / passwd e usar o LDAP. Como um bônus adicional, você terá usuários consistentes em várias máquinas. combine isso com o Puppet e você pode sincronizar suas configurações do NSS / PAM em todas as máquinas com facilidade.

    
por 03.10.2009 / 15:27