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
______________________________________________________________________