configurar do samba e pureftpd

Publicado por Robert Willian 15/10/2005

[ Hits: 7.888 ]

Download scriptconf_v38.sh




configura o samba como PDC ou nao da rede com varias opções de gerenciamento, para pure gerencia usuarios e o serviço...
obs: meu primeiro script publicado ..... :-)

  



Esconder código-fonte

#!/bin/bash
# Script escrito por Robert Willian Gil
#
#   Para uso com PureFtpd compilar o pacotes com a opcao
#   --with-everything , e ao executar pela primeira vez
#   o scritp comecar com a opcao 3 depois a opcao 2 e
#   por ultimo a opcao 1 para iniciar o servico.
#   Para iniciar o servico junto com o sistema na
#   inicializacao, gerar o rc.pureftpd usando a opcao
#   numero 8 no menu do pureftpd e que vai gerar
#   o arquivo /etc/rc.d/rc.pureftpd e inserir uma entrada
#   no rc.local para executar o mesmo.
#   editar o arquivo gerado e fazer algumas configuracoes
#   necessarias.
#   EX:
#   no arquivo rc.local:
#
#      /etc/rc.d/rc.pureftpd      #isso o fara executar no inicializacao
#
#      Padrao:      /etc/rc.d/rc.pureftpd

#         Para configurar as estacoes seguir procedimentos 
#         descritos em tutos espalhados ne net.
menuprogramas () {
clear
echo "                       ### Menu Principal ###"
echo "         Opcoes de programas a configurar usando este script. "
echo
echo "         1. Samba"
echo "         2. PureFTP"
echo "         3. Acertar Horas e Data"
echo "         4. Sair do script"
echo
echo -n "      Escolha a Opcao.  =>  "
read programa
case "$programa" in
    1 ) esambamenu ;;
    2 ) epureftpmenu ;;
    3 ) fdata ;;
    4 ) clear && exit ;;
    * ) clear ; echo ; echo ; echo ; echo ; echo "          [ "$programa" ] opssao invalida! Entre com uma opcao valida!" ; sleep 3 && echo "" ; echo ""  && clear && menuprogramas
esac
}
fdata () {
   read -n 2 -p "      HH:MM  => " hrs
   read -n 2 -p ":" min
   echo
   read -n 2 -p "      DD/MM/AAAA  =>  " dia
   read -n 2 -p "/" mes
   read -n 4 -p "/" ano
   echo
   echo -n "      "
   date $mes$dia$hrs$min$ano
   clock -w
}
#########    Aqui comeca o script do samba   #########

esambamenu () {
esamba () {
echo "                       ### Menu Principal Samba ###"
echo
echo "           1. Gerar smb.conf em /etc/samba/"
echo "           2. Adicionar Compartilhamentos."
echo "           3. Adicionar Maquinas."
echo "           4. Adicionar Usuarios."  
echo "           5. Adicionar Usuario root no samba."
echo "           6. Excluir Maquinas."
echo "           7. Excluir Usuarios."
echo "           8. Reiniciar o servico."
echo "           9. Sair do script"
echo "           10. Voltar ao Menu Programas"
echo 
echo -n "      Escolha a Opcao.  =>  "
read opssao
case "$opssao" in
    1 ) mkdirsamba ;;
    2 ) settingsshare ;;
    3 ) addmaquinas ;;
    4 ) addusers ;;
    5 ) smbpasswd -a root && sleep 1 &&  echo "Usuario root Criado" ;;
    6 ) removemaquinas ;;
    7 ) removeusers ;;
    8 ) killsmb ;;
    9 ) clear && exit ;;
    10 ) clear && menuprogramas ;;
    * ) clear ; echo ; echo ; echo ; echo ; echo "          [ "$opssao" ] opssao invalida! Entre com uma opcao valida!" ; sleep 2 && echo "" ; echo ""  && clear && esamba
esac
}
killsmb () {
   echo "         Finalizando o Samba"
   killall smbd
   killall nmbd
   sleep 1
   echo "         Iniciando o Samba"
   smbd && nmbd
   sleep 1
   echo "         Servico Iniciado!"
}
mkdirsamba (){
   if [ -e /etc/samba ]
   then
   echo "      O arquivo /etc/samba/smb.conf e /etc/samba/smbpasswd"
   echo "      ja existem! Com a nova geracao os arquivos existentes serao "
   echo -n "      APAGADOS ! Deseja continuar ? Yes/No Enter = Yes  = "
   read jaexistecheck
   if [ -z "$jaexistecheck" ] ; then
      jaexiste="Yes"
   else
      jaexiste="$jaexistecheck"
   fi     
   case "$jaexiste" in
    Yes ) settings ;;
    No  ) exit ;;
    * ) clear ; echo ; echo ; echo ; echo ; echo "          [ "$jaexiste" ] opssao invalida! Entre com uma opcao valida!  Yes/No " ; sleep 3 && echo "" ; echo ""  && clear && mkdirsamba
esac
   else
   echo "      A pasta /etc/samba nao exite" && echo "      Criando a pasta /etc/samba" && sleep 2 && mkdir /etc/samba && echo "      Pasta Criada!" && settings
   fi }
gerasamba () {
echo "[global]
        Workgroup   = "$dominio"
        server string = "$nameofserver"
        hosts allow  = "$ips"
        security = "$nivelseg"
        log file = /var/log/samba/log.%m
        max log size = 100
        logon script = %U.bat
        domain logons = "$logonserver"
        os level = 100
        encrypt passwords = Yes
        smb passwd file = /etc/samba/smbpasswd
        preferred master = "$logonserver"
        domain master = "$logonserver"
        local master = "$logonserver"
        netbios name = "$nameofserver"
   printcap name = "$simp1"
   load printers = "$simp2"
   printing = bsd
   
[netlogon]   

        comment = Network Logon Service
        path = /home/netlogon 
        guest ok = Yes
        share modes = No


[profiles]
        comment = Linux PDC
        path = /home/profiles/%U
        read only = No
        create mask = 0700
        profile acls = Yes
        browseable = No
        guest ok = Yes
        locking = No" > /etc/samba/smb.conf && echo "      Gerando smb.conf" && sleep 1 && touch /etc/samba/smbpasswd

   if [ $simp3 = "sim" ] ; then
echo "[printers]
     comment = All Printers
     browseable = no
     guest ok = yes
     public = yes
     printable = yes" >> /etc/samba/smb.conf && echo "      Pronto." && pergunta1
   else
      echo "       Pronto." && pergunta1
   fi      
}
settings (){
echo
echo -n "      Nome do Dominio ou Grupo ?   Enter = Gerencial    =  "
read dominiocheck
if [ -z "$dominiocheck" ] ; then
         dominio="Gerencial"
 else
         dominio="$dominiocheck"
fi
echo -n "      Faixa de IP? Enter = 192.168.200.    =  "
read ipscheck
if [ -z "$ipscheck" ] ;then
   ips="192.168.200."
else
   ips="$ipscheck"
fi
echo -n "      Nome do Servidor?  Enter = SrvLinux     =  "
read nameofservercheck
if [ -z "$nameofservercheck" ] ;then
   nameofserver="SrvLinux"
else
   nameofserver="$nameofservercheck"
fi
echo -n "      Servidor de logon/Dominio ?  Yes / No    Enter = No   =  " 
read logonservercheck
if [ -z "$logonservercheck" ] ; then
   logonserver="No"
else
   logonserver="$logonservercheck"
fi

servimp () {
echo -n "      Path do arquivo printcap.  Enter = /etc/printcap  =  "
read pathprint
if [ -z $pathprint ] ; then
   printcap="/etc/printcap"
else
   printcap="$pathprint"
fi
   simp1="$printcap"
   simp2="Yes"
}   

echo -n "      Servidor de impressao? Yes / No    Enter = Yes  =  "
read checksimp
if [ -z $checksimp ] ; then
   simp3="sim"
   servimp
else
   if [ $checksimp = "Yes" ] ; then
      simp3="sim"
      servimp
   else
      simp1="Not Configured"
      simp2="No"
      simp3="nao"
   fi
fi
echo    "        Nivel de segunç"
echo "         share = Segurança nivel de compartilhamento."
echo "         user = Segurança nivel de servidor, apenas acessarao"
echo "         usuarios autenticados no dominio ou com login e senha."
echo "         Nivel de segurançescolhido?                =  "
echo -n "      user / share?      Enter = share              =  "
read nivelsegcheck
if [ -z "$nivelsegcheck" ] ; then
   nivelseg="share"
else
   nivelseg="$nivelsegcheck"
fi
gerasamba 
}
addshare () {
echo "
["$nameshare"]
        public = yes
        comment = "$comment"
        path = "$patharq"
        create mask = 0777
        writable = "$writable"
        browseable = yes
        guest ok = "$guestok" " >> /etc/samba/smb.conf && echo "         Criando Compartilhamento." && sleep 1 && echo "         Pronto." && pdesliga

}
settingsshare () {
echo -n "         Nome do Compartilhamento?  Enter = Soft   =  "
read namesharecheck
if [ -z "$namesharecheck" ] ; then
   nameshare="Soft"
else
   nameshare="$namesharecheck"
fi
echo  "         Comentario para a pasta. "
echo -n "         Enter = Pasta "$nameshare"   =  "
read commentcheck
if [ -z "$commentcheck" ] ; then
   comment="Pasta $nameshare"
else
   comment="$commentcheck"
fi
echo  "         Path do compartilhamento? "
echo -n "         Enter = /soft             =  "
read patharqcheck
if [ -z "$patharqcheck" ] ; then
   if [ -e /soft ] ; then
      patharq="/soft"
echo "        Nao serao trocadas as permissoes das subpastas, cabendo"
echo "        ao administrador setar permissoes nas devidas pastas."
echo "        Enter para continuar"
read nulo   
      else
      echo "          A pasta /soft nao existe, criando-a"
      mkdir /soft
      chmod 777 /soft -R
      sleep 1 && echo "         Pasta Criada!"
      patharq="/soft"
   fi
else
   if [ -e "$patharqcheck" ] ; then
      patharq="$patharqcheck"
   else
      echo "          A pasta "$patharqcheck" nao existe, criando-a"
      mkdir -p "$patharqcheck"
      chmod 777 $patharqcheck -R
      sleep 1 && echo "          Pasta Criada!"
      patharq="$patharqcheck"
   fi
fi
   
   
echo "         Permitir escrita?  yes/no  "
echo -n "         Enter = yes                =  "
read writablecheck
if [ -z "$writablecheck" ] ; then
   writable="yes"
else
   writable="$writablecheck"
fi
echo "         Permitir guest?  yes/no  "
echo -n "         Enter = yes               =  "
read guestokcheck
if [ -z "$guestokcheck" ] ; then
   guestok="yes"
else
   guestok="$guestokcheck"
fi
addshare
}
pdesliga () {
   echo "         E necessario reiniciar o servico para que as alteracoes"
   echo "         surtam efeito,"
        echo -n "         Deseja reiniciar o samba agora? yes/no    Enter  =  y   =  "
   read pdescheck
   if [ -z "$pdescheck" ] ; then
      pdes="yes"
        else
      pdes="$pdescheck"
        fi
case $pdes in 
   yes ) killsmb ;;
   no ) exit ;;
   * ) echo "       Escolha uma opcao valida" ; sleep 1 && pdesliga
esac
}   
   
pergunta1 () {
echo -n "      Deseja criar compartilhamentos? yes/no   Enter = Yes   =  "
read yesnocheck
if [ -z "$yesnocheck" ] ; then
   yesno="yes"
else
   yesno="$yesnocheck"
fi
case "$yesno" in
 yes ) settingsshare ;;
 no ) pdesliga ;;
 * ) echo "      Digite 'yes' ou 'no'" && sleep 1 && pergunta1
esac
}
addmaquinas () {
echo -n "      Nome da maquina?  =  "
read nomemaquina
useradd -d /dev/null -s /dev/null -m $nomemaquina$
echo -n "      "
smbpasswd -am $nomemaquina$
sleep 1 &&
echo "      Maquina $nomemaquina Criada!"
}
removemaquinas () {
echo -n "      Nome da maquina p/ excluir?  =  "
read nomeexcluir
echo -n "      "
smbpasswd -x $nomeexcluir$
userdel $nomeexcluir$
sleep 1 &&
echo "      Maquina $nomeexcluir excluida!"
}
removeusers () {
echo -n "      Nome do Usuario p/ excluir?  =  "
read nomeexcluiru
echo "             Escolha:                Opcao:"  
echo "      Excluir Apenas do samba.         1"
echo "      Excluir do samba e do linux.     2"
echo -n "      Opcao desejada.  Enter = 2    =  "
read opppcheck
if [ -z $opppcheck ] ; then
   oppp=2
else
   oppp=$opppcheck
fi
if [ $oppp = 1 ] ; then
   echo -n "      "
        smbpasswd -x $nomeexcluiru
else
   echo -n "      "
        smbpasswd -x $nomeexcluiru
   userdel $nomeexcluiru
fi
}


addusers () {
echo -n "      Nome do usuario a adicionar.  =  "
read nomeadd
adduser $nomeadd
smbpasswd -a $nomeadd
}
clear
esamba
}

####### Aqui termina o script do samba   ########

###### Aqui comeca o script do pureftp  ######
epureftpmenu () {
menupure () {
clear
echo "       ###  Menu Principal Pureftp  ### "
echo 
echo "    1. Iniciar o servico."
echo "    2. Adicionar Usuarios."
echo "    3. Adicionar usuarios e grupos padroes."
echo "    4. Deletar Usuario."
echo "    5. Mudar senha de usuarios."
echo "    6. Informacoes sobre usuarios."
echo "    7. Consulta usuarios cadastrados."
echo "    8. Gerar rc.pureftpd"
echo "    9. Sair do Script."
echo "    10. Voltar ao menu programas"
echo
echo -n "      Escolha a opcao  =>  "
read eopssao 
case "$eopssao" in
    1 ) opssoesini ;;
    2 ) checkpdb ;;
    3 ) addpadroes ;;
    4 ) delusuarios ;;
    5 ) changesenha ;;
    6 ) showusuario ;;
    7 ) echo "Usuario: ## Path Home:" ; pure-pw list | more ;;
    8 ) geraini ;;
    9 ) clear && exit ;;
    10 ) clear && menuprogramas ;;
    * ) clear ; echo ; echo ; echo ; echo ; echo "          [ "$eopssao" ] opssao invalida! Entre com uma opcao valida!" ; sleep 3 && echo "" ; echo ""  && clear && menupure
esac
}
addpadroes () {
userdel ftpuser
groupdel ftpgroup
groupadd ftpgroup
useradd -g ftpgroup -d /dev/null -s /etc ftpuser
echo "Digite a Senha do usuario= normal ,senha obrigató."
pure-pw useradd normal -u ftpuser -d /dev/null
echo "Usuario normal adicionado" && sleep 1 && echo "Grupo ftpgroup e Usuario ftpuser ja existentes!" && sleep 3 && menupure
}
opssoesini () {
echo "      Permitir loggin anonimo? "
echo -n "      Y/n  Enter = n             =  "
read logginanonimocheck
if [ -z "$logginanonimocheck" ] ; then
   logginanonimo="n"
else
   logginanonimo="$logginanonimocheck"
fi
if [ "$logginanonimo" = Y ] ; then
   anonimo=
   echo "       Permitindo login anonymous"
   sleep 1
else
   anonimo="--noanonymous"
   echo "      Proibindo login anonymous"
   sleep 1
fi
echo -n "      Limite maximo de usuarios conectados.  Enter = 15   =>  " 
read maxcheck
if [ -z "$maxcheck" ]; then
   maximousuarios=15
   echo "      Permitindo "$maximousuarios" usuario conectados simultaneamente"
        sleep 1
else
   maximousuarios="$maxcheck"
   echo "      Permitindo "$maxcheck" usuarios conectados simultaneamente"
   sleep 1
fi
pure-ftpd --daemonize 
killall pure-ftpd && pure-ftpd --daemonize "$anonimo" -c "$maximousuarios" -lpuredb:/etc/pureftpd.pdb
echo "      ServiçIniciado com sucesso!" && sleep 3 && menupure
}
addusuarios () {
echo -n "      Nome do usuario  =>  "
read nomeuser
echo -n "      Path da pasta base do usuario. Enter = /soft/ftp  =>  "
read pathhomecheck
if [ -z "$pathhomecheck" ] ; then
   pathhome="/soft/ftp"
   if [ ! -e "$pathhome" ] ; then
      mkdir -p "$pathhome"
      echo "      Pasta "$pathhome" nao existe, criando-a"
      sleep 1 && echo "      Home criado!"
      chmod 777 "$pathhome" -R
   else
      chmod 777 "$pathhome" -R
   fi
else
   pathhome="$pathhomecheck"
   if [ ! -e "$pathhomecheck" ] ; then
      mkdir -p "$pathhomecheck"
      echo "      Pasta "$pathhomecheck" nao existe, criando-a"
      sleep 1 && echo "      Home criado!"
      chmod 777 "$pathhomecheck" -R
        else
      chmod 777 "$pathhomecheck" -R
   fi
fi
echo -n "      Quota de espaco no HD? Enter = Ilimitado  =>  "
read quotambcheck
if [ -z "$quotambcheck" ] ; then
   quotamb=
else
   quotamb="-N $quotambcheck"
fi
pure-pw useradd $nomeuser -u ftpuser -d $pathhome $quotamb -m
pure-pw show $nomeuser
}
checkpdb () {
if [ -e /etc/pureftpd.pdb ] ; then
      addusuarios
else
     if [ -e /etc/pureftpd.passwd ] ; then
        echo "      Criando banco de dados de usuarios" && sleep 2 &&  pure-pw mkdb && echo "      Banco Criado!" && sleep 2 &&  addusuarios
     else
        echo "      Ã‰necessario criar usuario e grupos padroes"
        sleep 2
        echo "      No menu principal selecione a opcao 3" 
        sleep 3 && menupure
     fi
fi     
}
delusuarios () {
echo -n "      Nome do usuario a deletar?  =>  "
read morre
pure-pw userdel $morre -m
echo "      Usuario Deletado!"
sleep 2 
menupure
}
changesenha () {
echo -n "      Nome do usuario a mudar a senha.  =>  "
read trocasenha
pure-pw passwd $trocasenha -m
echo "        Senha trocada!"
menupure
}
showusuario () {
echo -n "      Nome do usuario?  =>  "
read nomeshow
pure-pw show $nomeshow
}
clear
menupure
}

function geraini {
echo "#!/bin/bash
#Permitir Login anonimo?  Y / N .  
logginanonimo=Y

#Numero maximo de usuario conectados simultaneamente.
maximousuarios=15

# Nao mexa daqui para baixo !
if [ \"$logginanonimo\" = Y ] ; then
   anonimo=\"\"
else
   anonimo=\"--noanonymous\"
fi
/usr/local/sbin/pure-ftpd --daemonize \"$anonimo\" -c \"$maximousuarios\" -lpuredb:/etc/pureftpd.pdb " > /etc/rc.d/rc.pureftpd
chmod 777 /etc/rc.d/rc.pureftpd
clear
echo "Arquivo gerado com exito em /etc/rc.d/rc.pureftpd" && sleep 2 && menupure
}

### Aqui termina o script do pureftp ###
menuprogramas   # chama o menu principal

Scripts recomendados

Instalação da Multilib no Slackware

Backup LDAP

Visual para tcpdump com dialog

Configuração do Mysql no Suse, quando ocorre o seguinte erro: "ERROR 2002: Can't connect to local My

Correção do arquivo status


  

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