Criação de servidores de arquivos simples com Samba

Publicado por Felipe (última atualização em 09/10/2016)

[ Hits: 2.273 ]

Download sambadialog.sh




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.

  



Esconder código-fonte

#!/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





Scripts recomendados

Gerenciamento de software e hardware de desktop

Cria ambiente virtual (VirtualHost no Apache e Virtual Mail no Postfix) para desenvolvimento web

Script de Backup para FITA DAT usando "afio"

Firewall para Compartilhamento de Conexão 3G

Compilar OpenSSL


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts