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.449 ]

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

Interface gráfica para nível de tinta (escputil) em shell script

Backup mysqldump usando Shell Script

Backup dos arquivos e diretórios de um servidor com XMAIL e Iptables para um servidor central de Bac

Ip dinâmico

Baixando, listando e limpando os pacotes órfãos


  

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