Skip to content

Instantly share code, notes, and snippets.

@bartier
Last active January 18, 2020 23:49
Show Gist options
  • Save bartier/dc55f4a4e28ac75b03d159bb7602eb22 to your computer and use it in GitHub Desktop.
Save bartier/dc55f4a4e28ac75b03d159bb7602eb22 to your computer and use it in GitHub Desktop.
[Group User Permissions] - Shell Script #linux
#!/bin/sh
opcoes_principal()
{
printf "######## GUP 1.0 ######## by @bartier\n\n"
printf "1 - Grupo\n"
printf "2 - Usuário\n"
printf "3 - Permissão de acesso\n"
printf "4 - Sair\n"
}
opcoes_permissao()
{
printf "Selecione a permissão desejada:\n"
printf "1 - Nenhuma permissão\n"
printf "2 - Execução\n"
printf "3 - Escrita\n"
printf "4 - Escrita e execução\n"
printf "5 - Leitura\n"
printf "6 - Leitura e execução\n"
printf "7 - Leitura, escrita\n"
printf "8 - Leitura, escrita e execução\n"
}
opcao_invalida()
{
printf "\nOpção inválida!\n"
sleep 0.5
clear
}
alterar_permissao()
{
OPCAO=$1 # opcao de permissao escolhida
TIPO=$2 # dono=g grupo=g outros=o
case $OPCAO in
"1" ) # nenhuma permissao
chmod $TIPO= $caminho
;;
"2" ) # execucao
chmod $TIPO=x $caminho
;;
"3" ) # escrita
chmod $TIPO=w $caminho
;;
"4" ) # escrita, execucao
chmod $TIPO=wx $caminho
;;
"5" ) # leitura
chmod $TIPO=r $caminho
;;
"6" ) # leitura, execucao
chmod $TIPO=rx $caminho
;;
"7" ) # leitura, escrita
chmod $TIPO=rw $caminho
;;
"8" ) # leitura, escrita, execucao
chmod $TIPO=rwx $caminho
;;
*)
opcao_invalida
;;
esac
}
valida_caminho()
{
if [ -f $caminho ] || [ -d $caminho ] ; then
printf "Caminho validado.\n\n"
fi
}
criar_grupo()
{
clear
printf "Insira o nome do grupo a ser criado:\n"
read nomeGrupo;
groupadd $nomeGrupo
printf "Grupo: $nomeGrupo criado.\n"
sleep 1
}
alterar_nome_grupo()
{
clear
printf "Insira o nome do grupo desejado:\n"
read nomeGrupo;
printf "Insira o novo nome do grupo:\n"
read novoNomeGrupo;
groupmod --new-name $novoNomeGrupo $nomeGrupo
printf "Grupo $nomeGrupo alterado para $novoNomeGrupo\n"
sleep 1
}
alterar_senha_usuario()
{
clear
printf "Insira o nome do usuário:"
read nomeUsuario;
passwd $nomeUsuario
printf "Criado/alterado a senha de $nomeUsuario"
sleep 1
}
criar_usuario()
{
clear
printf "Insira o nome do usuário a ser criado:\n"
read nomeUsuario;
useradd -m $nomeUsuario
printf "Usuário $nomeUsuario criado."
sleep 1
}
excluir_usuario()
{
clear
printf "Insira o usuário para ser excluído com a home:\n"
read nomeUsuario;
userdel -rf $nomeUsuario
printf "Usuário $nomeUsuario excluído com a /home"
sleep 1
}
modificar_dono()
{
clear
printf "Insira o caminho:\n"
read caminho;
valida_caminho
printf "Insira o novo dono desse caminho:\n"
read novoDono;
chown --recursive $novoDono $caminho
printf "Dono de $caminho alterado para $novoDono"
sleep 1
}
modificar_grupo()
{
clear
printf "Insira o caminho:\n"
read caminho;
valida_caminho
printf "Insira o novo grupo desse caminho:\n"
read novoGrupo;
chgrp -f --recursive $novoGrupo $caminho
printf "Grupo de $caminho alterado para $novoGrupo"
sleep 1
}
modificar_permissoes()
{
clear
printf "Insira o diretório/arquivo:\n"
read caminho;
valida_caminho
while true
do
clear
printf "Diretório/arquivo escolhido: $caminho\n"
printf "1 - Dono\n"
printf "2 - Grupo\n"
printf "3 - Outros\n"
printf "4 - Voltar para menu principal\n"
read opcao;
case $opcao in
"1") # dono
clear
opcoes_permissao
read opcao;
alterar_permissao $opcao u
;;
"2") # grupo
clear
opcoes_permissao
read opcao;
alterar_permissao $opcao g
;;
"3") # outros
clear
opcoes_permissao
read opcao;
alterar_permissao $opcao o
;;
"4") # voltar
break
;;
*)
opcao_invalida
;;
esac
done
}
###
# main
###
while true
do
clear
opcoes_principal
read opcao;
case $opcao in
"1") # grupo
while true
do
clear
printf "1 - Criar Grupo\n"
printf "2 - Alterar o nome de um grupo já criado\n"
printf "3 - Voltar para menu principal\n"
read opcao;
case $opcao in
"1")
criar_grupo
;;
"2") # alterar o nome de um grupo já criado
alterar_nome_grupo
;;
"3") # voltar para o menu principal
break
;;
*)
opcao_invalida
;;
esac
done
;;
"2") # usuario
while true
do
clear
printf "1 - Criar usuário\n"
printf "2 - Criar/Alterar senha de usuário existente\n"
printf "3 - Excluir usuário junto com seu diretório home\n"
printf "4 - Voltar para menu principal\n"
read opcao;
case $opcao in
"1")
criar_usuario
;;
"2") # criar ou alterar senha de usuário existente
alterar_senha_usuario
;;
"3") # excluir usuário junto com seu diretório home
excluir_usuario
;;
"4") # voltar para o menu principal
break
;;
*)
opcao_invalida
;;
esac
done
;;
"3") # permissao de acesso
while true
do
clear
printf "1 - Modificar o dono de um arquivo ou diretório\n"
printf "2 - Modificar o grupo dono de um arquivo ou diretório\n"
printf "3 - Modificar as permissões de um arquivo ou diretório\n"
printf "4 - Voltar para menu principal\n"
read opcao;
case $opcao in
"1") # modificar o dono de um arquivo ou diretório
modificar_dono
;;
"2") # modificar o grupo dono de um arquivo ou diretório
modificar_grupo
;;
"3") # modificar as permissões de um arquivo ou diretório
modificar_permissoes
;;
"4") # voltar para o menu principal
break
;;
*)
opcao_invalida
;;
esac
done
;;
"4") # sair do shell script
clear
exit
;;
*)
opcao_invalida
;;
esac
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment