Como posso atribuir uma senha inicial / padrão a um usuário no Linux?

9

Eu encontrei um guia que explica como defina a senha de um usuário . Estou tentando automatizá-lo e enviar um e-mail para o usuário como:

userid created with password XYZ.
request to change the initial password.

De acordo com o documento acima, uma senha criptografada precisa ser criada usando Python e alimentada no comando usermod da seguinte forma:

 usermod -p "<encrypted-password>" <username>

Existem outras maneiras mais simples de fazer isso? Eu não quero baixar nenhum utilitário especial para fazer isso; deve ser generalizado tanto quanto possível.

Editar : mesmo o método apresentado no link acima parece não funcionar para mim:

bash-3.00# python
Python 2.4.6 (#1, Dec 13 2009, 23:43:51) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt; print crypt.crypt("<password>","<salt>")
<sOMrcxm7pCPI
>>> ^D
bash-3.00# useradd -g other -p "sOMrcxm7pCPI" -G bin,sys -m -s /usr/bin/bash mukesh2
UX: useradd: ERROR: project sOMrcxm7pCPI does not exist.  Choose another.
UX: useradd: sOMrcxm7pCPI name should be all lower case or numeric.
    
por munish 06.12.2012 / 23:08

4 respostas

10

Você pode usar chpasswd para fazer isso, assim:

echo "username:newpassword" | chpasswd

Você pode canalizar em chpasswd de programas diferentes de echo , se for conveniente, mas isso funcionará.

Edit: Para gerar a senha dentro do shell script e depois configurá-la, você pode fazer algo assim:

# Change username to the correct user:
USR=username
# This will generate a random, 8-character password:
PASS='tr -dc A-Za-z0-9_ < /dev/urandom | head -c8'
# This will actually set the password:
echo "$USR:$PASS" | chpasswd

Para mais informações sobre chpasswd , consulte link

(O comando para gerar senha era do link )

    
por 06.12.2012 / 23:50
2

Você pode usar o OpenSSL para gerar a senha aleatória (16 caracteres, neste caso):

# 1000 bytes should be enough to give us 16 alphanumeric ones
p=$(openssl rand 1000 | strings | grep -io [[:alnum:]] | head -n 16 | tr -d '\n')

Em seguida, alimente a senha com hash para useradd ou usermod

# omit the "-1" if you want traditional crypt()
usermod -p $(openssl passwd -1 "$p") <username>

Crédito vencido: a geração de senha é adaptada de um método similar que usa /dev/urandom em vez de openssl .

    
por 07.12.2012 / 00:06
2

useradd deve funcionar (eu fiz isso no Ubuntu). Talvez verifique se cada um dos seus argumentos está correto (existem grupos, o caminho é certo para bash). Você pode executar o comando com apenas uma senha e um usuário e, em seguida, usar userdel para remover e, em seguida, tentar novamente com mais parâmetros, para ver o que causa o problema (abordagem de força bruta).

Há também newusers (veja a página de manual), pelo menos no Ubuntu, onde você fornece um arquivo com informações do tipo passwd, incluindo senhas de texto simples e cria esses usuários. Boa maneira de fazer muitos usuários ao mesmo tempo.

    
por 07.12.2012 / 01:05
1

maneira mais simples que encontrei:


PASSWD="mySeCr3t-default-pa55" 
echo ${PASSWD} | passwd --stdin username_here
    
por 07.12.2012 / 00:34