Como criar um comando sem usar o adduser no script

1. Como criar um comando sem usar o adduser no script

igor jordam
igorjordam

(usa Outra)

Enviado em 04/11/2018 - 00:15h

1. Escrever um script que crie um novo usuário, sem senha, no sistema.
2. O novo usuário e o grupo ao qual o usuário deve pertencer serão parâmetros de entrada do
script, ou seja, não haverá a interrupção de execução por nenhuma instrução de entrada de
dados.
3. O script deve verificar se o número de parâmetros é adequado. Caso contrário deve exibir uma
mensagem de erro.
4. O script deve editar os arquivos que armazenam usuários e grupos, quando for o caso, e criar o
diretório do novo usuário no local correto. Nesta atividade, será assumido que o diretório do
usuário terá o seu nome.
5. O script deve atribuir corretamente as permissões e a propriedade ao novo diretório.
6. O shell padrão do novo usuário será o bash.
7. Não usar os comandos adduser ou useradd no script.
8. Ao final, você vai executar o comando passwd para gerar a senha do novo usuário.
9. Antes de começar as atividades, faça uma cópia de segurança dos arquivos originais.


  


2. Re: Como criar um comando sem usar o adduser no script

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 04/11/2018 - 00:42h

igorjordam escreveu:

1. Escrever um script que crie um novo usuário, sem senha, no sistema.
2. O novo usuário e o grupo ao qual o usuário deve pertencer serão parâmetros de entrada do
script, ou seja, não haverá a interrupção de execução por nenhuma instrução de entrada de
dados.
3. O script deve verificar se o número de parâmetros é adequado. Caso contrário deve exibir uma
mensagem de erro.
4. O script deve editar os arquivos que armazenam usuários e grupos, quando for o caso, e criar o
diretório do novo usuário no local correto. Nesta atividade, será assumido que o diretório do
usuário terá o seu nome.
5. O script deve atribuir corretamente as permissões e a propriedade ao novo diretório.
6. O shell padrão do novo usuário será o bash.
7. Não usar os comandos adduser ou useradd no script.
8. Ao final, você vai executar o comando passwd para gerar a senha do novo usuário.
9. Antes de começar as atividades, faça uma cópia de segurança dos arquivos originais.


Boa noite Igor, segue:
Comentado, testado e funcionando.
#!/bin/bash
F="\e[m"
V="\e[1;38;5;1m"
D="\e[0;38;5;46m"
#CRIA USUARIO NA UNHA.

MSGERRO() {
echo -e "\n${V} Deve informar dois argumentos.\n${D} Uso: $0 login grupo\n${F}"
exit 0
}

tput clear
#VERIFICA SE É root
[ $UID != 0 ] && { echo -e "\n${V} LOGUE COM o \"root\"\n Ou\n sudo $0 login grupo\n${F}" ; exit 0 ; }

#VERIFICA Nº de ARGUMENTOS, onde $1 é login e $2 o grupo.
case $# in
0) MSGERRO ;;
1) echo -e "\n Favor informar o grupo" ;MSGERRO;;
2) LGN="$1";GRUPO="$2";;
*) echo -e "\n${V} Argumentos INVÁLIDOS${F}";MSGERRO;;
esac

#Verifica se o login informado já é cadastrado
if egrep -q "^${LGN}:" /etc/passwd;then
echo -e "\n${V} Usuário $LGN já é cadastrado no sistema.\n Saindo\n${F}\n"
exit 0
else
echo -e "\n${D} Prosseguindo . . .${F}\n"
echo -e "Cópia de segurança dos arquivos:\n\"/etc/passwd\"\n\"/etc/group\"\nCom a extensão \".bak\""
cp /etc/passwd /etc/passwd.bak
cp /etc/group /etc/group.bak
wait
#Pega id min e max, de user e group
eval $(egrep '^(FIRST|LAST)_[GU]ID' /etc/adduser.conf)
#pega id do ultimo user cadastrado
NU=$(awk -F: '$3>='$FIRST_UID' && $3 <= '$LAST_UID' {print $3}' /etc/passwd|sort -n -r|head -n1)
#SE GRUPO INFORMADO NAO EXISTE, É CRIADO
if egrep "^${GRUPO}:" /etc/group;then
echo -e "\nGrupo Informado: $GRUPO, já existe\n"
#PEGA ID DO GRUPO
NG=$(id -g ${GRUPO})
else
echo -e "\n Criando Grupo: $GRUPO\n"
#pega id do ultimo grupo cadastrado
NG=$(awk -F: '$3>='$FIRST_GID' && $3 <= '$LAST_GID' {print $3}' /etc/group|sort -n -r|head -n1)
#SOMA 1
let NG++
#INCLUI/CRIA GRUPO
echo "${GRUPO}:x:${NG}" >> /etc/group
fi
#INCLUI USER
echo "${LGN}:x:$(($NU+1)):${NG}::/home/${LGN}:/bin/bash" >> /etc/passwd
#TESTA SE o DIR EXISTE, SE NAO EXISTIR, CRIA.
[ -d /home/${LGN} ] echo -e "${D}O Diretório /home/${LGN}, existe e será usado./n${F}" || mkdir /home/${LGN}
#ALTERA O DONO DO DIR PARA o user CRIADO (${LGN}).
chown ${LGN}:${LGN} /home/${LGN}
echo -e "Informe a senha para o usuário ${LGN}\n"
passwd "$LGN"
fi
#TESTE FINAL#
[ $(grep "^${LGN}:" /etc/passwd) ] && [ $(grep "^${GRUPO}:" /etc/group) ] && [ $(grep "^${LGN}:" /etc/shadow) ] && [ -d /home/${LGN} ] && echo -e "\n${D} CADASTRO do usuário ${LGN} EFETUADO COM SUCESSO${F}\n" || echo -e "\n${V} ERRO no CADASTRO${F}\n"


É Isso...
Se a RESPOSTA foi ESCLARECEDORA, marque o tópico como RESOLVIDO, e escolha a MELHOR RESPOSTA
Escolhendo a MINHA, ficarei muito grato e serei pontuado, o que incentiva a continuar contribuindo...

Abç.:
Marcelo Oliver







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts