Samba - Instalação e configuração
Publicado por Marcos da Silva Camargo (última atualização em 11/06/2015)
[ Hits: 5.229 ]
Download install_config_samba_(beta).sh
Senhores,
Segue um script, um tanto primitivo ainda, mas que pretendo deixá-lo bem robusto.
Bem, a ideia é desenvolver digamos que um "mini software" de instalação e configuração completa para o servidor Samba. Contudo necessito da ajuda do senhores, para que este projeto se torne uma ferramenta bem útil.
Peço-lhes, se puderem, que submetam este script a testes que fiquem a critério dos senhores, e documentem o erros e a solução dos mesmos (se possível), e também possíveis melhorias que eu possa fazer. Também gostaria que os senhores avaliassem o código fonte para me dizerem o que acham. E caso hajam dúvidas referente ao script, sobre a lógica que eu usei ou algo parecido, estou à disposição para responder. Não garanto respostas muito aplicadas, pois sou iniciante nesse mundo ainda.
Enfim, eu gostaria de dar continuidade nesse projeto para aplicá-lo posteriormente. E também quero aprender ainda mais, pois desde que iniciei o desenvolvimento deste script aprendi muita coisa.
Desde já agradeço a ajuda dos senhores!
Abraços!
#!/bin/bash # #-------------------------------------------------------------------------------------------------# #install_config_samba.sh - Instalação e configuração do serviço de compartilhamento Samba. # #Autor :Marcos da Silva Camargo #E-mail :marcos.sc58@live.com # #################################################################################### # # # O presente script foi desenvolvido de forma experimental, para uso livre. # # Este script é uma ferramenta para estudos complementares aos asusntos aboradados # # no segundo módulo do curso Técnico em Informática da Faculdade de Tecnologia SENAC Pelotas. # # # # Bem, vamos ao motivo da criação do presente script. Este foi desenvolvido para automatizar # # uma prática, na cadeira de Planejamento e Implantação de Servidores, referente ao Serviço # # SAMBA, que nada mais é do que um servidor de compartilhamento. # # # # Com este scipt se é capaz de fazer a instalação e configuração completa do SAMBA. Sendo assim # # uma ferramenta muíto útil, para agilizar a configuração do mesmo. # # # ################################################################################### # # #Versão: v1.0 # #Licença: GPL # #-------------------------------------------------------------------------------------------------# # #TODO Fazer uma breve explicação da execução do script, ou gerar uma documentação do mesmo #TODO Fazer agradecimentos. ###Inicialização das Variáveis #-------------------------------------------------------------------------------------------------# ### #Variável para identificação do usuário USUARIO=$(whoami) ### #Variável que retorna um valor, para a checagem de instalação. samba=$(rpm -qa | grep samba | cut -d '-' -f1 | sed '2!d') vsamba=$(smbd -V | cut -d '-' -f1 | sed 's/Version//') #adicionar_grupo="s" #adicionar_usuario="s" #adicionar_usuario_ao_grupo="s" #adicionar_compartilhamento="s" checa_grupo=$(grep ^$nome /etc/group | cut -d ':' -f1) checa_usuario=$(grep ^$nome /etc/passwd | cut -d ':' -f1) #-------------------------------------------------------------------------------------------------# ###Verificação de Usuário #-------------------------------------------------------------------------------------------------# if [ "$mscamargo" != root ]; then echo "#-------------------------------------------------------------#" echo "# ESTE SCRIPT PRECISA SER EXECUTADO COM USUARIO ROOT #" echo "#-------------------------------------------------------------#" exit fi #-------------------------------------------------------------------------------------------------# #=================================================================================================# # FUNÇÕES # #=================================================================================================# ###Função para a cehcagem da instalação do samba #-------------------------------------------------------------------------------------------------# function f_checa_instalacao(){ if [ "$samba" = "samba" ]; then echo "------------------------------------------------------------" echo "INSTALACAO CONCLUIDA COM SUCESSO!" sleep 1 echo "------------------------------------------------------------" echo -e "VOCE INSTALOU A VERSAO $vsamba \nDO SAMBA" sleep 1 echo "------------------------------------------------------------" echo "CONTINUANDO..." mv /etc/samba/smb.conf /etc/samba/smb.conf.bkp #Fazendo backup do arquivo original de touch /etc/samba/smb.conf #configuração do samba. sleep 2 echo "------------------------------------------------------------" echo "INICIANDO A CONFIGURACAO DO SAMBA..." sleep 2 else echo "------------------------------------------------------------" echo "OCORREU ALGUM ERRO DURANTE A INSTALACAO!" sleep 1 echo "------------------------------------------------------------" echo "TENTANDO FAZER A INSTALACAO NOVAMENTE" sleep 1 echo "------------------------------------------------------------" echo "ATUALIZANDO O SISTEMA, AGUARDE..." sleep 2 yum update -y echo "------------------------------------------------------------" echo "INSTALANDO O SAMBA..." sleep 1 yum install -y samba samba-client samba-doc f_checa_instalacao fi } #-------------------------------------------------------------------------------------------------# ###Função que checa a criação de grupo #-------------------------------------------------------------------------------------------------# function f_checa_criacao_grupo(){ checa_grupo=$(grep ^$nome /etc/group | cut -d ':' -f1) if [ "$checa_grupo" = "$nome" ]; then echo "------------------------------------------------------------" echo "GRUPO ADICIONADO COM SUCESSO!" sleep 2 echo "------------------------------------------------------------" echo -n "VOCE DESEJA ADICIONAR OUTRO GRUPO? [s/n]: " read adicionar case $adicionar in n) echo "------------------------------------------------------------" echo "CONTINUANDO. . ." sleep 2;; s) f_criar_grupo;; esac else echo "------------------------------------------------------------" echo -e "O GRUPO NAO FOI ADICIONADO CORRETAMENTE \nTENTE NOVAMENTE..." sleep 2 f_criar_grupo fi } #-------------------------------------------------------------------------------------------------# ###Função de criação de grupo #-------------------------------------------------------------------------------------------------# function f_criar_grupo(){ echo "------------------------------------------------------------" echo -n "DIGITE O NOME DO GRUPO: " read nome ###Variável para a checagem de caracteres especiais checa_caracteres=$(echo "$nome" | tr -d ".,;/|[]{}()=-") if [ -z $nome ]; then echo "------------------------------------------------------------" echo "CAMPO VAZIO, POR FAVOR TENTE NOVAMENTE" sleep 2 f_criar_grupo elif [ "$checa_caracteres" != "$nome" ]; then echo "------------------------------------------------------------" echo "VALOR INVALIDO!" sleep 2 f_criar_grupo elif [ "$nome" = "$checa_grupo" ]; then echo "------------------------------------------------------------" echo "O GRUPO $nome JA EXISTE!" sleep 2 f_criar_grupo else groupadd $nome f_checa_criacao_grupo fi } #-------------------------------------------------------------------------------------------------# ###Função que checa a criação de usuário #-------------------------------------------------------------------------------------------------# function f_checa_criacao_usuario(){ checa_usuario=$(grep ^$nome /etc/passwd | cut -d ':' -f1) if [ "$checa_usuario" = "$nome" ]; then echo "------------------------------------------------------------" echo "USUARIO ADICIONADO COM SUCESSO!" sleep 2 echo "------------------------------------------------------------" echo "DEFINA UMA SENHA PARA O USUARIO $nome:" smbpasswd -a $nome echo "------------------------------------------------------------" echo -n "VOCE DESEJA ADICIONAR OUTRO USUARIO? [s/n]: " read adicionar case $adicionar in n) echo "------------------------------------------------------------" echo "CONTINUANDO. . ." sleep 2;; s) f_criar_usuario;; esac else echo "------------------------------------------------------------" echo "O USUARIO NAO FOI ADICIONADO CORRETAMENTE \nTENTE NOVAMENTE..." sleep 2 f_criar_usuario fi } #-------------------------------------------------------------------------------------------------# ###Função de criação de usuário #-------------------------------------------------------------------------------------------------# function f_criar_usuario(){ echo "------------------------------------------------------------" echo -n "DIGITE O NOME DO USUARIO: " read nome checa_caracteres=$(echo "$nome" | tr -d ".,;/|[]{}()=-") checa_usuario=$(grep ^$nome /etc/passwd | cut -d ':' -f1) if [ -z $nome ]; then echo "------------------------------------------------------------" echo "CAMPO VAZIO, POR FAVOR TENTE NOVAMENTE" sleep 2 f_criar_usuario elif [ "$checa_caracteres" != "$nome" ]; then echo "------------------------------------------------------------" echo "VALOR INVALIDO!" sleep 2 f_criar_usuario elif [ "$nome" = "$checa_usuario" ]; then echo "------------------------------------------------------------" echo "O GRUPO $nome JA EXISTE!" sleep 2 f_criar_usuario else adduser $nome f_checa_criacao_usuario fi } function f_incluir_usuario(){ echo -e -n "DIGITE O NOME DOS USUARIOS A SEREM ADICIONADOS: \n EX:( usuario1,usuario2,usuario3): " read usuarios checa_usuario=$(grep ^$usuarios /etc/passwd | cut -d ':' -f1) if [ -z $usuarios ]; then echo "------------------------------------------------------------" echo "CAMPO VAZIO, POR FAVOR TENTE NOVAMENTE" f_incluir_usuario else gpasswd -M $usuarios $grupo fi } function f_incluir_usuario_grupo(){ echo "------------------------------------------------------------" echo -e -n "DIGITE O NOME DO GRUPO AO QUAL DESEJA \nADICIONAR USUARIOS: " read grupo checa_grupo=$(grep ^$grupo /etc/group | cut -d ':' -f1) if [ -z $grupo ]; then echo "------------------------------------------------------------" echo "CAMPO VAZIO, POR FAVOR TENTE NOVAMENTE" sleep 2 f_incluir_usuario_grupo elif [ "$grupo" != "$checa_grupo" ]; then echo "------------------------------------------------------------" echo "O GRUPO INFORMADO NAO EXISTE, TENTE NOVAMENTE" sleep 2 f_incluir_usuario_grupo else f_incluir_usuario echo "------------------------------------------------------------" echo "VERICANDO A INCLUSAO DOS USUARIOS..." sleep 1 echo "------------------------------------------------------------" cat /etc/group | grep ^$grupo echo "------------------------------------------------------------" echo -n "OS USUARIOS FORAM ADICIONADOS CORRETAMENTE? [s/n]: " read verificacao case $verificacao in s) sleep 1 echo "------------------------------------------------------------" echo "CONTINUANDO..." sleep 2;; n) sleep 1 echo "------------------------------------------------------------" echo "INICIANDO INCLUSAO NOVAMENTE..." sleep 1 f_incluir_usuario_grupo;; esac fi } function f_editar_global(){ echo "------------------------------------------------------------" echo "INICIANDO CONFIGURACAO DOS PARAMETROS GLOBAIS DO SMB.CONF..." sleep 2 echo "------------------------------------------------------------" echo -n "DEFINA O workgroup: " read workgroup sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O netbios name: " read netbios_name sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O server string: " read server_string sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O security [share/user]: " read security sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O os level: " read os_level sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O max log size: " read log_size sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O encrypt passwords: " read encrypt_passwords sleep 1 echo "------------------------------------------------------------" echo -n "DEFINA O hosts allow: " read hosts_allow sleep 1 echo "------------------------------------------------------------" echo "ESCREVENDO NO SMB.CONF..." echo -e > /etc/samba/smb.conf " #------------------------------------------------------------# # SMB.CONF # #------------------------------------------------------------# # #Arquivo de configuração do samba gerado automaticamente pelo #script install_config_samba.sh. #Este arquivo, assim como as demais configurações feitas pelo #script devem ser revisadas para o correto funcionamento do #servidor samba. #========== global settings ==========# [global] workgroup = $workgroup netbios name = $netbios_name server string = $server_string os level = $os_level log file = /var/log/samba/log-samba.%m log level = 1 max log size = $log_size security = $security hosts allow = $hosts_allow encrypt passwords = $encrypt_passwords smb passwd file = /etc/samba/smbpasswd #Carregamento das Impressoras printcap name = /etc/printcap load printers = yes printing = cups #Parâmetros de configuração da impressora vfs objects = recycle recycle:keeptree = yes recycle:versions = yes recycle:repository = lixeira_pst recycle:exclude = *.tmp, *.log, *.obj, ~*.*, *.bak, *.iso recycle:exclude_dir = tmp, cache " sleep 2 echo "------------------------------------------------------------" echo "CONTINUANDO..." sleep 2 } function f_add_compartilhamento(){ echo "------------------------------------------------------------" echo -n "DIGITE O NOME PARA O COMPARTILHAMENTO: " read nome echo "------------------------------------------------------------" echo "CRIANDO DIRETORIO DO COMPARTILHAMENTO..." mkdir /usr/local/$nome chmod 777 /usr/local/$nome sleep 1 echo "------------------------------------------------------------" echo -e -n "DEFINA QUEM TERA ACESSO AO COMPARTILHAMENTO $nome \n(Ex.: @grupo usuario): " read valid_users echo "------------------------------------------------------------" echo "ESCREVENDO NO SMB.CONF..." echo -e >> /etc/samba/smb.conf " #========== compartilhamento $nome ==========# [$nome] comment = $nome path = /usr/local/$nome public = no only guest = no writable = yes force create mode = 777 force directory mode = 777 valid users = $valid_users " sleep 1 echo "------------------------------------------------------------" echo -n "DESEJA ADICONAR OUTRO COMPARTILHAMENTO? [s/n]: " read adicionar case $adicionar in n) echo "------------------------------------------------------------" echo "CONTINUANDO. . ." sleep 2;; s) f_add_compartilhamento;; esac } function f_add_impressora(){ echo "------------------------------------------------------------" echo -n "IDENTIFIQUE A IPRESSORA CONFORME O ARQUIVO printcap: " read nome echo -e >> /etc/samba/smb.conf " #Impressora $nome [$nome] comment = Impressora path = /var/spool/samba browseable = yes printable = yes printer = $nome guest ok = yes read only = yes use client driver = yes print command = lpr -r -h -P %p %s " sleep 1 echo "------------------------------------------------------------" echo "IMPRESSORA ADICIONADA!" echo "------------------------------------------------------------" echo "CONTINUANDO..." sleep 2 } function f_add_lixeira(){ echo "------------------------------------------------------------" echo -n "DEFINA O DIRETORIO PARA A LIXEIRA: " read diretorio mkdir $diretorio chmod 777 $diretorio sed -i -e "s:lixeira_pst:$diretorio:g" /etc/samba/smb.conf sleep 1 echo "------------------------------------------------------------" echo "LIXEIRA ADICIONA!" sleep 1 echo "------------------------------------------------------------" echo -n "DESEJA ADICIOAR UM COMPARTILHAMENTO PARA A LIXEIRA? [s/n]: " read adicionar case $adicionar in n) echo "------------------------------------------------------------" echo "CONTINUANDO. . ." sleep 2;; s) echo "------------------------------------------------------------" echo -n "DEFINA O NOME PARA O COMPARTILHAMENTO: " read nome echo -e -n "DEFINA QUEM TERA ACESSO AO COMPARTILHAMENTO $nome \n(Ex.: @grupo usuario): " read valid_users echo "------------------------------------------------------------" echo "ESCREVENDO NO SMB.CONF..." echo -e >> /etc/samba/smb.conf " #========== compartilhamento $nome ==========# [$nome] comment = $nome path = $diretorio public = no only guest = no writable = yes force create mode = 777 force directory mode = 777 valid users = $valid_users " sleep 1 echo "------------------------------------------------------------" echo "LIXEIRA ADICIONA!" echo "------------------------------------------------------------" echo "CONTINUANDO...";; esac sleep 2 } #-------------------------------------------------------------------------------------------------# #=================================================================================================# ###Seção de checagem de instalação, isto é, se for detectada uma instalação do samba, será ###perguntado se o administrador deseja fazer a atualização. Do contrário será instalado ###normalmente o samba. if [ $samba = "samba" ]; then echo "------------------------------------------------------------" echo "VOCE POSSUI A VERSAO $vsamba DO SAMBA" echo "------------------------------------------------------------" echo -n "DESEJA ATUALIZAR? [s/n]: " read atualizar case $atualizar in n) echo "------------------------------------------------------------" echo "VOCE OPTOU POR NAO ATUALIZAR O SAMBA" sleep 1 echo "------------------------------------------------------------" echo "PARTINDO PARA A PROXIMA ETAPA..." echo "------------------------------------------------------------" echo "INICIANDO A CONFIGURACAO DO SAMBA..." sleep 2;; s) echo "------------------------------------------------------------" echo "INICIANDO ATUALIZACAO DO SAMBA..." sleep 2 yum isntall -y samba samba-client samba-doc f_checa_instalacao sleep 2;; *) echo "------------------------------------------------------------" echo "VALOR INVALIDO!" sleep 1;; esac else echo "------------------------------------------------------------" echo "INICIANDO INSTALACAO DO SAMBA..." sleep 2 yum install -y samba samba-client samba-doc sleep 2 echo "------------------------------------------------------------" echo "CHECANDO A INSTALACAO..." sleep 1 f_checa_instalacao fi #=================================================================================================# ###MENU PRINCIPAL menu (){ while true $opcao != 0 do echo "------------------------------------------------------------" echo "" echo "ESCOLHA UMA OPCAO:" echo "#------------------------------------------------------------#" echo "##### 1) ADICIONAR GRUPOS;" echo " ##### 2) ADICIONAR USUARIOS;" echo "####### 3) INCLUIR USUARIOS EM GRUPO;" echo " ####### 4) CONFIGURAR GLOBAL;" echo " ####### 5) ADICIONAR COMPARTILHAMENTO;" echo "####### 6) ADICIONAR IMPRESSORA;" echo " ##### 7) ADICIONAR LIXEIRA;" echo "##### 0) SAIR" echo "#------------------------------------------------------------#" echo -n "SELECIONE SUA OPCAO: " read opcao case $opcao in 0) echo "------------------------------------------------------------" echo "REINICIANDO SAMBA." echo "------------------------------------------------------------" /etc/init.d/smb stop /etc/init.d/smb start echo "SAINDO DO SCRIPT..." sleep 2 echo "------------------------------------------------------------" echo "AH!! NAO ESQUEÇA DE CONFERIR O ARQUIVO SMB.CONF..."; sleep 3; echo "------------------------------------------------------------" echo "OBRIGADO E ATÉ A PROXIMA!! ;)" echo " ::::::::::: ::: ::: ::: :::: ::: ::: ::: :::::::: " sleep 0.5 echo " :+: :+: :+: :+: :+: :+:+: :+: :+: :+: :+: :+: " sleep 0.5 echo " +:+ +:+ +:+ +:+ +:+ :+:+:+ +:+ +:+ +:+ +:+ " sleep 0.5 echo " +#+ +#++:++#++ +#++:++#++: +#+ +:+ +#+ +#++:++ +#++:++#++ " sleep 0.5 echo " +#+ +#+ +#+ +#+ +#+ +#+ +#+#+# +#+ +#+ +#+ " sleep 0.5 echo " #+# #+# #+# #+# #+# #+# #+#+# #+# #+# #+# #+# " sleep 0.5 echo "### ### ### ### ### ### #### ### ### ######## " sleep 2 break; exit;; 1)f_criar_grupo;; 2)f_criar_usuario;; 3)f_incluir_usuario_grupo;; 4)f_editar_global;; 5)f_add_compartilhamento;; 6)f_add_impressora;; 7)f_add_lixeira;; *) echo "------------------------------------------------------------" echo "VALOR INVALIDO!" sleep 2;; esac done } menu
Instalador de chaves PGP no APT
Instalando e configurando Postgres com Dialog
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Linux rodando do hd externo ou ssd? (4)
Firewall iptables - Rotear Interface Cliente (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta