msoliver
(usa Debian)
Enviado em 10/12/2019 - 23:35h
7apolochewy7 escreveu:
Olá msoliver,
Primeiramente gostaria de agradecer pela atenção,
Vamos lá...
Sobre o questionamento da home:
Sim, está correto,
No primeiro caso, temos pasta pessoal como subpasta de /home:
/home/<username>
O segundo, a pasta pessoal é uma subpasta de /home/ligadajustica:
/home/ligadajustica/<username>
O terceiro segue a mesma lógica do segundo:
/home/superamigos/<username>
Sobre os Grupos:
Sim há todos aqueles grupos, pois no exercício original, todos os grupos são utilizados,
Mas as outras tarefas são apenas variações do segundo e terceiro exemplo, fazendo combinações de Shells+homes+grupos diferentes.
Obrigado
Boa noite, 7apolochewy7.
Segue o Script, no capricho, com validações, cores e, como dizem por aqui, cheio de "frescuras", rsrsrsrsr
#!/bin/bash
#CORES
CV="\x1B[0;38;5;196m";CVD="\x1B[0;38;5;2m";FC="\x1B[m";
grupos=(cidadaos ligadajustica herois); #grupos usados
shells=($(grep -Ew '(bash|sh)$' /etc/shells|tr "\n" ' ')); #Shell's definidos, caminho completo.
READ_USER(){ read -p "$nª Usuário: " usuario; }
CHECA_USER() { if grep -qw "^${usuario}" /etc/passwd;then $1;else $2;fi;}
ERROLOGIN() { printf "${CV}\nUSUáRIO:$usuario JÁ EXISTE NO SISTEMA\n${FC}\n";READ_USER;}
MSGOK() { printf "${CVD}\n CADASTRO EFETUADO COM SUCESSO.\n$(LINE)\n USUARIO:$usuario\n Senha:${PASSWD[0]}\n Nome:$nome\n$(LINE)\n${FC}" ; }
ERROCAD() { printf "${CV}\n$(LINE)\n PROBLEMAS NO CADASTRO DO USUáRIO:$usuario ${FC}\n$(LINE)\n" ; }
LINE() { echo -e $_{1..50}'\b—' ; }
#Function/Looping solicitando o nome dos 10 usuários, Define vars, shell, grupo e cria user....
pega_usuarios(){
for ((n=1;n<=10;n++));do
READ_USER
#Checa se usuario informado já existe.
CHECA_USER ERROLOGIN
read -p "Nome do $usuario: " nome;
if (( $g == "0"));then
shell="${shells[0]}";grupo="${grupos[0]}";
home="/home/$usuario";
elif (($g == "1"));then
shell="${shells[1]}";grupo="${grupos[1]}";
mkdir -p /home/${grupos[1]}/;
home="/home/${grupos[1]}/$usuario";
elif (($g == "2"));then
shell="${shells[1]}"; grupo="${grupos[2]}";
mkdir -p /home/superamigos/;
home="/home/superamigos/$usuario";
fi
read -a PASSWD <<< $(makepasswd --crypt-md5 --chars=6) #GERA SENHA CRIPTOGRAFADA (06 CARACTERES)
printf "$(LINE)\nUsuário: $usuario\nNome: $nome\nHome: $home\nGrupo: $grupo\nShell: $shell\n$(LINE)\n";
useradd -c "$nome" -p "${PASSWD[1]}" -d "$home" -m -g "$grupo" -s ${shell} "$usuario"; #Adiciona usuario.
[ ${grpext} ] && gpasswd -a ${usuario} "${grpext}";
CHECA_USER MSGOK ERROCAD #Checa se foi cadastrado com sucesso.
done
}
#CHECA ROOT/SUDO#
(($UID != 0)) && { zenity --timeout="2" \
--warning --text '<span foreground="red" font="16">Exige Root!\nUso: sudo "'$(basename $0)'"</span>' \
2>/dev/null;exit 0;} || clear;
#Checa Compatibilidade
for app in makepasswd zenity;do
if ! which $app >/dev/null;then
inst+=($app);
fi;
done
((${#inst[@]}>0)) && { printf "${CV}Instalar: %s${FC}\n" ${inst[@]};printf "Saindo . . .\n";exit 0; }
for ((g=0;g<${#grupos[@]};g++));do
[[ ${grupos[$g]} =~ 'herois' ]] && grpext="${grupos[1]}";
printf "$(LINE)\nPasso $((g+1)) - Grupo: ${grupos[$g]} $grpext\n$(LINE)\n";
#Se o grupo nao existe, é criado.
if ! grep -wq "^${grupos[$g]}" /etc/group;then
groupadd ${grupos[$g]}
fi
pega_usuarios
done
Faça uns testes, verifique se funciona a contento....
Testei aqui, funcionou legal.
Não esqueça de,
Quando Resolvido,
Marcar como RESOLVIDO e ESCOLHER a "MELHOR RESPOSTA!" rsrsrsrs
Vai fazer o que foi proposto, os 03 passos....
#Passo: 1:
#home: /home/$usuario
#shell login: sh
#grupo: cidadaos
#Passo 2
#home: /home/ligadajustica/$usuario
#shell: bash
#grupo: ligadajustica
#passo 3
#home: /home/superamigos/$usuario
#shell: bash
#grupo: herois e ligadajustica
A logica foi feita de acordo com os passos acima
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________