Eu preciso ter a capacidade de criar contas de usuário no meu Linux (Fedora 10) e atribuir automaticamente uma senha por meio de um script bash (ou caso contrário, se necessário).
É fácil criar o usuário via Bash, por exemplo:
[whoever@server ]# /usr/sbin/useradd newuser
É possível atribuir uma senha no Bash, algo funcionalmente semelhante a isso, mas automaticamente:
[whoever@server ]# passwd newuser
Changing password for user testpass.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[whoever@server ]#
expect
script.Respostas:
Você pode executar o comando passwd e enviar a entrada canalizada. Então, faça algo como:
fonte
echo
está embutido no shell usado, o que geralmente é comum), pelo menos preocupante/proc/
.echo -e "password\npassword\n" | passwd
em 13.04echo 'myuser:mypass' | chpasswd
. Espero que ajude.Você também pode usar chpasswd :
assim, você alterar a senha de usuário
username
paranew_password
.fonte
$ apropos chpasswd
...chpasswd (8) - update passwords in batch mode
busybox
, enquantopasswd
não funciona (não há--stdin
opção).Eu estava me perguntando a mesma coisa e não queria confiar em um script Python.
Esta é a linha para adicionar um usuário com uma senha definida em uma linha do bash:
fonte
useradd -p $(openssl passwd -1 $PASS) $USER
é mais moderno, pois os back-ticks são descontinuados e$()
são recomendados.useradd -m -p <password> -s /bin/bash <user>
, -m Crates o diretório inicial, -s especifica os usuários com o shell padrão, substituipassword
e atendeuser
às suas necessidades.useradd -m -p $(openssl passwd -1 -salt $SALT $PASS)
. Eu acho que isso é necessário mais tarde no Ubuntu.O código abaixo funcionou no Ubuntu 14.04. Experimente antes de usá-lo em outras versões / variantes linux.
fonte
--gecos
Gostei da abordagem de Tralemonkey,
echo thePassword | passwd theUsername --stdin
embora não tenha funcionado para mim como está escrito. No entanto, isso funcionou para mim.-e
é reconhecer\n
como nova linha.sudo
é o acesso root para o Ubuntu.As aspas duplas são para reconhecer
$
e expandir as variáveis.O comando acima passa a senha e uma nova linha, duas vezes, para
passwd
, que é o quepasswd
requer.Se não estiver usando variáveis, acho que isso provavelmente funciona.
Aspas simples devem bastar aqui.
fonte
O seguinte funciona para mim e testado no Ubuntu 14.04. É um liner que não requer nenhuma entrada do usuário.
Retirado de @Tralemonkey
fonte
Você pode usar a opção -p.
Infelizmente, isso exige que você faça o hash da senha (onde passwd faz isso por você). Infelizmente, não parece haver um utilitário padrão para o hash de alguns dados; portanto, você precisará escrever isso sozinho.
Aqui está um pequeno script Python que preparei para fazer a criptografia para você. Supondo que você o chamou de pcrypt, você escreveria sua linha de comando acima para:
Alguns avisos para estar ciente.
e aqui está o pcrypt:
fonte
Forro único para criar um usuário sudo com diretório inicial e senha.
fonte
--stdin
não funciona no Debian. Diz:Isso funcionou para mim:
Aqui podemos encontrar outras boas maneiras:
fonte
Você pode usar o expect no seu script bash.
Em http://www.seanodonnell.com/code/?id=21
fonte
Sei que vou chegar anos depois, mas não acredito que ninguém sugeriu o usermod.
Inferno, no caso de alguém querer fazer isso em um HPUX mais antigo, você pode usar
usermod.sam
.O -F será necessário apenas se a pessoa que estiver executando o script for o usuário atual. Claro que você não precisa usar o Perl para criar o hash. Você pode usar o openssl ou muitos outros comandos em seu lugar.
fonte
Aqui está um script que fará isso por você ...
Você pode adicionar uma lista de usuários (ou apenas um usuário), se desejar, de uma só vez e cada um terá uma senha diferente. Como bônus, você é apresentado no final do script com uma lista da senha de cada usuário. .... Se você quiser, pode adicionar algumas opções de manutenção do usuário
gostar:
para o script que definirá a idade da senha e assim por diante.
=======
===========
Espero que isto ajude.
Saúde, Carel
fonte
Eu testei no meu próprio script de shell.
$new_username
significa usuário recém-criado$new_password
significa nova senhaPara o CentOS
Para Debian / Ubuntu
Para OpenSUSE
fonte
A solução da Tralemonkey quase funcionou para mim também ... mas não completamente. Acabei fazendo assim:
2 detalhes importantes que sua solução não incluiu,
-n
impede que o eco adicione uma\n
senha que está sendo criptografada e as aspas simples protegem o conteúdo de ser interpretado pelo shell (bash) no meu caso.BTW Eu executei este comando como root em um sistema CentOS 5.6 no caso de alguém estar se perguntando.
fonte
A solução que funciona no Debian e no Red Hat. Depende do perl, usa hashes sha-512:
Uso:
Ele pode ser usado efetivamente como uma linha, mas você precisará especificar a senha, o salt e o nome de usuário nos locais certos:
fonte
Na IBM ( https://www.ibm.com/support/knowledgecenter/ssw_aix_61/com.ibm.aix.cmds1/chpasswd.htm ):
Crie um arquivo de texto, diga text.txt e preencha-o com pares user: password da seguinte maneira:
Salve o arquivo text.txt e execute
É isso aí. A solução é (a) escalável e (b) não envolve a impressão de senhas na linha de comando.
fonte
fonte
Para RedHat / CentOS, eis o código que cria um usuário, adiciona as senhas e torna o usuário um sudoer:
fonte
uso:
./my_add_user.sh USER PASSWD
código:
fonte