Criação de servidores de arquivos simples com Samba
Publicado por Felipe (última atualização em 09/10/2016)
[ Hits: 2.789 ]
O script precisa do Samba e o dialog instalados, depois é só executar, colocar o nome de acesso que o servidor irá receber, cadastrar os grupos e seus usuários. Cada usuário só tem acesso a pasta do seu grupo podendo alterar somente sua pasta, mas ver o conteúdo das outras do mesmo grupo. Há também a possibilidade de criar grupo público.
#!/bin/bash ### Script com dialog para automatizar criação e administração server samba #Comentar apos o primeiro uso!!!! mv /etc/samba/smb.conf /etc/samba/smb.conf.original mkdir grpsamba chmod 775 grpsamba touch grpsamba/grupos.txt nome=$( dialog --stdout --inputbox 'Nome do servidor' 0 0 ) echo "[global]" >> /etc/samba/smb.conf echo "server string =" $nome >> /etc/samba/smb.conf echo "netbios name =" $nome >> /etc/samba/smb.conf echo "workgroup = WORKGROUP" >> /etc/samba/smb.conf echo "security = user" >> /etc/samba/smb.conf echo "log file = /var/log/samba/samba.log" >> /etc/samba/smb.conf while : ; do escolha=$( dialog --stdout \ --title 'Menu' \ --menu 'Escolha um opção' 0 0 0 \ 1 'Adicionar Grupos' \ 2 'Adicionar Usuarios' \ 3 'Pasta Publica' \ 4 'Remover usuarios' \ 5 'Remover Grupos' \ 6 'Trocar usuario de Grupo' \ 7 'Listar usuarios de um Grupo' \ 8 'Listar Grupos' \ 9 'Exit' \ ) [ $? -ne 0 ] && break case $escolha in 1)grpo1=$( dialog --stdout --inputbox 'Nome do Grupo:' 0 0 ) echo $grpo1 >> grpsamba/grupos.txt touch grpsamba/$grpo1.Usuarios mkdir grpsamba/$grpo1 addgroup $grpo1 way=$(pwd) ### adicionando compartilhamento do grupo ### echo "#$grpo1" >> /etc/samba/smb.conf echo [$grpo1] >> /etc/samba/smb.conf echo comment = Acesso Restrito a $grpo1 >> /etc/samba/smb.conf echo path = $way/grpsamba/$grpo1 >> /etc/samba/smb.conf echo public = no >> /etc/samba/smb.conf echo writable = yes >> /etc/samba/smb.conf echo valid users = @$grpo1 >> /etc/samba/smb.conf echo force group = $grpo1 >> /etc/samba/smb.conf chown root.$grpo1 -R grpsamba/$grpo1 chmod 750 grpsamba/$grpo1 ;; 2)user=$( dialog --stdout --inputbox "Nome de Usuario" 0 0 ) useradd --no-create-home -s /bin/false $user smbpasswd -a $user group=$( dialog --stdout --inputbox "Qual é o Grupo deste Usuario?" 0 0 ) adduser $user $group mkdir grpsamba/$group/$user chown $user:$group -R grpsamba/$group/$user chmod 750 grpsamba/$group/$user echo $user >> grpsamba/$group.Usuarios ### reiniciando samba ### /etc/init.d/samba restart ;; 3)pubpast=$( dialog --stdout --inputbox "Nome para pasta Publica:" 0 0 ) touch grpsamba/$pubpast.pubpast mkdir grpsamba/$pubpast ### adicionando compartilhamento publico ### echo "#$pubpast" >> /etc/samba/smb.conf echo [$pubpast] >> /etc/samba/smb.conf echo comment = Acesso Publico >> /etc/samba/smb.conf echo path = grpsamba/$pubpast >> /etc/samba/smb.conf echo public = yes >> /etc/samba/smb.conf echo writable = yes >> /etc/samba/smb.conf chmod 777 grpsamba/$pubpast ;; 4)rmvuser=$( dialog --stdout --inputbox "Usuario a ser Removido:" 0 0 ) grpuser=$( dialog --stdout --inputbox "Digite o Grupo do Usuario:" 0 0 ) corte=$(cat /grpsamba/$grpuser.Usuarios | grep -v $userrmv) rm grpsamba/$grpuser.Usuarios echo $corte > grpsamba/$grpuser.Usuarios userdel -r $userrmv dialog --infobox "Usuario Deletado " 0 0 ;; 5)rmgrp=$( dialog --stdout --inputbox "Grupo a ser Removido" 0 0 ) groupdel $rmgrp corte=$(cat grpsamba/grupos.txt | grep -v $rmgrp) echo $corte > grpsamba/grupos.txt ;; 6)usergrp=$( dialog --stdout --inputbox 'Digite o nome do Usuario' 0 0 ) grpuser=$( dialog --stdout --inputbox 'Digite o novo grupo do Usuario' 0 0 ) usermod -G $grpuser $usergrp dialog --infobox 'O Usuario $usergrp faz parte do grupo $grpuser' 0 0 ;; 7)grplist=$( dialog --stdout --inputbox 'Qual grupo a ser listado?' 0 0 ) dialog --textbox grpsamba/$grplist.Usuarios 0 0 ;; 8)dialog --textbox grpsamba/grupos.txt 0 0 ;; esac done
Recriando /dev/null facilmente
Script de Autenticação simples do Speedy HOme
Script para gravar DVD, gera imagem e grava na mídia
Software backup, restore, leitura de logs, com dialog
Nenhum comentário foi encontrado.
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? (2)
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