Criação de servidores de arquivos simples com Samba

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

[ Hits: 2.809 ]

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

ajuste horário

Script de backup para fita DAT

Autenticação automática no Speedy Home

estrutura para menu

rc.firebird - corrigido


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts