Scripts adduser (para criar usuários) em distros não Debian - Para iniciantes

Publicado por Alberto Federman Neto. em 09/06/2014

[ Hits: 12.080 ]

Blog: https://ciencialivre.blog/

 


Scripts adduser (para criar usuários) em distros não Debian - Para iniciantes



Introdução

Para criar usuários em GNU/Linux, deve-se usar o comando useradd:
Esses usuários podem ser associados a grupos, ter diretórios /home, senhas, usarem ou não sudo e etc, às vezes, usando comandos complementares:
Isso tem a vantagem de dar total controle ao administrador do sistema, o root.

Porém, para o iniciante, scripts podem automatizar as tarefas e facilitam muito:
O principal e o mais conhecido desses scripts, se chama adduser:
Porém, é típico das distros baseadas em Debian: Ubuntu Manpage:

E, geralmente (embora não sempre), não existe em outros tipos de GNU/Linux. Por exemplo, no Fedora e no antigo Gentoo, o comando adduser é idêntico (apenas link simbólico ou alias) ao useradd:
Atualmente, nem existe mais comando adduser em Gentoo e Sabayon. Resolvi implementá-lo, para facilitar para o iniciante.

Em distros baseadas em Debian, as versões de adduser são geralmente escritas em Perl (não em bash script):
Inclusive a versão oficial, o pacote adduser:

Preparando os scripts

Eu tentei baixar e testar, adaptar as versões de adduser em Perl, porém, sem sucesso. Não há compatibilidade de certas bibliotecas, além dos scripts necessitarem de infra-estrutura tipo Debian, inexistentes em Gentoo ou Sabayon.

Entretanto, existem versões em bash script e essas rodam universalmente em todas as distros. Testei dois desses scripts (e eles funcionaram):
Por isso, eu traduzi os dois scripts para Português do Brasil, e os publico aqui.

O primeiro script se chamará adduser1.sh (autoria, Nixcraft, EUA, 2009).

Observação: nesse script, aparece o termo "GECOS", é o campo para comentários do usuário:
#!/bin/bash

# Por Nixcraft, EUA (2009).
# URL: nixcraft.com/showthread.php/12744-Linux-Add-User-Shell-Script
# Traduzido por Albfneto, Brasil (2014).


ADMINDIR=/home/admin
ADMINGROUP=admin
BASEDIR=/home
USRSHELL=/bin/bash

USERNAME=""
NORMAL=""
ADMIN=""
ARGS=""
TRUE=0
FALSE=1

usage(){
    echo "Usar: $0 {-a|-n} [ -c GECOS ] {-u username}"
    echo ""
    echo " -a          : Criar Superusuario"
    echo " -n          : Criar usuario normal"
    echo " -c GECOS    : Setar campo GECOS para o novo usuario"
    echo " -u username : Setar nome de LOGIN"
    echo ""
    exit 1
}


isUserExits(){
    grep $1 /etc/passwd > /dev/null
    [ $? -eq 0 ] && return $TRUE || return $FALSE
}

createNewUser(){
    /usr/sbin/useradd "$@"
}

while getopts anc:u: option
do
        case "${option}"
        in
                a) ADMIN="TRUE";;
                n) NORMAL="TRUE";;
                c) GECOS=${OPTARG};;
                u) USERNAME=${OPTARG};;
                \?) usage
                    exit 1;;
        esac
done

[ "$USERNAME" == "" ] && usage
[ "$USERNAME" != "" -a "$ADMIN" == ""  -a "$NORMAL" == ""  ] && usage
[ "$ADMIN" == "TRUE"  -a "$NORMAL" == "TRUE"  ] && usage

if [ $(id -u) -ne 0 ]
then
    echo "Voce precisa ser Root para rodar o Script"
    exit 2
fi

[ "$GECOS" != "" ] && ARGS="-c $GECOS"

if [ "$ADMIN" == "TRUE" ]
then
    if ( ! isUserExits $USERNAME )
    then
        createNewUser -s $USRSHELL -g $ADMINGROUP -d $ADMINDIR $ARGS $USERNAME
    else
        echo "Username \"$USERNAME\" exists in /etc/passwd"
        exit 3
    fi
fi

if [ "$NORMAL" == "TRUE" ]
then
    if ( ! isUserExits $USERNAME )
    then
        createNewUser -m -b $BASEDIR -s $USRSHELL $ARGS $USERNAME
    else
        echo "Username \"$USERNAME\" exists in /etc/passwd"
        exit 3
    fi
fi

exit 0

Para preparar os scripts, abra seu editor de texto em modo root. Eu usei o editor Kate, mas você pode usar o que quiser, ou o padrão da sua distro:

kdesu kate    # Ou o nome do seu editor: gedit, kwrite, etc...

Copie e cole as linhas dos scripts, e salve em uma pasta que conheça a localização. Por exemplo, eu salvei em ~/Desktop/PACOTES.

Se não quiser preparar os scripts, você pode baixá-los prontos da minha área de download público do Dropbox:
Feitos os scrips, dê permissão de execução:

sudo chmod +x adduser1.sh
E/ou:
sudo chmod +x adduser2.sh

E execute (veja abaixo).

Testando

Eis os testes dos scripts, mostrando que criam o usuário e a respectiva pasta /home:

Criando usuários (teste e teste3) com o script 1:

sudo sh adduser1.sh
Senha:

Usar: adduser.sh {-a|-n} [ -c GECOS ] {-u username}

 -a          : Criar Superusuario
 -n          : Criar usuario normal
 -c GECOS    : Setar campo GECOS para o novo usuario
 -u username : Setar nome de LOGIN


Criando os dois usuários, um com comentário, outro sem:

sudo sh adduser1.sh -n teste
$ sudo sh adduser1.sh -n -c "Benvindo" -u teste3


Vejam os usuários criados:

grep teste /etc/passwd
teste:x:1001:1020::/home/teste:/bin/bash
teste3:x:1002:1002:Benvindo:/home/teste3:/bin/bash


Criando usuário (teste2) com o script 2:

A mensagem de senha incorreta, é porque eu testei com uma palavra muito simples, mas ele homologou a senha mesmo assim:

sudo sh adduser2.sh
 Requer 2 Parametros : Nome de Usuario e Senha...

sudo sh adduser2.sh teste2 senha2

Nova senha:SENHA INCORRETA: é uma palavra da língua portuguesa
Redigite a nova senha:passwd: senha atualizada com sucesso
 User teste2 Usuario adicionado ao Sistema com sucesso

 Voce quer adicionar esse Usuario ao Sudoers, o Sudo? (s/n)
s

 User teste2 Adicionado com sucesso ao Sudoers!!!


grep teste /etc/passwd
teste:x:1001:1020::/home/teste:/bin/bash
teste3:x:1002:1002:Benvindo:/home/teste3:/bin/bash
teste2:x:1003:1003::/home/teste2:/bin/bash


Scripts e pacotes alternativos

Você pode testar o clássico script-pacote: useradd do Slackware:
Em sua versão modificada, superadduser, se ele existir para sua distro, porque ele deve rodar em outras distros.

Você pode baixar uma versão completa, aqui:
Mas, em Gentoo e Sabayon, o pacote superadduser já existe nos repositórios:
Mas não está totalmente traduzido. Instale-o, através destes comandos:

Em Gentoo:

# emerge --sync
# emerge -av superadduser


Em Sabayon:

# equo up
# equo i superadduser


Execute diretamente, como root:

sudo superadduser

Eis o pacote, funcionando:

sudo superadduser
Senha:

Login name for new user []: teste4

User ID ('UID') [ defaults to next available ]:

Initial group [ users ]:

Additional groups (comma separated) []:

Home directory [ /home/teste4 ]

Shell [ /bin/bash ]

Expiry date (YYYY-MM-DD) []:

New account will be created as follows:

---------------------------------------
Login name.......:  teste4
UID..............:  [ Next available ]
Initial group....:  users
Additional groups:  [ None ]
Home directory...:  /home/teste4
Shell............:  /bin/bash
Expiry date......:  [ Never ]

This is it... if you want to bail out, hit Control-C.  Otherwise, press
ENTER to go ahead and make the account.

# APERTAR ENTER:

Creating new account...

Modificando as informações de usuário para teste4
Informe o novo valor ou pressione ENTER para aceitar o padrão
        Nome Completo []: Usuario Teste 4
        Número da Sala []: 1
        Fone de Trabalho []: (16)3030-3030
        Fone Residencial []: (16)7777-7777
        Outro []: (11)8888-8888
Nova senha:
Redigite a nova senha:
passwd: senha atualizada com sucesso
Account setup complete.


Eis o usuário:

grep teste /etc/passwd
teste4:x:1002:100:Usuario Teste 4,1,(16)3030-3030,(16)7777-7777,(11)8888-8888:/home/teste4:/bin/bash

Removendo usuários e pastas

Naturalmente, por serem testes, necessitei remover os usuários criados e os respectivos diretórios /home. Um jeito simples de fazer isso, é:

sudo userdel -f -r USUARIO

Onde "USUARIO", é o nome do usuário criado.
No caso, apliquei o comando aos usuários "teste", "teste2", "teste3" e "teste4", removendo-os.

Conclusão

Você pode adaptar os pacotes e/ou scripts adduser (do Debian ou do Slackware) para funcionarem em outras distros.

Em Slackware, o script se chama "adduse" (não é o comando: adduser), mas possui versões modificadas em Gentoo e Sabayon, chamadas superadduser.

Testei os scripts em Sabayon Linux, mas tenho em mente que funcionem em várias outras distros. Quem quiser testar em outros GNU/Linux, pode depois comentar, para informar à comunidade.

Observação final: se seu Desktop já tem um usuário root padrão, não crie outro usuário com poderes de root (em outras palavras, não use a opção -a do script adduser1.sh). Não é uma boa ideia.

A existência de mais de um superusuário em um sistema não é segura, principalmente, se ele é logável na interface gráfica. Em todo o caso, possivelmente o sistema se proteja, e só te deixará criar, se existir um grupo admin.

Outras dicas deste autor

Configurando ou consertando sudo gráfico no KDE

Instalando ou atualizando vários reprodutores de mídia no Gentoo Linux ou Sabayon

Procurando e achando pacotes para Linux

Editor Diakonos, um substituto melhorado do Pico e do Nano

Facílima instalação de pacotes de 32 bits em qualquer Linux

Leitura recomendada

Exibindo o conteúdo ao contrário

Ir direto para o home directory

Ordenando uma lista de IPs (IPv4) com o sort

Criando senhas automaticamente

Extraindo a Versão de um Pacote do Debian

  

Comentários
[1] Comentário enviado por albfneto em 11/06/2014 - 15:41h

ERRATA DA DICA:

1) Onde se lê:

"Em Slackware, o script se chama "adduse" (não é o comando: adduser)" , Lê-se:


"Em Slackware, o SCRIPT se chama "adduser" (não é o COMANDO adduser)"


2) Faltou o conteúdo do Segundo Script, adduser2.sh (autoria de Manoj Kumar, Índia e Brasil, 2012):

# CÓDIGO
#!/bin/bash
UCOM="/usr/sbin/useradd"
PCOM="/usr/bin/passwd"
DCOM="/usr/sbin/userdel"
GCOM="/bin/grep"

if [ "$#" != "2" ]
then
echo -e "{COMENTARIO}33[33m Required 2 Parameters : User Name and Password..."
exit;
else
$UCOM $1
( echo $2; echo $2 ) | $PCOM $1

if [ "$?" != "0" ]
then
$DCOM -r $1
else
echo -e "{COMENTARIO}33[35m User $1 Successfully Added To System"
echo -e "{COMENTARIO}33[0m"
fi
fi

echo -e "{COMENTARIO}33[33m Do You Want To Add User to Sudoers/Super User List (y/n)"
read choice
echo -e "{COMENTARIO}33[0m"

if [ "$choice" == "y" -o "$choice" == "Y" ]
then
$GCOM $1 /etc/sudoers

if [ "$?" == "0" ]
then
echo -e "{COMENTARIO}33[31m User $1 Already Added To Sudoers File"
echo -e "{COMENTARIO}33[0m"
else
echo "$1 ALL=(ALL) ALL" | cat >> /etc/sudoers
echo -e "{COMENTARIO}33[35m User $1 Successfully Added To Sudoers!!!"
echo -e "{COMENTARIO}33[0m"
fi

elif [ "$choice" == "n" -o "$choice" == "N" ]
then
echo -e "{COMENTARIO}33[35m $1 User Not Added To Sudoers!!!"
echo -e "{COMENTARIO}33[0m"
else
echo -e "{COMENTARIO}33[37m Invalid Choice....User Not Added To Sudoers :-("
echo -e "{COMENTARIO}33[0m"
fi
# FIM DO CÓDIGO




[2] Comentário enviado por albfneto em 18/05/2015 - 13:54h

COMPLEMENTOS DA DICA:

Atualizado até 18 de Maio de 2015.

Se preferir usar um outro script fácil, para o iniciante, pode usar este simples Shell Script para adicionar usuários.
Ele é de autoria do conhecido programador Vivek Gite, Índia, da NixCraft, autor do Livro "Linux Shell Scriptting Tutorial, a Beginner's Handbook."

Script:
http://www.cyberciti.biz/tips/howto-write-shell-script-to-add-user.html

Outras Referências:
http://www.freeos.com/guides/lsst/
http://bash.cyberciti.biz/guide/Linux_Shell_Scripting_Tutorial_-_A_Beginner's_handbook
http://bash.cyberciti.biz/guide/Linux_Shell_Scripting_Tutorial_-_A_Beginner's_handbook:About
http://www.linuxtoday.com/author/Vivek+Gite/
http://www.cyberciti.biz/tips/about-us
http://roest8.home.xs4all.nl/mike/boek/E-books/2_Linux%20Shell%20Scripting%20Tutorial%20-%20A%20Begi...

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts