Criando usuário e configurando o sudo através de script no Slackware

Publicado por César (última atualização em 30/08/2020)

[ Hits: 2.322 ]

Download config_user

Download config_user_v2 (versão 2)




Criei este breve script para que o usuário criado tivesse configurações especificas além de configurar o sudo, o mesmo pode ser modificado para criação de usuários em massa.

  



Versões atualizadas deste script

Versão 2 - Enviado por César em 06/05/2020

Changelog: adicionado modificações em user-dirs.dirs

Download config_user_v2


Esconder código-fonte

#!/bin/sh
#######################################################################################################
#                                                                                                      
# Autor: Jean Zonta                                                                                    
# Pseudonym: wiki.anon                                                                                 
# Script Name: config_user                                                                            
# License: GNU/GPL V3+                                                                                 
# DateTime: seg 16 set 2019 00:43:32                                                                   
# echo "ykmk0cpqpB{cjqq0eqo0dt" | perl -pe \ 's/(.)/chr(ord($1)-2*1)/ge'                              
# echo 'comhttps://slackwarewww' | sed 's@\(com\)\(https://\)\(slackware\)\(www\)@\2\4.\3.\1 ..!!!@'   
#                                                                                                      
#######################################################################################################
HOSTNAME=${HOSTNAME:-/etc/HOSTNAME}
GROUP=${GROUP:-/etc/group}
SUDOERS=${SUDOERS:-/etc/sudoers}
PROFILE=${PROFILE:-/etc/profile}
PASSWD=${PASSWD:-/etc/passwd}
SHADOW=${SHADOW:-/etc/shadow}
PROMPTS=($(cat /etc/shells)) #Vetor com default shell's
BASHRCADM=${BASHRCADM:-/root/.bashrc}
######################################

if [ ${UID} != 0 ]; then 
echo -e "\n\e[1;31mYou must be root\e[0m..!!!\n"
exit 1
else
######################################
#configura arquivo issue
ISSUE=${ISSUE:-/etc/issue}
SLVERSION=${SLVERSION:-/etc/slackware-version}
VERSION=${VERSION:-$(cat ${SLVERSION})}

if [ -f ${SLVERSION} ]; then

 if [ "$(cat ${ISSUE})" = "Welcome to $2 \s-\r.\m \l" ]; then
  echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${ISSUE}\e[0m\" \e[1;34mjá foi alterado\e[0m!"
   else
    
    echo "Welcome to $2 \s-\r.\m \l" > ${ISSUE}
    if [ $? -eq 0 ]; then
     echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${ISSUE}\e[0m\" \e[1;34mconfigurado com sucesso\e[0m!\n"
      fi
  fi
fi
######################################
######################################
#configura usuário

USUARIO=""

while [ -z "$dark777" ]; do
 echo -ne "\n\e[1;33mEnter username\e[0m: " 
 read USUARIO
 
  if [ -z "$dark777" ]; then
   echo -e "\n\e[1;31mEnter the username\e[0m!\n"
    fi
done

if [ ! -z "$(getent passwd $dark777)" ]; then
 echo -e "\n\e[1;34mUser \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34malready exists\e[0m!\n"
  exit
   else
######################################
######################################
#configura id do usuário

IDLASTPASSWD="$(cat ${PASSWD} | sed -n '$p' | cut -f3 -d':')" # id do último usuário ou linha
IDLASTGROUP="$(cat ${GROUP} | sed -n '$p' | cut -f3 -d':')" # id do ultimo grupo para não ficar repetido com o id do usuário

:<<COMENT
A verificação do id do usuário se faz nescessária automaticamente, uma vez que,
o primeiro usuário é criado assumindo o id 1000 se for criado com o comando useradd,
depois o grupo sudo será criado assumindo o id 1001 se for criado com o comando groupadd. 
Caso o usuário recorra ao script para criar um novo usuário ou mesmo seu primeiro, 
pode ocorrer do grupo sudo ficar com o id do usuário, para que isso
não aconteça, foi nescessário fazer a verificação do id em passwd e group, 
assim o próximo usuário que for criado com o script, não terá o mesmo id do grupo sudo,
e nem o grupo sudo ficará com o id idêntico ao do novo usuário,
este script pode ser usado tanto para criar e configurar apenas um usuário, 
quanto para criação de usuários em massa.
COMENT

if [ "${IDLASTPASSWD}" -eq "99" ]; then 
 IDUSER="1000"
  else
   IDUSER="$((${IDLASTPASSWD}+1))"
      
   if [ ! -z "$(cat ${PASSWD} | grep ${IDUSER})" -a "${IDLASTPASSWD}" = "${IDUSER}" ]; then
    IDUSER="$((${IDLASTPASSWD}+1))"
   else
    IDUSER="${IDUSER}"     
   fi
    
   if [ ! -z "$(cat ${GROUP} | grep ${IDUSER})" -a "${IDLASTGROUP}" = "${IDUSER}" ]; then
    IDUSER="$((${IDLASTGROUP}+1))"
   else
    IDUSER="${IDUSER}"      
   fi
fi

######################################
######################################
#configura senha do usuário
PASSWORD="$(tr -dc _a-z-A-Z-0-9#* < /dev/urandom | head -c8)" #gera senhas de até 8 caracteres

echo -ne "\n\e[1;33mEnter password user or\nPressione [enter] generate password\e[0m: "
read SENHA

if [ -z "${SENHA}" ]; then
  SENHA="${PASSWORD}"
 else
  SENHA="${SENHA}"
fi
echo "$dark777:${PASSWORD}" >> ~/user_senha #Adiciona um arquivo contendo o usuário e senha no diretorio do usuario root
######################################
######################################
#configura shell padrão

echo -ne "\n\e[1;33mDefault shell's \e[1;35m(\e[1;31m${PROMPTS[@]/*\/}\e[1;35m)\n\e[1;33mEnter your shell\e[0m: "
read SHELLS

if ! grep -wq "${SHELLS}" <<< ${PROMPTS[@]/*\/}; then
  SHELLS="bash"
 else
  SHELLS="${SHELLS}"
fi
######################################
######################################
#comentário sobre tipo do usuário

echo -ne "\n\e[1;33mEnter the coments\e[0m: "
read COMENTARIO

if [ -z "$
Eita! O script tá gigante. Os meus são tão pequenos. Mas eu achei muito bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]" ]; then COMENTARIO="Slackware User Comun"   fi ###################################### ###################################### #adiciona usuário em /etc/passwd echo -e "\n\e[1;31mAdicionando usuário \e[1;36m$dark777\e[0m!" #adiciona usuário em /etc/passwd echo "$dark777:x:${IDUSER}:${IDUSER}:$
Eita! O script tá gigante. Os meus são tão pequenos. Mas eu achei muito bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]:/home/$dark777:/bin/${SHELLS}" >> ${PASSWD} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mUsuário \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mAdicionado a \e[0m\"\e[1;36m${PASSWD}\e[0m\" \e[1;34mcom sucesso\e[0m!"   fi #adiciona linha de usuário sem senha em /etc/shadow echo "$dark777:x:$(sed -n '1p' ${SHADOW}- | cut -f3 -d':'):0:99999:7:::" >> ${SHADOW} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mUsuário \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mAdicionado em \e[0m\"\e[1;36m${SHADOW}\e[0m\" \e[1;34mcom sucesso\e[0m!"   fi    #configura senha do usuário echo "$dark777:${SENHA}" | chpasswd -m if [ $? -eq 0 ]; then echo -e "\n\e[1;34mSenha do usuário \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mconfigurada com sucesso\e[0m!"   fi #alterando a linha de usuário sem senha em /etc/shadow- sed -i "/$dark777/ s/$dark777:.*/$dark777:\!:$(sed -n '1p' ${SHADOW}- | cut -f3 -d':'):0:99999:7:::/g;" ${SHADOW}- if [ $? -eq 0 ]; then echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${SHADOW}-\e[0m\" \e[1;34malterado com sucesso\e[0m!"   fi #cria grupo com nome do usuário em /etc/group echo "$dark777:x:${IDUSER}:" >> ${GROUP} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mGrupo \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mAdicionado \e[0m\"\e[1;36m${GROUP}\e[0m\" \e[1;34mcom sucesso\e[0m!"   fi #cria grupo com nome do usuário em /etc/group- echo "$dark777:x:${IDUSER}:" >> ${GROUP}- if [ $? -eq 0 ]; then echo -e "\n\e[1;34mGrupo \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mAdicionado \e[0m\"\e[1;36m${GROUP}-\e[0m\" \e[1;34mcom sucesso\e[0m!"   fi #configura diretorios do usuário mkdir -p /home/$dark777/{Documentos,Downloads,Imagens,Músicas,Vídeos,Filmes,Packages,Projetos,Workspace/GitHub,.mozilla/{extensions,firefox/574CK34R3.default}} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mDiretorios \e[0m(\e[1;36mDocumentos\e[0m,\e[1;36mDownloads\e[0m,\e[1;36mImagens\e[0m,\e[1;36mMúsicas\e[0m,\e[1;36mVídeos\e[0m,\e[1;36mFilmes\e[0m,\e[1;36mPackages\e[0m,\e[1;36mProjetos\e[0m,\e[1;36mWorkspace\e[0m) \e[1;34mdo usuário \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mcriado com sucesso\e[0m!" #configura dono das pastas em /home/${USER} chown -R $dark777.$dark777 /home/$dark777   if [ $? -eq 0 ]; then    echo -e "\n\e[1;34mDono dos diretórios de \e[0m\"\e[1;36m/home/$dark777\e[0m\" \e[1;34malterado com sucesso\e[0m!"    fi fi #cria grupo sudo se não existir if [ ! -z "$(getent group sudo | cut -f1 -d':')" ]; then echo -e "\n\e[1;34mGrupo \e[0m\"\e[1;36msudo\e[0m\" \e[1;34malready exists\e[0m!"   else      echo "sudo:x:$((${IDUSER}+1)):" >> ${GROUP}   if [ $? -eq 0 ]; then    echo -e "\n\e[1;34mGrupo \e[0m\"\e[1;36msudo\e[0m\" \e[1;34mcriado com sucesso\e[0m!"          #configura grupo sudo em /etc/sudoers     if [ ! -z "$(cat ${SUDOERS} | grep "%sudo ALL=(ALL) ALL")" ]; then      echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${SUDOERS}\e[0m\" \e[1;34mjá foi alterado\e[0m!"       else        sed -i '/%sudo/ s/# %sudo.*/%sudo ALL=(ALL) ALL\n\n## Same thing without a password\n%sudo ALL=(ALL) NOPASSWD: ALL/g;' ${SUDOERS}         if [ $? -eq 0 ]; then          echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${SUDOERS}\e[0m\" \e[1;34malterado com sucesso\e[0m!"           fi     fi   fi fi #adiciona usuário aos grupos existentes if [ -z "$(getent group disk lp kmem wheel floppy dialout audio video cdrom plugdev power netdev scanner sudo | grep $dark777)" ]; then usermod -aG disk,lp,kmem,wheel,floppy,dialout,audio,video,cdrom,plugdev,power,netdev,scanner,sudo $dark777 if [ $? -eq 0 ]; then   echo -e "\n\e[1;34mUsuário \e[0m\"\e[1;36m$dark777\e[0m\" \e[1;34mAdicionado aos grupos \e[0m(\e[1;36mdisk\e[0m,\e[1;36mlp\e[0m,\e[1;36mkmem\e[0m,\e[1;36mwheel\e[0m,\e[1;36mfloppy\e[0m,\e[1;36mdialout\e[0m,\e[1;36maudio\e[0m,\e[1;36mvideo\e[0m,\e[1;36mcdrom\e[0m,\e[1;36mplugdev\e[0m,\e[1;36mpower\e[0m,\e[1;36mnetdev\e[0m,\e[1;36mscanner\e[0m,\e[1;36msudo\e[0m)\e[1;34m com sucesso\e[0m!"    fi fi MATAR_PROCESSO="`echo 'kill_process() { if [ -z \$1 ]; then   echo -e "\\nDigite o nome do processo\\npara que ele seja morto\\n"    else     NUM=\$(ps -axc | grep \$1 | awk '{print \$1}')      su -c "kill -9 \${NUM}"       fi } '`" #cria o arquivo .bashrc em /home/${USER} BASHRCUSER=${BASHRCUSER:-/home/$dark777/.bashrc} echo "# Aliases alias repo-pl='git add .;git commit -m \"Scripts e Comandos Perl\";git push;' alias repo-py='git add .;git commit -m \"Python e Django\";git push;' alias repo-cs='git add .;git commit -m \"Sources code Asp.net/C-Sharp\";git push;' alias repo-cpp='git add .;git commit -m \"Sources code C/C++\";git push;' alias repo-java='git add .;git commit -m \"Sources code Java\";git push;' alias repo-slack='git add .;git commit -m \"Packages e Settings\";git push;' alias repo-shell='git add .;git commit -m \"Scripts e Settings\";git push;' alias repo-dmars='git add .;git commit -m \"Sources code Digital Mars D\";git push;' alias del='mv \$@ --target-directory=\${HOME}/.local/share/Trash/files/' alias trash='su -c \"rm -rf \${HOME}/.local/share/Trash/{files/,info/}\"' # Functions # Kill process ${MATAR_PROCESSO} # Clear and organize .bash_history clsh() { # Remove linha em branco: BLANK_LNRM=\${BLANK_LNRM:-\$(sed  -i '/^$/d' .bash_history)} # Remove caracteres em branco no inicio da linha: BLANK_INIRM=\${BLANK_INIRM:-\$(sed -i 's/^ //g' .bash_history)} # Remove caracteres em branco no final da linha: BLANK_FIMRM=\${BLANK_FIMRM:-\$(sed -i 's/ $//g' .bash_history)} # Remove linhas duplicadas RMDUP=\${RMDUP:-\$(sort -u .bash_history > str_history)} # Salva os comandos devolta em .bash_history NEWSTORE=\${NEWSTORE:-\$(cat str_history > .bash_history)} #Remove os arquivos de suporte RMFILES=\${RMFILES:-\$(rm -rf str_history)} } [ -r ${PROFILE} ] &&  . ${PROFILE}" >> ${BASHRCUSER} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${BASHRCUSER}\e[0m\" \e[1;34mcriado com sucesso\e[0m!"      #troca a permissão do arquivo .bashrc   #-rw-r--r--    chmod 644 ${BASHRCUSER}     chown $dark777.$dark777 ${BASHRCUSER}      if [ $? -eq 0 ]; then       echo -e "\n\e[1;34mPermissão do arquivo \e[0m\"\e[1;36m${BASHRCUSER}\e[0m\" \e[1;34malterada com sucesso\e[0m!"        fi fi #cria o arquivo .bashrc no home do usuário /root cat  ${BASHRCUSER} > ${BASHRCADM} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${BASHRCADM}\e[0m\" \e[1;34mcriado com sucesso\e[0m!"   #remove command su in function kill_process do .bashrc   sed -i 's/su -c "//g;/${NUM}"/ s/"$//g;' ${BASHRCADM}    if [ $? -eq 0 ]; then     echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${BASHRCADM}\e[0m\" \e[1;34malterado com sucesso\e[0m!"           #-rw-------      chmod 600 ${BASHRCADM}       if [ $? -eq 0 ]; then        echo -e "\n\e[1;34mPermissão do arquivo \e[0m\"\e[1;36m${BASHRCADM}\e[0m\" \e[1;34malterada com sucesso\e[0m!"         fi    fi fi #cria o arquivo profile.ini em /home/${USER}/.mozilla/firefox PROFILEINI=${PROFILEINI:-/home/$dark777/.mozilla/firefox/profiles.ini} echo "[General] StartWithLastProfile=1 [Profile0] Name=default IsRelative=1 Path=574CK34R3.default Default=1" >> ${PROFILEINI} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${PROFILEINI}\e[0m\" \e[1;34mconfigurado com sucesso\e[0m!" #drwx------ .mozilla/ chmod -R 700 /home/$dark777/.mozilla/ #-rw-r--r-- chmod 644 ${PROFILEINI}   chown $dark777.$dark777 ${PROFILEINI}    if [ $? -eq 0 ]; then     echo -e "\n\e[1;34mPermissão do arquivo \e[0m\"\e[1;36m${PROFILEINI}\e[0m\" \e[1;34malterada com sucesso\e[0m!"      fi fi #cria o arquivo .gitconfig em /home/${USER} GITCONFIGUSER=${GITCONFIGUSER:-/home/$dark777/.gitconfig} echo "[user]        name = Jean Zonta        email = wiki.anon@yahoo.com.br        username = dark777 [core]        editor = nano [merge]        tool = diff [push]        default = matching [web]        browser = mozilla-firefox [color \"branch\"]        current = yellow bold        local = green bold        remote = cyan bold [color \"diff\"]        meta = yellow bold        frag = magenta bold        old = red bold        new = green bold        whitespace = red reverse [color \"status\"]        added = green bold        changed = yellow bold        untracked = red bold      " >> ${GITCONFIGUSER} if [ $? -eq 0 ]; then echo -e "\n\e[1;34mArquivo \e[0m\"\e[1;36m${GITCONFIGUSER}\e[0m\" \e[1;34mconfigurado com sucesso\e[0m!"      #troca a permissão do arquivo .gitconfig   #-rw-r--r--   chmod 644 ${GITCONFIGUSER}    chown $dark777.$dark777 ${GITCONFIGUSER}     if [ $? -eq 0 ]; then      echo -e "\n\e[1;34mPermissão do arquivo \e[0m\"\e[1;36m${GITCONFIGUSER}\e[0m\" \e[1;34malterada com sucesso\e[0m!"       fi fi fi #fim de verificação se usuário existe em /etc/passwd ###################################### ###################################### #configura a variável PATH #pega o número da linha em que se encontra a primeira ocorrência da variável PATH #NUM=$(cat -n ${PROFILE} | grep "PATH=\"" | head -1 | awk '{print $1}') #se a variável EXTPATH for vazia então configure a variável PATH #if [ ! -z "$(cat ${PROFILE} | grep "/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/local/sbin:/usr/sbin:/sbin")" ]; then # echo -e "\n\e[1;34mVariável \e[0m\"\e[1;36m\$PATH\e[0m\" \e[1;34mjá foi alterada\e[0m!\n" #  else    #   sed -i ''${NUM}'s/games"/games/g;'${NUM}'s/$/:\/usr\/local\/sbin:\/usr\/sbin:\/sbin"/g;' ${PROFILE} #    if [ $? -eq 0 ]; then #     echo -e "\n\e[1;34mVariável \e[0m\"\e[1;36m\$PATH\e[0m\" \e[1;34malterada com sucesso\e[0m!\n" #      fi #fi ###################################### ###################################### #configura ambiente para a variável PATH EXISTS=($(cat ${PROFILE} | grep "\"`id -u`\"")) if [ "${#EXISTS[@]}" -eq "13" ]; then echo -e "\n\e[1;34mVariável \e[0m\"\e[1;36m\$PATH\e[0m\" \e[1;34mjá foi alterada\e[0m!\n"   else       #comenta a linha e cria uma nova linha para verificação da variável PATH para qualquer usuário criado    #sed '/"`id -u`"/ s/^/#/g;/"`id -u`"/ s/$/\nif [ "`id -u`" = "0" -o "`id -un`" = "${HOME\/*\\\/}" ]; then/g;' ${PROFILE}       #altera a linha adiciona no fim a verificação do PATH para qualquer usuário criado    sed -i '/"`id -u`"/ s/]; then/-o "`id -un`" = "${HOME\/*\\\/}" ]; then/g;' ${PROFILE}    if [ $? -eq 0 ]; then      echo -e "\n\e[1;34mAmbiente da variável \e[0m\"\e[1;36m\$PATH\e[0m\" \e[1;34mconfigurado com sucesso\e[0m!\n"       fi fi ###################################### fi #Fim se user equal a root

Scripts recomendados

Pingar faixa de IP's

Linux Mint 20 Pós Instalação

Fuga da Mina

Adição automática dos repositórios do Google Chrome, Google Talk Plugin, Google Earth, Dro no Ubuntu

desligando o PC


  

Comentários
[1] Comentário enviado por maurixnovatrento em 31/08/2020 - 13:06h


Eita! O script tá gigante. Os meus são tão pequenos. Mas eu achei muito bom.

___________________________________________________________
[code]Conhecimento não se Leva para o Túmulo.
https://github.com/MauricioFerrari-NovaTrento [/code]


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts