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.