Script Shell para Administração e Configuração do Samba em Red-Hat / Fedora

Publicado por Ricardo Gellman (última atualização em 05/07/2011)

[ Hits: 5.195 ]

Download samba_adm.ksh




Com o código abaixo irei, a partir de um menu básico case/shell, fornecer ao usuário as opções básicas de administração do samba para Linux RH, como criar usuários, compartilhamentos, grupos, etc. Lembre-se de liberar as portas do samba no iptables, e manter o smb.conf com o cabeçalho básico que forneço logo acima do script.

$DIRFILES é onde será a raiz das pastas compartilhadas

NOTA: Samba deve conter as seguintes linhas para correto funcionamento:

[global]

        workgroup = mygroup
        server string = Samba Server Version %v

        log file = /var/log/samba/log.%m
        max log size = 50

        security = user
        cups options = raw

  



Esconder código-fonte

#############################################
# Script para Adminstração do Samba do Fedora
# Ricardo Gellman 06/2011
# WWW.ALEMCORP.COM
#############################################
#!/bin/ksh

if [ "`whoami`" != "root" ];then
   echo "Script deve ser executado com usuario root"
   echo
   exit 0
fi   

while [ 1 ]
do
clear
echo '*****************************'
echo '1 - Criar Compartilhamento'
echo '2 - Criar usuario'
echo '3 - Apagar usuario'
echo '4 - Adcionar usuario ao Compartilhamento'
echo '5 - Remover usuario de um Grupo Compartilhado'
echo '*****************************'

read a
   case $a in
   1)
   
   DIRFILES=/Arquivos
   
   echo "Digite o Nome da pasta a ser Compartilhada..."
   read folder
   if cat /etc/samba/smb.conf | grep -i "\[$folder\]" >/dev/null;then
      echo "Compartilhamento Ja existe..."
      echo
      sleep 3
   else
      mkdir $DIRFILES/$folder >/dev/null
      chmod 770 $DIRFILES/$folder >/dev/null
      groupadd $folder >/dev/null 
      chown root:$folder $DIRFILES/$folder 
      chmod 770 $DIRFILES/*
         echo '-------------------------------'
         echo "Pasta criada - $DIRFILES/$folder"
         echo "Grupo de acesso - $folder"
         echo '-------------------------------'
         echo
         echo "Digite o Usuario que ira ter Acesso a pasta"
         read user
         CHKUSER=`id $user`
         if [ "$CHKUSER" != "" ];then
            echo "Usuario $user ja existe..."
            usermod -a -G $folder $user >/dev/null
            echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $folder ]"
            echo '*******************************'
            echo "Deseja Definir uma senha de acesso ao Samba, para o usuario $user (s/n)?"
            read sn
               case $sn in
                  s)
                  echo "Escolha a senha de Acesso ao usuario: $user"
                  smbpasswd -a $user
                  ;;
                  n)
                  ;;
               esac
               echo
               GETSMBIDS=`cat /etc/samba/smbusers | grep $folder 2>/dev/null | grep $user 2>/dev/null`
               echo "$GETSMBIDS" | while read IDS
                  do
                     if [ "$IDS" == "$folder = $user" ];then
                        echo "Entrada < $folder = $user >  existente em: /etc/samba/smbusers"
                        echo
                        sleep 3
                     elif [ "$IDS" == "" ];then
                        echo "Inserindo entrada: $folder = $user no /etc/samba/smbusers"
                        echo "$folder = $user" >> /etc/samba/smbusers
                        echo
                        sleep 3
                     else
                        echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers"
                        echo "$IDS,$user" >> /etc/samba/smbusers
                        echo
                        sleep 3
                     fi
                  done
         else
            useradd -G $folder $user >/dev/null
            echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $folder ]"
            echo '*******************************'
            echo "Escolha a senha de Acesso ao usuario: $user"
            smbpasswd -a $user
            echo
            GETSMBIDS=`cat /etc/samba/smbusers | grep $folder 2>/dev/null | grep $user 2>/dev/null`
            echo "$GETSMBIDS" | while read IDS
               do
                  if [ "$IDS" == "$folder = $user" ];then
                     echo "Entrada < $folder = $user >  existente em: /etc/samba/smbusers"
                     echo
                     sleep 3
                  elif [ "$IDS" == "" ];then
                     echo "Inserindo entrada: $folder = $user no /etc/samba/smbusers"
                     echo "$folder = $user" >> /etc/samba/smbusers
                     echo
                     sleep 3
                  else
                     echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers"
                     echo "$IDS,$user" >> /etc/samba/smbusers
                     echo
                     sleep 3
                  fi
               done
         fi
         sleep 2
         echo "
[$folder]
   path = $DIRFILES/$folder
   writable = yes
   valid users = @$folder

      " >> /etc/samba/smb.conf
      echo "Pasta Criada com sucesso"
      echo '**********************************************************'
      echo "-----------------/etc/samba/smb.conf----------------------"
      tail -6 /etc/samba/smb.conf
      echo "-----------------/etc/samba/smbusers----------------------"
      cat /etc/samba/smbusers | grep $user | grep $folder
      echo '----------------------/etc/passwd-------------------------'
      grep $user /etc/passwd
      echo '----------------------/etc/group--------------------------'
      grep $folder /etc/group
      echo
      sleep 10
   fi
   ;;
   2)
      echo "Digite o Usuario a ser criado"
      read user 
      if id $user >/dev/null 2>&1;then
         echo "Usuario Ja existe"
         echo
         sleep 3
      else
         echo "Digite a Senha do Usuario a ser criado"
         read senha 
         echo "Usuario Sera de uso pessoal[Lucas] ou uso corporativo[Administrativo] - Escolha(p/c) ?"
         read op
            case $op in
            p)
               useradd -N $user -p $senha >/dev/null
               echo "Usuario $user criado com sucesso"
               echo
               sleep 3
            ;;
            c)
               useradd -U -M $user -p $senha >/dev/null
               echo "Usuario $user criado com sucesso"
               echo
               sleep 3
            ;;
            *)
               echo "Opção invalida..."
               echo
               sleep 3
            ;;
         esac
      fi
   ;;
   
   3)
   echo "Digite o Usuario a ser deletado"
   read user 
      userdel -r $user
      echo "Processo de Deleção concluido..."
      echo
      sleep 3
   ;;
   
   4)
   echo "Digite o Usuario a ser Adcionado"
   read user 
   echo "Digite o Grupo que o usuario sera adcionado"
   read grp
   CHKUSER=`id $user 2>/dev/null`
         if [ "$CHKUSER" != "" ];then
            echo "Usuario $user ja existe..."
            usermod -a -G $grp $user >/dev/null
            echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $grp ]"
            echo '*******************************'
            echo "Deseja Definir uma senha de acesso ao Samba, para o usuario $user (s/n)?"
            read sn
               case $sn in
                  s)
                  echo "Escolha a senha de Acesso ao usuario: $user"
                  smbpasswd -a $user
                  ;;
                  n)
                  ;;
               esac
               GETSMBIDS=`cat /etc/samba/smbusers | grep $grp 2>/dev/null | grep $user 2>/dev/null`
                  echo "$GETSMBIDS" | while read IDS
                     do
                        if [ "$IDS" == "$grp = $user" ];then
                           echo "Entrada < $grp = $user >  existente em: /etc/samba/smbusers"
                           echo
                           sleep 3
                        elif [ "$IDS" == "" ];then
                           echo "Inserindo entrada: $grp = $user no /etc/samba/smbusers"
                           echo "$grp = $user" >> /etc/samba/smbusers
                           echo
                           sleep 3
                        else
                           echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers"
                           echo "$IDS,$user" >> /etc/samba/smbusers
                           echo
                           sleep 3
                        fi
                     done
               echo "-----------------/etc/samba/smbusers----------------------"
               cat /etc/samba/smbusers | grep $user | grep $grp
               echo '----------------------/etc/passwd-------------------------'
               grep $user /etc/passwd
               echo '----------------------/etc/group--------------------------'
               grep $grp /etc/group
               echo
               sleep 10
         else
            #useradd -g $grp $user >/dev/null
            useradd -g $grp $user >/dev/null 2>&1
            echo "Usuario [ $user ] adcionado com sucesso ao grupo [ $grp ]"
            echo '*******************************'
            echo "Escolha a senha de Acesso ao usuario: $user"
            smbpasswd -a $user
            echo
            GETSMBIDS=`cat /etc/samba/smbusers | grep $grp 2>/dev/null | grep $user 2>/dev/null`
            echo "$GETSMBIDS" | while read IDS
               do
                  if [ "$IDS" == "$grp = $user" ];then
                     echo "Entrada < $grp = $user >  existente em: /etc/samba/smbusers"
                     echo
                     sleep 3
                  elif [ "$IDS" == "" ];then
                     echo "Inserindo entrada: $grp = $user no /etc/samba/smbusers"
                     echo "$grp = $user" >> /etc/samba/smbusers
                     echo
                     sleep 3
                  else
                     echo "Inserindo entrada $IDS,$user em /etc/samba/smbusers"
                     echo "$IDS,$user" >> /etc/samba/smbusers
                     echo
                     sleep 3
                  fi
               done
               echo "-----------------/etc/samba/smbusers----------------------"
               cat /etc/samba/smbusers | grep $user | grep $grp
               echo '----------------------/etc/passwd-------------------------'
               grep $user /etc/passwd
               echo '----------------------/etc/group--------------------------'
               grep $grp /etc/group
               echo
               sleep 10
         fi
   ;;
   
   5)
   echo "Digite o Usuario a ser Removido do grupo de Compartilhamento"
   read user 
   echo "Usuario pertence aos grupos abaixo:"
   SHAREGRP=`id -nG $user`
      echo "Nota: O usuario nao poderá ser removido de seu grupo primario"
      echo "Selecione o grupo a ser removido"
      read rmgrp
         for grp in $SHAREGRP
         do
            if [ "$grp" != "$rmgrp" ];then
               #Não existe metodo de remocao, logo, irei adcionar todos, exceto o removido
               usermod -G $grp $user
            fi
         done
   echo "Grupos atuais:"
   id -nG $user
   ;;
   esac
done

Scripts recomendados

Reiniciar modem via Shell Script

+squid

Uso de variáveis com a linguagem Ruby

Agenda telefônica

Menu secundário


  

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