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

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

[ Hits: 594 ]

Download config_user




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.

  



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 ${VERSION} \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 ${VERSION} \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 "${COMENTARIO}" ]; 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}:${COMENTARIO}:/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

Ativa e dasativa o XGL para o KDE

rc.local para Debian

LogPac

xpock-dl: baixe vídeos do xpock.com.br

Album de fotografias v1.1


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts