Maneira correta de adicionar uma conta de usuário via script bash

6

Eu cruzei essa pergunta para AskUbuntu porque meu problema parece mais agudo no Debian / Ubuntu, mas foi sugerido que eu pergunte aqui. Qualquer que seja o método sugerido para resolver este problema, deve funcionar na maioria das distros (por exemplo, openSuse e Ubuntu). Aqui está o código de script que estou usando agora:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

Existem vários problemas com a conta de usuário que ele cria no Ubuntu.

  • o prompt do terminal não está definido ( echo $PS1 não retorna nada)
  • as teclas de seta e a tecla tab não funcionam corretamente no terminal
  • a senha parece não funcionar (embora ainda não esteja claro exatamente qual é esse problema)
  • os direitos de / etc / sudoers definidos para este novo usuário não são honrados

Se, em vez disso, eu criar manualmente o usuário com adduser (em vez de useradd), não tenho esses problemas. Mas eu preciso de um script ou método não exclusivo do Debian para adicionar contas de usuários através do meu script bash.

Eu também tinha um anterior pergunta sobre este tópico, mas foi diferente o suficiente para que não seja relevante para este problema.

    
por MountainX 13.07.2013 / 22:14

2 respostas

6

O problema é que o shell padrão para um novo usuário no Debian é /bin/sh , então a maioria dos recursos que você está acostumado a partir de bash não está lá. Tente adicionar -s /bin/bash ao seu comando useradd .

Você também pode alterar o shell padrão permanentemente editando /etc/default/useradd .

Editar:

A solução para modificar automaticamente a senha (encontrada por MountainX) é aqui

    
por 13.07.2013 / 22:25
3

A chave do cursor e os problemas de prompt soam como se os arquivos do esqueleto não fossem copiados corretamente. O diretório inicial do novo usuário tem um .bashrc ?

Quanto à senha, man useradd no Slack me diz

-p, --password PASSWORD The encrypted password, as returned by crypt(3). The default is to disable the password.

então provavelmente você não deve colocar a senha de texto simples lá. Não consigo encontrar uma maneira conveniente de chamar manualmente a criptografia agora, então talvez você precise de uma chamada extra para sudo passwd $mynewuser .

    
por 13.07.2013 / 22:26