Samba - Instalação e configuração
Publicado por Marcos da Silva Camargo (última atualização em 11/06/2015)
[ Hits: 5.284 ]
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
Bom treino para iniciados em Shell
Arquivo que instala o Lazarus 1.0
Administração de usuários Linux
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Programa duplicado no "Abrir com" e na barra de pesquisa do ... (1)
VMs e Interfaces de Rede desapareceram (13)
Como abrir o pycharm no linux [RESOLVIDO] (4)