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

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

[ Hits: 1.109 ]

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 Jean 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 '[email protected]\(com\)\(https://\)\(slackware\)\(www\)@\2\4.\3.\1 [email protected]'   
#                                                                                                      
#######################################################################################################
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 \[email protected] --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 = [email protected]        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

Instalação dos principais programas para um usuário comum

Montando compartilhamentos Webdav no Linux

Parando o Screeensaver do Gnome durante uma reprodução no mplayer

Remover arquivos

Backup Remoto com rsync, automatico, para varias maquinas, sem senha.


  

Comentários
[1] Comentário enviado por mauricio123 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
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts