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.344 ]
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.
#!/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
Script para carregar e descarregar regras com iptables
Compilador SH-Compiler usando GCC 4.6 no Debian Wheezy
Instalador de Lutris com winehq-staging para rodar Origin em Debian Bullseye (Kernel 5.10.0-23) - 64
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Dificuldade para renderizar vídeo no kdenlive (6)
xubuntu sem sons de eventos (3)
Erro ao iniciar serviço samba4 como novo dc em um ambiente com ad (9)